diff --git a/packages/commons/dist/component.d.ts b/packages/commons/dist/component.d.ts index def278c1..7b152e33 100644 --- a/packages/commons/dist/component.d.ts +++ b/packages/commons/dist/component.d.ts @@ -1,378 +1,378 @@ -import { z } from "zod"; -export declare const AuthorSchema: z.ZodObject<{ - name: z.ZodString; - url: z.ZodString; -}, "strip", z.ZodTypeAny, { - name?: string; - url?: string; -}, { - name?: string; - url?: string; -}>; -export 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; -}>; -export 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[]; -}>; -export 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; - }[]; -}>; -export 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">>; -export type IComponentConfig = z.infer; -export declare const get: (src: any, root: any, type: any) => { - rel: any; - path: any; - config: any; -}[]; +import { z } from "zod"; +export declare const AuthorSchema: z.ZodObject<{ + name: z.ZodString; + url: z.ZodString; +}, "strip", z.ZodTypeAny, { + name?: string; + url?: string; +}, { + name?: string; + url?: string; +}>; +export 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; +}>; +export 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[]; +}>; +export 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; + }[]; +}>; +export 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">>; +export type IComponentConfig = z.infer; +export declare const get: (src: any, root: any, type: any) => { + rel: any; + path: any; + config: any; +}[]; diff --git a/packages/commons/dist/component.js b/packages/commons/dist/component.js index 39fdf001..c4d7895f 100644 --- a/packages/commons/dist/component.js +++ b/packages/commons/dist/component.js @@ -1,110 +1,110 @@ -import * as path from 'path'; -import { z } from "zod"; -// Author schema -export const AuthorSchema = z.object({ - name: z.string(), - url: z.string(), -}); -// Content schema -export const ContentSchema = z.object({ - body: z.string().optional(), - features: z.string().optional(), - highlights: z.string().optional(), - specs: z.string().optional(), - license: z.string().optional() -}); -// Assets schema -export const AssetsSchema = z.object({ - gallery: z.array(z.string()).optional(), - renderings: z.array(z.string()).optional(), - components: z.array(z.string()).optional() -}); -// Production schema -export const ProductionSchema = z.object({ - "fusion-folder": z.string(), - "nc-folder": z.string(), - cam: z.array(AuthorSchema), -}); -// Component config schema -export const ComponentConfigSchema = z.object({ - // shop - cart_id: z.string().optional(), - code: z.string(), - price: z.number().optional(), - cscartCats: z.array(z.number()).optional(), - cscartId: z.number().optional(), - vendorId: z.number().optional(), - //internal - version: z.string().optional(), - status: z.string().optional(), - authors: z.array(AuthorSchema).optional(), - replaced_by: z.string().optional(), - alternatives: z.array(z.string()).optional(), - flags: z.number().optional(), - // public - download: z.boolean().optional(), - name: z.string(), - edrawings: z.string().optional(), - showDimensions: z.boolean().optional(), - showParts: z.boolean().optional(), - slug: z.string(), - score: z.number().optional(), - Preview3d: z.boolean().optional(), - keywords: z.string().optional(), - meta_keywords: z.string().optional(), - content: ContentSchema.optional(), - assets: AssetsSchema.optional(), - /** - * @deprecated - */ - howto_categories: z.union([z.string(), z.array(z.string())]).optional(), - steps: z.any().optional(), - sourceLanguage: z.string().optional(), - category: z.string(), - product_dimensions: z.string().optional(), - production: ProductionSchema.optional(), -}).passthrough(); -import { isInvalidMarketplaceComponent, isValidLibraryComponent, isValidMarketplaceComponent, PFilterInvalid, PFilterValid } from './filter.js'; -import { forward_slash, pathInfoEx } from './fs/_glob.js'; -import { resolve } from './variables.js'; -import { readOSRConfig } from './config.js'; -const find_items = (nodes, options) => { - nodes = nodes.filter(options.filter); - return nodes.map((c) => { - const root = resolve(options.root, false, {}); - return { - rel: forward_slash(`${path.relative(root, path.parse(c).dir)}`), - path: forward_slash(`${options.root}/${path.relative(root, c)}`), - config: readOSRConfig(c) - }; - }); -}; -export const get = (src, root, type) => { - const srcInfo = pathInfoEx(src, false, { - absolute: true - }); - switch (type) { - case PFilterValid.marketplace_component: { - const options = { - filter: isValidMarketplaceComponent, - root - }; - return find_items(srcInfo.FILES, options); - } - case PFilterValid.library_component: { - const options = { - filter: isValidLibraryComponent, - root - }; - return find_items(srcInfo.FILES, options); - } - case PFilterInvalid.marketplace_component: { - const options = { - filter: isInvalidMarketplaceComponent, - root - }; - return find_items(srcInfo.FILES, options); - } - } -}; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQTtBQUU1QixPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sS0FBSyxDQUFDO0FBRXhCLGdCQUFnQjtBQUNoQixNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUNqQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRTtJQUNoQixHQUFHLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRTtDQUNsQixDQUFDLENBQUM7QUFFSCxpQkFBaUI7QUFDakIsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDbEMsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDM0IsUUFBUSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDL0IsVUFBVSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDakMsS0FBSyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDNUIsT0FBTyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7Q0FDakMsQ0FBQyxDQUFDO0FBRUgsZ0JBQWdCO0FBQ2hCLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQ2pDLE9BQU8sRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRTtJQUN2QyxVQUFVLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUU7SUFDMUMsVUFBVSxFQUFF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 \ No newline at end of file +import * as path from 'path'; +import { z } from "zod"; +// Author schema +export const AuthorSchema = z.object({ + name: z.string(), + url: z.string(), +}); +// Content schema +export const ContentSchema = z.object({ + body: z.string().optional(), + features: z.string().optional(), + highlights: z.string().optional(), + specs: z.string().optional(), + license: z.string().optional() +}); +// Assets schema +export const AssetsSchema = z.object({ + gallery: z.array(z.string()).optional(), + renderings: z.array(z.string()).optional(), + components: z.array(z.string()).optional() +}); +// Production schema +export const ProductionSchema = z.object({ + "fusion-folder": z.string(), + "nc-folder": z.string(), + cam: z.array(AuthorSchema), +}); +// Component config schema +export const ComponentConfigSchema = z.object({ + // shop + cart_id: z.string().optional(), + code: z.string(), + price: z.number().optional(), + cscartCats: z.array(z.number()).optional(), + cscartId: z.number().optional(), + vendorId: z.number().optional(), + //internal + version: z.string().optional(), + status: z.string().optional(), + authors: z.array(AuthorSchema).optional(), + replaced_by: z.string().optional(), + alternatives: z.array(z.string()).optional(), + flags: z.number().optional(), + // public + download: z.boolean().optional(), + name: z.string(), + edrawings: z.string().optional(), + showDimensions: z.boolean().optional(), + showParts: z.boolean().optional(), + slug: z.string(), + score: z.number().optional(), + Preview3d: z.boolean().optional(), + keywords: z.string().optional(), + meta_keywords: z.string().optional(), + content: ContentSchema.optional(), + assets: AssetsSchema.optional(), + /** + * @deprecated + */ + howto_categories: z.union([z.string(), z.array(z.string())]).optional(), + steps: z.any().optional(), + sourceLanguage: z.string().optional(), + category: z.string(), + product_dimensions: z.string().optional(), + production: ProductionSchema.optional(), +}).passthrough(); +import { isInvalidMarketplaceComponent, isValidLibraryComponent, isValidMarketplaceComponent, PFilterInvalid, PFilterValid } from './filter.js'; +import { forward_slash, pathInfoEx } from './fs/_glob.js'; +import { resolve } from './variables.js'; +import { readOSRConfig } from './config.js'; +const find_items = (nodes, options) => { + nodes = nodes.filter(options.filter); + return nodes.map((c) => { + const root = resolve(options.root, false, {}); + return { + rel: forward_slash(`${path.relative(root, path.parse(c).dir)}`), + path: forward_slash(`${options.root}/${path.relative(root, c)}`), + config: readOSRConfig(c) + }; + }); +}; +export const get = (src, root, type) => { + const srcInfo = pathInfoEx(src, false, { + absolute: true + }); + switch (type) { + case PFilterValid.marketplace_component: { + const options = { + filter: isValidMarketplaceComponent, + root + }; + return find_items(srcInfo.FILES, options); + } + case PFilterValid.library_component: { + const options = { + filter: isValidLibraryComponent, + root + }; + return find_items(srcInfo.FILES, options); + } + case PFilterInvalid.marketplace_component: { + const options = { + filter: isInvalidMarketplaceComponent, + root + }; + return find_items(srcInfo.FILES, options); + } + } +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQTtBQUU1QixPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sS0FBSyxDQUFDO0FBRXhCLGdCQUFnQjtBQUNoQixNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUNqQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRTtJQUNoQixHQUFHLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRTtDQUNsQixDQUFDLENBQUM7QUFFSCxpQkFBaUI7QUFDakIsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDbEMsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDM0IsUUFBUSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDL0IsVUFBVSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDakMsS0FBSyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDNUIsT0FBTyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7Q0FDakMsQ0FBQyxDQUFDO0FBRUgsZ0JBQWdCO0FBQ2hCLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQ2pDLE9BQU8sRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRTtJQUN2QyxVQUFVLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUU7SUFDMUMsVUFBVSxFQUFF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 \ No newline at end of file diff --git a/packages/commons/dist/component.js.map b/packages/commons/dist/component.js.map index 88602de1..15403a6b 100644 --- a/packages/commons/dist/component.js.map +++ b/packages/commons/dist/component.js.map @@ -1 +1 @@ -{"version":3,"file":"component.js","sourceRoot":"","sources":["../src/component.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"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/config.d.ts b/packages/commons/dist/config.d.ts index b1a6f25c..60d6d0b3 100644 --- a/packages/commons/dist/config.d.ts +++ b/packages/commons/dist/config.d.ts @@ -1,138 +1,42 @@ -export declare const HOME: (sub?: string) => string; -export declare const get_var: (key?: string) => string; -export declare const OSR_ROOT: (key?: string) => string; -export declare const OSR_SUB_DEFAULT: (key?: string) => string; -export declare const CONFIG_DEFAULT_PATH: (key?: string) => string; -export declare const OSR_TEMP: (key?: string) => string; -export declare const OSR_CACHE: (key?: string) => string; -export declare const OSR_PRIVATE: (key?: string) => string; -export declare const KB_ROOT: (key?: string) => string; -export declare const OSR_LIBRARY: (key?: string) => string; -export declare const OSR_LIBRARY_MACHINES: (key?: string) => string; -export declare const OSR_LIBRARY_DIRECTORY: (key?: string) => string; -export declare const PRODUCT_ROOT: (key?: string) => string; -export declare const OSR_CUSTOMER_DRIVE: (key?: string) => string; -export declare const OA_ROOT: (key?: string) => string; -export declare const OSR_USER_ASSETS: (key?: string) => string; -export declare const POLYMECH_ROOT: (key?: string) => string; -export 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; -}; -export declare const CONFIG_DEFAULT: (key?: string) => string | false | object; -import { JSONSchemaForNPMPackageJsonFiles } from '@schemastore/package'; -export declare const readNPMMeta: (_path: string) => JSONSchemaForNPMPackageJsonFiles; -export declare const readPackage: (val: any) => JSONSchemaForNPMPackageJsonFiles; -export declare const readOSRMeta: (_path: string) => import("zod").objectOutputType<{ - cart_id: import("zod").ZodOptional; - code: import("zod").ZodString; - price: import("zod").ZodOptional; - cscartCats: import("zod").ZodOptional>; - cscartId: import("zod").ZodOptional; - vendorId: import("zod").ZodOptional; - version: import("zod").ZodOptional; - status: import("zod").ZodOptional; - authors: import("zod").ZodOptional, "many">>; - replaced_by: import("zod").ZodOptional; - alternatives: import("zod").ZodOptional>; - flags: import("zod").ZodOptional; - download: import("zod").ZodOptional; - name: import("zod").ZodString; - edrawings: import("zod").ZodOptional; - showDimensions: import("zod").ZodOptional; - showParts: import("zod").ZodOptional; - slug: import("zod").ZodString; - score: import("zod").ZodOptional; - Preview3d: import("zod").ZodOptional; - keywords: import("zod").ZodOptional; - meta_keywords: import("zod").ZodOptional; - content: import("zod").ZodOptional; - features: import("zod").ZodOptional; - highlights: import("zod").ZodOptional; - specs: import("zod").ZodOptional; - license: import("zod").ZodOptional; - }, "strip", import("zod").ZodTypeAny, { - body?: string; - features?: string; - highlights?: string; - specs?: string; - license?: string; - }, { - body?: string; - features?: string; - highlights?: string; - specs?: string; - license?: string; - }>>; - assets: import("zod").ZodOptional>; - renderings: import("zod").ZodOptional>; - components: import("zod").ZodOptional>; - }, "strip", import("zod").ZodTypeAny, { - gallery?: string[]; - renderings?: string[]; - components?: string[]; - }, { - gallery?: string[]; - renderings?: string[]; - components?: string[]; - }>>; - howto_categories: import("zod").ZodOptional]>>; - steps: import("zod").ZodOptional; - sourceLanguage: import("zod").ZodOptional; - category: import("zod").ZodString; - product_dimensions: import("zod").ZodOptional; - production: import("zod").ZodOptional, "many">; - }, "strip", import("zod").ZodTypeAny, { - "fusion-folder"?: string; - "nc-folder"?: string; - cam?: { - name?: string; - url?: string; - }[]; - }, { - "fusion-folder"?: string; - "nc-folder"?: string; - cam?: { - name?: string; - url?: string; - }[]; - }>>; -}, import("zod").ZodTypeAny, "passthrough">; -export declare const readOSRConfig: (val: any) => any; +export declare const HOME: (sub?: string) => string; +export declare const get_var: (key?: string) => string; +export declare const OSR_ROOT: (key?: string) => string; +export declare const OSR_SUB_DEFAULT: (key?: string) => string; +export declare const CONFIG_DEFAULT_PATH: (key?: string) => string; +export declare const OSR_TEMP: (key?: string) => string; +export declare const OSR_CACHE: (key?: string) => string; +export declare const OSR_PRIVATE: (key?: string) => string; +export declare const KB_ROOT: (key?: string) => string; +export declare const OSR_LIBRARY: (key?: string) => string; +export declare const OSR_LIBRARY_MACHINES: (key?: string) => string; +export declare const OSR_LIBRARY_DIRECTORY: (key?: string) => string; +export declare const PRODUCT_ROOT: (key?: string) => string; +export declare const OSR_CUSTOMER_DRIVE: (key?: string) => string; +export declare const OA_ROOT: (key?: string) => string; +export declare const OSR_USER_ASSETS: (key?: string) => string; +export declare const POLYMECH_ROOT: (key?: string) => string; +export 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; +}; +export declare const CONFIG_DEFAULT: (key?: string) => string | false | object; +import { JSONSchemaForNPMPackageJsonFiles } from '@schemastore/package'; +import { IComponentConfig } from './component.js'; +export declare const readNPMMeta: (_path: string) => JSONSchemaForNPMPackageJsonFiles; +export declare const readPackage: (val: any) => JSONSchemaForNPMPackageJsonFiles; +export declare const readOSRMeta: (_path: string) => IComponentConfig; +export declare const readOSRConfig: (val: any) => any; diff --git a/packages/commons/dist/config.js b/packages/commons/dist/config.js index 2a229f86..b4d5c1e7 100644 --- a/packages/commons/dist/config.js +++ b/packages/commons/dist/config.js @@ -1,76 +1,76 @@ -import * as path from 'path'; -import pkg from 'env-var'; -const { get } = pkg; -import { sync as read } from '@polymech/fs/read'; -import { sync as exists } from '@polymech/fs/exists'; -import { isString, isObject } from '@polymech/core/primitives'; -import { API_PREFIX, API_PREFIX_NEXT } from './constants.js'; -export const HOME = (sub = '') => path.join(process.env[(process.platform == 'win32') ? 'USERPROFILE' : 'HOME'], sub); -export const get_var = (key = '') => get(key).asString() || get(key.replace(/-/g, '_')).asString() || get(key.replace(/_/g, '-')).asString(); -export const OSR_ROOT = (key = 'OSR-ROOT') => get_var(key) || path.join(HOME('desktop'), API_PREFIX); -export const OSR_SUB_DEFAULT = (key = '') => get_var(key) || path.join(OSR_ROOT(), key); -export const CONFIG_DEFAULT_PATH = (key = 'OSR-CONFIG') => get_var(key) || path.join(HOME(`${API_PREFIX}`), '.config.json'); -export const OSR_TEMP = (key = 'OSR-TEMP') => get_var(key) || OSR_SUB_DEFAULT(`.${API_PREFIX}/temp`); -export const OSR_CACHE = (key = 'OSR-CACHE') => get_var(key) || OSR_SUB_DEFAULT(`.${API_PREFIX}/cache`); -export const OSR_PRIVATE = (key = 'OSR-PRIVATE') => get_var(key); -export const KB_ROOT = (key = 'OSR-KB') => get_var(key); -export const OSR_LIBRARY = (key = 'OSR-LIBRARY') => get_var(key); -export const OSR_LIBRARY_MACHINES = (key = 'OSR-LIBRARY-MACHINES') => get_var(key); -export const OSR_LIBRARY_DIRECTORY = (key = 'OSR-LIBRARY-DIRECTORY') => get_var(key); -export const PRODUCT_ROOT = (key = 'PRODUCT-ROOT') => get_var(key); -export const OSR_CUSTOMER_DRIVE = (key = 'OSR-CUSTOMER-DRIVE') => get_var(key); -export const OA_ROOT = (key = 'OA-ROOT') => get_var(key); -export const OSR_USER_ASSETS = (key = 'OSR-USER-ASSETS') => get_var(key); -export const POLYMECH_ROOT = (key = 'POLYMECH-ROOT') => get_var(key) || path.join(HOME('desktop'), API_PREFIX_NEXT); -export 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() -}; -export const CONFIG_DEFAULT = (key = 'OSR-CONFIG') => { - const cPath = path.resolve(CONFIG_DEFAULT_PATH(key)); - if (exists(cPath)) { - return read(cPath, 'json'); - } - return false; -}; -////////////////////////////////////////////////////// -// -// NPM related -export const readNPMMeta = (_path) => read(_path, 'json') || {}; -export const readPackage = (val) => { - if (isString(val)) { - return readNPMMeta(val); - } - else if (isObject(val)) { - return val; - } - return {}; -}; -////////////////////////////////////////////////////// -// -// OSR related -export const readOSRMeta = (_path) => read(_path, 'json'); -export const readOSRConfig = (val) => { - if (isString(val)) { - return readOSRMeta(val); - } - else if (isObject(val)) { - return val; - } - return null; -}; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQTtBQUM1QixPQUFPLEdBQUcsTUFBTSxTQUFTLENBQUM7QUFDMUIsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEdBQUcsQ0FBQztBQUVwQixPQUFPLEVBQUUsSUFBSSxJQUFJLElBQUksRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQ2hELE9BQU8sRUFBRSxJQUFJLElBQUksTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDcEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQTtBQUM5RCxPQUFPLEVBQUUsVUFBVSxFQUFpQixlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUUzRSxNQUFNLENBQUMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxHQUFHLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFBO0FBQ3JILE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxDQUFDLE1BQWMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUE7QUFFcEosTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLENBQUMsTUFBYyxVQUFVLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQTtBQUM1RyxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsQ0FBQyxNQUFjLEVBQUUsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUE7QUFDL0YsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxNQUFjLFlBQVksRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsVUFBVSxFQUFFLENBQUMsRUFBRSxjQUFjLENBQUMsQ0FBQTtBQUVuSSxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsQ0FBQyxNQUFjLFVBQVUsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLGVBQWUsQ0FBQyxJQUFJLFVBQVUsT0FBTyxDQUFDLENBQUE7QUFDNUcsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLENBQUMsTUFBYyxXQUFXLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxlQUFlLENBQUMsSUFBSSxVQUFVLFFBQVEsQ0FBQyxDQUFBO0FBRS9HLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxDQUFDLE1BQWMsYUFBYSxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUE7QUFDeEUsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLENBQUMsTUFBYyxRQUFRLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQTtBQUMvRCxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxNQUFjLGFBQWEsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0FBQ3hFLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLENBQUMsTUFBYyxzQkFBc0IsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0FBQzFGLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLENBQUMsTUFBYyx1QkFBdUIsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0FBRTVGLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxDQUFDLE1BQWMsY0FBYyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUE7QUFDMUUsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxNQUFjLG9CQUFvQixFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUE7QUFFdEYsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLENBQUMsTUFBYyxTQUFTLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQTtBQUNoRSxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsQ0FBQyxNQUFjLGlCQUFpQixFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUE7QUFFaEYsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLENBQUMsTUFBYyxlQUFlLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxlQUFlLENBQUMsQ0FBQTtBQUUzSCxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUc7SUFDekIsUUFBUSxFQUFFLFFBQVEsRUFBRTtJQUNwQixRQUFRLEVBQUUsUUFBUSxFQUFFO0lBQ3BCLFlBQVksRUFBRSxZQUFZLEVBQUU7SUFDNUIsT0FBTyxFQUFFLE9BQU8sRUFBRTtJQUNsQixPQUFPLEVBQUUsT0FBTyxFQUFFO0lBQ2xCLFNBQVMsRUFBRSxTQUFTLEVBQUU7SUFDdEIsV0FBVyxFQUFFLFdBQVcsRUFBRTtJQUMxQixvQkFBb0IsRUFBRSxvQkFBb0IsRUFBRTtJQUM1QyxxQkFBcUIsRUFBRSxxQkFBcUIsRUFBRTtJQUM5QyxlQUFlLEVBQUUsZUFBZSxFQUFFO0lBQ2xDLFdBQVcsRUFBRSxXQUFXLEVBQUU7SUFDMUIsYUFBYSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQzFELFdBQVcsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUN0RCxZQUFZLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDeEQsa0JBQWtCLEVBQUUsa0JBQWtCLEVBQUU7SUFDeEMsYUFBYSxFQUFFLGFBQWEsRUFBRTtDQUNqQyxDQUFBO0FBRUQsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLENBQUMsTUFBYyxZQUFZLEVBQUUsRUFBRTtJQUN6RCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDckQsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFDZixPQUFPLElBQUksQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7S0FDOUI7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNqQixDQUFDLENBQUE7QUFLRCxzREFBc0Q7QUFDdEQsRUFBRTtBQUNGLGVBQWU7QUFFZixNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxLQUFhLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFxQyxJQUFJLEVBQUUsQ0FBQTtBQUMzRyxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxHQUFHLEVBQW9DLEVBQUU7SUFDakUsSUFBSSxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUU7UUFDZixPQUFPLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQTtLQUMxQjtTQUFNLElBQUksUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1FBQ3RCLE9BQU8sR0FBRyxDQUFBO0tBQ2I7SUFDRCxPQUFPLEVBQUUsQ0FBQTtBQUNiLENBQUMsQ0FBQTtBQUVELHNEQUFzRDtBQUN0RCxFQUFFO0FBQ0YsZUFBZTtBQUVmLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxDQUFDLEtBQWEsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQXFCLENBQUE7QUFDckYsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUU7SUFDakMsSUFBSSxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUU7UUFDZixPQUFPLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQTtLQUMxQjtTQUFNLElBQUksUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1FBQ3RCLE9BQU8sR0FBRyxDQUFBO0tBQ2I7SUFDRCxPQUFPLElBQUksQ0FBQTtBQUNmLENBQUMsQ0FBQSJ9 \ No newline at end of file +import * as path from 'path'; +import pkg from 'env-var'; +const { get } = pkg; +import { sync as read } from '@polymech/fs/read'; +import { sync as exists } from '@polymech/fs/exists'; +import { isString, isObject } from '@polymech/core/primitives'; +import { API_PREFIX, API_PREFIX_NEXT } from './constants.js'; +export const HOME = (sub = '') => path.join(process.env[(process.platform == 'win32') ? 'USERPROFILE' : 'HOME'], sub); +export const get_var = (key = '') => get(key).asString() || get(key.replace(/-/g, '_')).asString() || get(key.replace(/_/g, '-')).asString(); +export const OSR_ROOT = (key = 'OSR-ROOT') => get_var(key) || path.join(HOME('desktop'), API_PREFIX); +export const OSR_SUB_DEFAULT = (key = '') => get_var(key) || path.join(OSR_ROOT(), key); +export const CONFIG_DEFAULT_PATH = (key = 'OSR-CONFIG') => get_var(key) || path.join(HOME(`${API_PREFIX}`), '.config.json'); +export const OSR_TEMP = (key = 'OSR-TEMP') => get_var(key) || OSR_SUB_DEFAULT(`.${API_PREFIX}/temp`); +export const OSR_CACHE = (key = 'OSR-CACHE') => get_var(key) || OSR_SUB_DEFAULT(`.${API_PREFIX}/cache`); +export const OSR_PRIVATE = (key = 'OSR-PRIVATE') => get_var(key); +export const KB_ROOT = (key = 'OSR-KB') => get_var(key); +export const OSR_LIBRARY = (key = 'OSR-LIBRARY') => get_var(key); +export const OSR_LIBRARY_MACHINES = (key = 'OSR-LIBRARY-MACHINES') => get_var(key); +export const OSR_LIBRARY_DIRECTORY = (key = 'OSR-LIBRARY-DIRECTORY') => get_var(key); +export const PRODUCT_ROOT = (key = 'PRODUCT-ROOT') => get_var(key); +export const OSR_CUSTOMER_DRIVE = (key = 'OSR-CUSTOMER-DRIVE') => get_var(key); +export const OA_ROOT = (key = 'OA-ROOT') => get_var(key); +export const OSR_USER_ASSETS = (key = 'OSR-USER-ASSETS') => get_var(key); +export const POLYMECH_ROOT = (key = 'POLYMECH-ROOT') => get_var(key) || path.join(HOME('desktop'), API_PREFIX_NEXT); +export 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() +}; +export const CONFIG_DEFAULT = (key = 'OSR-CONFIG') => { + const cPath = path.resolve(CONFIG_DEFAULT_PATH(key)); + if (exists(cPath)) { + return read(cPath, 'json'); + } + return false; +}; +////////////////////////////////////////////////////// +// +// NPM related +export const readNPMMeta = (_path) => read(_path, 'json') || {}; +export const readPackage = (val) => { + if (isString(val)) { + return readNPMMeta(val); + } + else if (isObject(val)) { + return val; + } + return {}; +}; +////////////////////////////////////////////////////// +// +// OSR related +export const readOSRMeta = (_path) => read(_path, 'json'); +export const readOSRConfig = (val) => { + if (isString(val)) { + return readOSRMeta(val); + } + else if (isObject(val)) { + return val; + } + return null; +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQTtBQUM1QixPQUFPLEdBQUcsTUFBTSxTQUFTLENBQUM7QUFDMUIsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEdBQUcsQ0FBQztBQUVwQixPQUFPLEVBQUUsSUFBSSxJQUFJLElBQUksRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQ2hELE9BQU8sRUFBRSxJQUFJLElBQUksTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDcEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQTtBQUM5RCxPQUFPLEVBQUUsVUFBVSxFQUFpQixlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUUzRSxNQUFNLENBQUMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxHQUFHLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFBO0FBQ3JILE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxDQUFDLE1BQWMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUE7QUFFcEosTUFBTSxDQUFDLE1BQU0s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 \ No newline at end of file diff --git a/packages/commons/dist/config.js.map b/packages/commons/dist/config.js.map index 260c2f9b..3e1d7245 100644 --- a/packages/commons/dist/config.js.map +++ b/packages/commons/dist/config.js.map @@ -1 +1 @@ -{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"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":[]} \ No newline at end of file diff --git a/packages/commons/dist/constants.d.ts b/packages/commons/dist/constants.d.ts index 132897c3..475202b5 100644 --- a/packages/commons/dist/constants.d.ts +++ b/packages/commons/dist/constants.d.ts @@ -1,11 +1,11 @@ -export declare const MODULE_NAME = "OSR-Commons"; -export declare const PROFILE_FILE_NAME = ".osrl.json"; -export declare const OA_LATEST = "${OSR_ROOT}/osr-directory/pp/${YYYY}_${MM}.json"; -export declare const OA_LATEST_INVALID = "${OSR_ROOT}/osr-directory/pp/${YYYY}_${MM}_INVALID.json"; -export declare const OA_LATEST_CENSORED = "${OSR_ROOT}/osr-directory/pp/${YYYY}_${MM}_CENSORED.json"; -export declare const OA_LATEST_MERGED = "${OSR_ROOT}/osr-directory/pp/${YYYY}_${MM}_MERGED.json"; -export declare const PP_BAZAR_LATEST_INDEX = "${OSR_ROOT}/pp-bazar/${YYYY}/${MM}/index.json"; -export declare const PP_BAZAR_LATEST_INDEX_MERGED = "${OSR_ROOT}/pp-bazar/${YYYY}/${MM}/index_merged.json"; -export declare const API_NAMESPACE = "@polymech"; -export declare const API_PREFIX = "polymech"; -export declare const API_PREFIX_NEXT = "polymech"; +export declare const MODULE_NAME = "OSR-Commons"; +export declare const PROFILE_FILE_NAME = ".osrl.json"; +export declare const OA_LATEST = "${OSR_ROOT}/osr-directory/pp/${YYYY}_${MM}.json"; +export declare const OA_LATEST_INVALID = "${OSR_ROOT}/osr-directory/pp/${YYYY}_${MM}_INVALID.json"; +export declare const OA_LATEST_CENSORED = "${OSR_ROOT}/osr-directory/pp/${YYYY}_${MM}_CENSORED.json"; +export declare const OA_LATEST_MERGED = "${OSR_ROOT}/osr-directory/pp/${YYYY}_${MM}_MERGED.json"; +export declare const PP_BAZAR_LATEST_INDEX = "${OSR_ROOT}/pp-bazar/${YYYY}/${MM}/index.json"; +export declare const PP_BAZAR_LATEST_INDEX_MERGED = "${OSR_ROOT}/pp-bazar/${YYYY}/${MM}/index_merged.json"; +export declare const API_NAMESPACE = "@polymech"; +export declare const API_PREFIX = "polymech"; +export declare const API_PREFIX_NEXT = "polymech"; diff --git a/packages/commons/dist/constants.js b/packages/commons/dist/constants.js index cbd443cf..e6300b38 100644 --- a/packages/commons/dist/constants.js +++ b/packages/commons/dist/constants.js @@ -1,17 +1,17 @@ -export const MODULE_NAME = `OSR-Commons`; -export const PROFILE_FILE_NAME = `.osrl.json`; -//////////////////////////////////////// -// -// OA Migration -export const OA_LATEST = '${OSR_ROOT}/osr-directory/pp/${YYYY}_${MM}.json'; -export const OA_LATEST_INVALID = '${OSR_ROOT}/osr-directory/pp/${YYYY}_${MM}_INVALID.json'; -export const OA_LATEST_CENSORED = '${OSR_ROOT}/osr-directory/pp/${YYYY}_${MM}_CENSORED.json'; -export const OA_LATEST_MERGED = '${OSR_ROOT}/osr-directory/pp/${YYYY}_${MM}_MERGED.json'; -// fecking bazar -export const PP_BAZAR_LATEST_INDEX = '${OSR_ROOT}/pp-bazar/${YYYY}/${MM}/index.json'; -export const PP_BAZAR_LATEST_INDEX_MERGED = '${OSR_ROOT}/pp-bazar/${YYYY}/${MM}/index_merged.json'; -// Namespaces -export const API_NAMESPACE = '@polymech'; -export const API_PREFIX = 'polymech'; -export const API_PREFIX_NEXT = 'polymech'; +export const MODULE_NAME = `OSR-Commons`; +export const PROFILE_FILE_NAME = `.osrl.json`; +//////////////////////////////////////// +// +// OA Migration +export const OA_LATEST = '${OSR_ROOT}/osr-directory/pp/${YYYY}_${MM}.json'; +export const OA_LATEST_INVALID = '${OSR_ROOT}/osr-directory/pp/${YYYY}_${MM}_INVALID.json'; +export const OA_LATEST_CENSORED = '${OSR_ROOT}/osr-directory/pp/${YYYY}_${MM}_CENSORED.json'; +export const OA_LATEST_MERGED = '${OSR_ROOT}/osr-directory/pp/${YYYY}_${MM}_MERGED.json'; +// fecking bazar +export const PP_BAZAR_LATEST_INDEX = '${OSR_ROOT}/pp-bazar/${YYYY}/${MM}/index.json'; +export const PP_BAZAR_LATEST_INDEX_MERGED = '${OSR_ROOT}/pp-bazar/${YYYY}/${MM}/index_merged.json'; +// Namespaces +export const API_NAMESPACE = '@polymech'; +export const API_PREFIX = 'polymech'; +export const API_PREFIX_NEXT = 'polymech'; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsYUFBYSxDQUFBO0FBQ3hDLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLFlBQVksQ0FBQTtBQUM3Qyx3Q0FBd0M7QUFDeEMsRUFBRTtBQUNGLGdCQUFnQjtBQUVoQixNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsaURBQWlELENBQUE7QUFDMUUsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcseURBQXlELENBQUE7QUFDMUYsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsMERBQTBELENBQUE7QUFDNUYsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsd0RBQXdELENBQUE7QUFFeEYsZ0JBQWdCO0FBQ2hCLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLCtDQUErQyxDQUFBO0FBQ3BGLE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUFHLHNEQUFzRCxDQUFBO0FBRWxHLGFBQWE7QUFDYixNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsV0FBVyxDQUFBO0FBQ3hDLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxVQUFVLENBQUE7QUFDcEMsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLFVBQVUsQ0FBQSJ9 \ No newline at end of file diff --git a/packages/commons/dist/constants.js.map b/packages/commons/dist/constants.js.map index 2519f25a..93faa9e5 100644 --- a/packages/commons/dist/constants.js.map +++ b/packages/commons/dist/constants.js.map @@ -1 +1 @@ -{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,WAAW,GAAG,aAAa,CAAA;AACxC,MAAM,CAAC,MAAM,iBAAiB,GAAG,YAAY,CAAA;AAC7C,wCAAwC;AACxC,EAAE;AACF,gBAAgB;AAEhB,MAAM,CAAC,MAAM,SAAS,GAAG,iDAAiD,CAAA;AAC1E,MAAM,CAAC,MAAM,iBAAiB,GAAG,yDAAyD,CAAA;AAC1F,MAAM,CAAC,MAAM,kBAAkB,GAAG,0DAA0D,CAAA;AAC5F,MAAM,CAAC,MAAM,gBAAgB,GAAG,wDAAwD,CAAA;AAExF,gBAAgB;AAChB,MAAM,CAAC,MAAM,qBAAqB,GAAG,+CAA+C,CAAA;AACpF,MAAM,CAAC,MAAM,4BAA4B,GAAG,sDAAsD,CAAA;AAElG,aAAa;AACb,MAAM,CAAC,MAAM,aAAa,GAAG,WAAW,CAAA;AACxC,MAAM,CAAC,MAAM,UAAU,GAAG,UAAU,CAAA;AACpC,MAAM,CAAC,MAAM,eAAe,GAAG,UAAU,CAAA"} \ No newline at end of file +{"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":"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/filter.d.ts b/packages/commons/dist/filter.d.ts index 3fb9d666..1f00041e 100644 --- a/packages/commons/dist/filter.d.ts +++ b/packages/commons/dist/filter.d.ts @@ -1,19 +1,19 @@ -import { JSONSchemaForNPMPackageJsonFiles } from '@schemastore/package'; -export declare const isAPIPackage: (_path: string) => JSONSchemaForNPMPackageJsonFiles; -export declare const hasDependency: (pkg: string | JSONSchemaForNPMPackageJsonFiles, dep: string) => string; -export declare const isValidMarketplaceComponent: (_path: string) => boolean; -export declare const isInvalidMarketplaceComponent: (_path: string) => boolean; -export declare const isValidLibraryComponent: (_path: string) => boolean; -export declare const PFilterInvalid: { - marketplace_component: string; -}; -export declare const PFilterValid: { - marketplace_component: string; - library_component: string; - package: string; -}; -export declare const FiltersValid: { - marketplace_component: (_path: string) => boolean; - library_component: (_path: string) => boolean; - package: (_path: string) => JSONSchemaForNPMPackageJsonFiles; -}; +import { JSONSchemaForNPMPackageJsonFiles } from '@schemastore/package'; +export declare const isAPIPackage: (_path: string) => JSONSchemaForNPMPackageJsonFiles; +export declare const hasDependency: (pkg: string | JSONSchemaForNPMPackageJsonFiles, dep: string) => string; +export declare const isValidMarketplaceComponent: (_path: string) => boolean; +export declare const isInvalidMarketplaceComponent: (_path: string) => boolean; +export declare const isValidLibraryComponent: (_path: string) => boolean; +export declare const PFilterInvalid: { + marketplace_component: string; +}; +export declare const PFilterValid: { + marketplace_component: string; + library_component: string; + package: string; +}; +export declare const FiltersValid: { + marketplace_component: (_path: string) => boolean; + library_component: (_path: string) => boolean; + package: (_path: string) => JSONSchemaForNPMPackageJsonFiles; +}; diff --git a/packages/commons/dist/filter.js b/packages/commons/dist/filter.js index b515bd69..62d2c057 100644 --- a/packages/commons/dist/filter.js +++ b/packages/commons/dist/filter.js @@ -1,65 +1,65 @@ -import * as path from 'path'; -import { sync as exists } from '@polymech/fs/exists'; -import { API_NAMESPACE, API_PREFIX } from './constants.js'; -import { readPackage, readOSRConfig } from './config.js'; -////////////////////////////////////////////////////// -// -// NPM related -export const isAPIPackage = (_path) => { - const pkg = readPackage(_path); - return (pkg.name || '').startsWith(`${API_NAMESPACE}/${API_PREFIX}`) ? pkg : null; -}; -export const hasDependency = (pkg, dep) => { - pkg = readPackage(pkg); - return Object.keys((pkg.dependencies || {})). - concat(Object.keys(pkg.devDependencies || {})). - find((d) => d === dep); -}; -////////////////////////////////////////////////////// -// -// OSR related -export const isValidMarketplaceComponent = (_path) => { - const pkg = readOSRConfig(_path); - if (!pkg || - !pkg.name || - !pkg.slug || - !pkg.code) { - return false; - } - return true; -}; -export const isInvalidMarketplaceComponent = (_path) => { - const pkg = readOSRConfig(_path); - if (pkg && - !pkg.name || - !pkg.slug || - !pkg.code) { - return true; - } - return false; -}; -export const isValidLibraryComponent = (_path) => { - const pkg = readOSRConfig(_path); - if (!pkg || !pkg.name) { - return false; - } - const templatePath = path.resolve(`${path.parse(_path).dir}/templates/shared/body.md`); - if (!exists(templatePath)) { - return false; - } - return true; -}; -export const PFilterInvalid = { - marketplace_component: 'invalid_marketplace_component' -}; -export const PFilterValid = { - marketplace_component: 'marketplace_component', - library_component: 'library_component', - package: 'package' -}; -export const FiltersValid = { - 'marketplace_component': isValidMarketplaceComponent, - 'library_component': isValidLibraryComponent, - 'package': isAPIPackage -}; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2ZpbHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQTtBQUU1QixPQUFPLEVBQUUsSUFBSSxJQUFJLE1BQU0sRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBRXBELE9BQU8sRUFDSCxhQUFhLEVBQ2IsVUFBVSxFQUNiLE1BQU0sZ0JBQWdCLENBQUE7QUFFdkIsT0FBTyxFQUNILFdBQVcsRUFDWCxhQUFhLEVBQ2hCLE1BQU0sYUFBYSxDQUFBO0FBRXBCLHNEQUFzRDtBQUN0RCxFQUFFO0FBQ0YsZUFBZTtBQUVmLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxDQUFDLEtBQWEsRUFBRSxFQUFFO0lBQzFDLE1BQU0sR0FBRyxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUM5QixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsR0FBRyxhQUFhLElBQUksVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUE7QUFDckYsQ0FBQyxDQUFBO0FBRUQsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLENBQUMsR0FBOEMsRUFBRSxHQUFXLEVBQUUsRUFBRTtJQUN6RixHQUFHLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQ3RCLE9BQVEsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxZQUFZLElBQUksRUFBRSxDQUFDLENBQUM7UUFDckMsTUFBTSxDQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGVBQWUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsQ0FBQyxDQUFRLEVBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQTtBQUN4QyxDQUFDLENBQUE7QUFFRCxzREFBc0Q7QUFDdEQsRUFBRTtBQUNGLGVBQWU7QUFFZixNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBRyxDQUFDLEtBQWEsRUFBRSxFQUFFO0lBQ3pELE1BQU0sR0FBRyxHQUFHLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUNoQyxJQUFJLENBQUMsR0FBRztRQUNKLENBQUMsR0FBRyxDQUFDLElBQUk7UUFDVCxDQUFDLEdBQUcsQ0FBQyxJQUFJO1FBQ1QsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFDO1FBQ1YsT0FBTyxLQUFLLENBQUE7S0FDZjtJQUNELE9BQU8sSUFBSSxDQUFBO0FBQ2YsQ0FBQyxDQUFBO0FBRUQsTUFBTSxDQUFDLE1BQU0sNkJBQTZCLEdBQUcsQ0FBQyxLQUFhLEVBQUUsRUFBRTtJQUMzRCxNQUFNLEdBQUcsR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDaEMsSUFBSSxHQUFHO1FBQ0gsQ0FBQyxHQUFHLENBQUMsSUFBSTtRQUNULENBQUMsR0FBRyxDQUFDLElBQUk7UUFDVCxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUM7UUFDVixPQUFPLElBQUksQ0FBQTtLQUNkO0lBQ0QsT0FBTyxLQUFLLENBQUE7QUFDaEIsQ0FBQyxDQUFBO0FBRUQsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsQ0FBQyxLQUFhLEVBQUUsRUFBRTtJQUNyRCxNQUFNLEdBQUcsR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDaEMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUM7UUFDbEIsT0FBTyxLQUFLLENBQUE7S0FDZjtJQUNELE1BQU0sWUFBWSxHQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsMkJBQTJCLENBQUMsQ0FBQTtJQUN2RixJQUFHLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxFQUFDO1FBQ3JCLE9BQU8sS0FBSyxDQUFBO0tBQ2Y7SUFDRCxPQUFPLElBQUksQ0FBQTtBQUNmLENBQUMsQ0FBQTtBQUVELE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRztJQUMxQixxQkFBcUIsRUFBRSwrQkFBK0I7Q0FDekQsQ0FBQTtBQUVELE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRztJQUN4QixxQkFBcUIsRUFBRSx1QkFBdUI7SUFDOUMsaUJBQWlCLEVBQUUsbUJBQW1CO0lBQ3RDLE9BQU8sRUFBRSxTQUFTO0NBQ3JCLENBQUE7QUFFRCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQ3pCO0lBQ0ksdUJBQXVCLEVBQUUsMkJBQTJCO0lBQ3BELG1CQUFtQixFQUFFLHVCQUF1QjtJQUM1QyxTQUFTLEVBQUcsWUFBWTtDQUMzQixDQUFBIn0= \ No newline at end of file +import * as path from 'path'; +import { sync as exists } from '@polymech/fs/exists'; +import { API_NAMESPACE, API_PREFIX } from './constants.js'; +import { readPackage, readOSRConfig } from './config.js'; +////////////////////////////////////////////////////// +// +// NPM related +export const isAPIPackage = (_path) => { + const pkg = readPackage(_path); + return (pkg.name || '').startsWith(`${API_NAMESPACE}/${API_PREFIX}`) ? pkg : null; +}; +export const hasDependency = (pkg, dep) => { + pkg = readPackage(pkg); + return Object.keys((pkg.dependencies || {})). + concat(Object.keys(pkg.devDependencies || {})). + find((d) => d === dep); +}; +////////////////////////////////////////////////////// +// +// OSR related +export const isValidMarketplaceComponent = (_path) => { + const pkg = readOSRConfig(_path); + if (!pkg || + !pkg.name || + !pkg.slug || + !pkg.code) { + return false; + } + return true; +}; +export const isInvalidMarketplaceComponent = (_path) => { + const pkg = readOSRConfig(_path); + if (pkg && + !pkg.name || + !pkg.slug || + !pkg.code) { + return true; + } + return false; +}; +export const isValidLibraryComponent = (_path) => { + const pkg = readOSRConfig(_path); + if (!pkg || !pkg.name) { + return false; + } + const templatePath = path.resolve(`${path.parse(_path).dir}/templates/shared/body.md`); + if (!exists(templatePath)) { + return false; + } + return true; +}; +export const PFilterInvalid = { + marketplace_component: 'invalid_marketplace_component' +}; +export const PFilterValid = { + marketplace_component: 'marketplace_component', + library_component: 'library_component', + package: 'package' +}; +export const FiltersValid = { + 'marketplace_component': isValidMarketplaceComponent, + 'library_component': isValidLibraryComponent, + 'package': isAPIPackage +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2ZpbHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQTtBQUU1QixPQUFPLEVBQUUsSUFBSSxJQUFJLE1BQU0sRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBRXBELE9BQU8sRUFDSCxhQUFhLEVBQ2IsVUFBVSxFQUNiLE1BQU0sZ0JBQWdCLENBQUE7QUFFdkIsT0FBTyxFQUNILFdBQVcsRUFDWCxhQUFhLEVBQ2hCLE1BQU0sYUFBYSxDQUFBO0FBRXBCLHNEQUFzRDtBQUN0RCxFQUFFO0FBQ0YsZUFBZTtBQUVmLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxDQUFDLEtBQWEsRUFBRSxFQUFFO0lBQzFDLE1BQU0sR0FBRyxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUM5QixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsR0FBRyxhQUFhLElBQUksVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUE7QUFDckYsQ0FBQyxDQUFBO0FBRUQsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLENBQUMsR0FBOEMsRUFBRSxHQUFXLEVBQUUsRUFBRTtJQUN6RixHQUFHLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQ3RCLE9BQVEsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxZQUFZLElBQUksRUFBRSxDQUFDLENBQUM7UUFDckMsTUFBTSxDQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGVBQWUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsQ0FBQyxDQUFRLEVBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQTtBQUN4QyxDQUFDLENBQUE7QUFFRCxzREFBc0Q7QUFDdEQsRUFBRTtBQUNGLGVBQWU7QUFFZixNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBRyxDQUFDLEtBQWEsRUFBRSxFQUFFO0lBQ3pELE1BQU0sR0FBRyxHQUFHLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUNoQyxJQUFJLENBQUMsR0FBRztRQUNKLENBQUMsR0FBRyxDQUFDLElBQUk7UUFDVCxDQUFDLEdBQUcsQ0FBQyxJQUFJO1FBQ1QsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFDLENBQUM7UUFDWCxPQUFPLEtBQUssQ0FBQTtJQUNoQixDQUFDO0lBQ0QsT0FBTyxJQUFJLENBQUE7QUFDZixDQUFDLENBQUE7QUFFRCxNQUFNLENBQUMsTUFBTSw2QkFBNkIsR0FBRyxDQUFDLEtBQWEsRUFBRSxFQUFFO0lBQzNELE1BQU0sR0FBRyxHQUFHLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUNoQyxJQUFJLEdBQUc7UUFDSCxDQUFDLEdBQUcsQ0FBQyxJQUFJO1FBQ1QsQ0FBQyxHQUFHLENBQUMsSUFBSTtRQUNULENBQUMsR0FBRyxDQUFDLElBQUksRUFBQyxDQUFDO1FBQ1gsT0FBTyxJQUFJLENBQUE7SUFDZixDQUFDO0lBQ0QsT0FBTyxLQUFLLENBQUE7QUFDaEIsQ0FBQyxDQUFBO0FBRUQsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsQ0FBQyxLQUFhLEVBQUUsRUFBRTtJQUNyRCxNQUFNLEdBQUcsR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDaEMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUMsQ0FBQztRQUNuQixPQUFPLEtBQUssQ0FBQTtJQUNoQixDQUFDO0lBQ0QsTUFBTSxZQUFZLEdBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRywyQkFBMkIsQ0FBQyxDQUFBO0lBQ3ZGLElBQUcsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLEVBQUMsQ0FBQztRQUN0QixPQUFPLEtBQUssQ0FBQTtJQUNoQixDQUFDO0lBQ0QsT0FBTyxJQUFJLENBQUE7QUFDZixDQUFDLENBQUE7QUFFRCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUc7SUFDMUIscUJBQXFCLEVBQUUsK0JBQStCO0NBQ3pELENBQUE7QUFFRCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUc7SUFDeEIscUJBQXFCLEVBQUUsdUJBQXVCO0lBQzlDLGlCQUFpQixFQUFFLG1CQUFtQjtJQUN0QyxPQUFPLEVBQUUsU0FBUztDQUNyQixDQUFBO0FBRUQsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUN6QjtJQUNJLHVCQUF1QixFQUFFLDJCQUEyQjtJQUNwRCxtQkFBbUIsRUFBRSx1QkFBdUI7SUFDNUMsU0FBUyxFQUFHLFlBQVk7Q0FDM0IsQ0FBQSJ9 \ No newline at end of file diff --git a/packages/commons/dist/filter.js.map b/packages/commons/dist/filter.js.map index 961f715b..30840ccf 100644 --- a/packages/commons/dist/filter.js.map +++ b/packages/commons/dist/filter.js.map @@ -1 +1 @@ -{"version":3,"file":"filter.js","sourceRoot":"","sources":["../src/filter.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"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,YAAY,UAAU;AAEtB,SAAS,QAAQ,cAAc;AAE/B;AAAA,EACI;AAAA,EACA;AAAA,OACG;AAEP;AAAA,EACI;AAAA,EACA;AAAA,OACG;AAMA,MAAM,eAAe,CAAC,UAAkB;AAC3C,QAAM,MAAM,YAAY,KAAK;AAC7B,UAAQ,IAAI,QAAQ,IAAI,WAAW,GAAG,aAAa,IAAI,UAAU,EAAE,IAAI,MAAM;AACjF;AAEO,MAAM,gBAAgB,CAAC,KAAgD,QAAgB;AAC1F,QAAM,YAAY,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,MAAM,cAAc,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,MAAM,cAAc,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,MAAM,cAAc,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,CAAC,OAAO,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":[]} \ No newline at end of file diff --git a/packages/commons/dist/fs.d.ts b/packages/commons/dist/fs.d.ts index bf9c04d7..43409d8d 100644 --- a/packages/commons/dist/fs.d.ts +++ b/packages/commons/dist/fs.d.ts @@ -1,5 +1,5 @@ -export declare const UNC_REGEX: RegExp; -export declare const WIN32_PATH_REGEX: RegExp; -export declare const isFile: (src: string) => boolean; -export declare const isFolder: (src: string) => boolean; -export declare const is_absolute: (fp: any) => boolean; +export declare const UNC_REGEX: RegExp; +export declare const WIN32_PATH_REGEX: RegExp; +export declare const isFile: (src: string) => boolean; +export declare const isFolder: (src: string) => boolean; +export declare const is_absolute: (fp: any) => boolean; diff --git a/packages/commons/dist/fs.js b/packages/commons/dist/fs.js index f96f3ea4..7bfc1dda 100644 --- a/packages/commons/dist/fs.js +++ b/packages/commons/dist/fs.js @@ -1,36 +1,36 @@ -import * as fs from 'fs'; -// https://learn.microsoft.com/en-us/windows/win32/fileio/naming-a-file#namespaces -// https://github.com/isaacs/node-glob/blob/main/src/pattern.ts -export const UNC_REGEX = /^[\\\/]{2,}[^\\\/]+[\\\/]+[^\\\/]+/; -export const WIN32_PATH_REGEX = /^([a-z]:)?[\\\/]/i; -import { is_windows } from './os.js'; -export const isFile = (src) => { - let srcIsFile = false; - try { - srcIsFile = fs.lstatSync(src).isFile(); - } - catch (e) { } - return srcIsFile; -}; -export 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; - } - // Microsoft Azure absolute filepath - if (fp.slice(0, 2) === '\\\\') { - return true; - } - return !is_relative_win32(fp); -}; -export const is_absolute = (fp) => is_windows() ? is_absolute_win32(fp) : is_absolute_posix(fp); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvZnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsTUFBTSxJQUFJLENBQUE7QUFFeEIsa0ZBQWtGO0FBQ2xGLCtEQUErRDtBQUUvRCxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsb0NBQW9DLENBQUE7QUFDN0QsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsbUJBQW1CLENBQUE7QUFFbkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFNBQVMsQ0FBQTtBQUdwQyxNQUFNLENBQUMsTUFBTSxNQUFNLEdBQUcsQ0FBQyxHQUFXLEVBQUUsRUFBRTtJQUNsQyxJQUFJLFNBQVMsR0FBRyxLQUFLLENBQUM7SUFDdEIsSUFBSTtRQUNBLFNBQVMsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFBO0tBQ3pDO0lBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRztJQUNmLE9BQU8sU0FBUyxDQUFBO0FBQ3BCLENBQUMsQ0FBQTtBQUVELE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxDQUFDLEdBQVcsRUFBRSxFQUFFO0lBQ3BDLElBQUksV0FBVyxHQUFHLEtBQUssQ0FBQztJQUN4QixJQUFJO1FBQ0EsV0FBVyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUE7S0FDaEQ7SUFBQyxPQUFPLENBQUMsRUFBRSxHQUFHO0lBQ2YsT0FBTyxXQUFXLENBQUM7QUFDdkIsQ0FBQyxDQUFBO0FBRUQsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFBO0FBQ25GLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFBO0FBQ3RELE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRTtJQUM3QixJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxJQUFJLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxFQUFFO1FBQzlFLE9BQU8sSUFBSSxDQUFBO0tBQ2Q7SUFDRCxvQ0FBb0M7SUFDcEMsSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxNQUFNLEVBQUU7UUFDM0IsT0FBTyxJQUFJLENBQUM7S0FDZjtJQUNELE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUMsQ0FBQTtBQUNqQyxDQUFDLENBQUE7QUFDRCxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFFLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsRUFBRSxDQUFDLENBQUEifQ== \ No newline at end of file +import * as fs from 'fs'; +// https://learn.microsoft.com/en-us/windows/win32/fileio/naming-a-file#namespaces +// https://github.com/isaacs/node-glob/blob/main/src/pattern.ts +export const UNC_REGEX = /^[\\\/]{2,}[^\\\/]+[\\\/]+[^\\\/]+/; +export const WIN32_PATH_REGEX = /^([a-z]:)?[\\\/]/i; +import { is_windows } from './os.js'; +export const isFile = (src) => { + let srcIsFile = false; + try { + srcIsFile = fs.lstatSync(src).isFile(); + } + catch (e) { } + return srcIsFile; +}; +export 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; + } + // Microsoft Azure absolute filepath + if (fp.slice(0, 2) === '\\\\') { + return true; + } + return !is_relative_win32(fp); +}; +export const is_absolute = (fp) => is_windows() ? is_absolute_win32(fp) : is_absolute_posix(fp); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvZnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsTUFBTSxJQUFJLENBQUE7QUFFeEIsa0ZBQWtGO0FBQ2xGLCtEQUErRDtBQUUvRCxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsb0NBQW9DLENBQUE7QUFDN0QsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsbUJBQW1CLENBQUE7QUFFbkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFNBQVMsQ0FBQTtBQUdwQyxNQUFNLENBQUMsTUFBTSxNQUFNLEdBQUcsQ0FBQyxHQUFXLEVBQUUsRUFBRTtJQUNsQyxJQUFJLFNBQVMsR0FBRyxLQUFLLENBQUM7SUFDdEIsSUFBSSxDQUFDO1FBQ0QsU0FBUyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUE7SUFDMUMsQ0FBQztJQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2YsT0FBTyxTQUFTLENBQUE7QUFDcEIsQ0FBQyxDQUFBO0FBRUQsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLENBQUMsR0FBVyxFQUFFLEVBQUU7SUFDcEMsSUFBSSxXQUFXLEdBQUcsS0FBSyxDQUFDO0lBQ3hCLElBQUksQ0FBQztRQUNELFdBQVcsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFBO0lBQ2pELENBQUM7SUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNmLE9BQU8sV0FBVyxDQUFDO0FBQ3ZCLENBQUMsQ0FBQTtBQUVELE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQTtBQUNuRixNQUFNLGlCQUFpQixHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQTtBQUN0RCxNQUFNLGlCQUFpQixHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUU7SUFDN0IsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO1FBQy9FLE9BQU8sSUFBSSxDQUFBO0lBQ2YsQ0FBQztJQUNELG9DQUFvQztJQUNwQyxJQUFJLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLE1BQU0sRUFBRSxDQUFDO1FBQzVCLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFDRCxPQUFPLENBQUMsaUJBQWlCLENBQUMsRUFBRSxDQUFDLENBQUE7QUFDakMsQ0FBQyxDQUFBO0FBQ0QsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQyxDQUFBIn0= \ No newline at end of file diff --git a/packages/commons/dist/fs.js.map b/packages/commons/dist/fs.js.map index d2322ecc..050a4655 100644 --- a/packages/commons/dist/fs.js.map +++ b/packages/commons/dist/fs.js.map @@ -1 +1 @@ -{"version":3,"file":"fs.js","sourceRoot":"","sources":["../src/fs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAA;AAExB,kFAAkF;AAClF,+DAA+D;AAC/D,MAAM,CAAC,MAAM,kBAAkB,GAAG,eAAe,CAAA;AACjD,MAAM,CAAC,MAAM,SAAS,GAAG,oCAAoC,CAAA;AAC7D,MAAM,CAAC,MAAM,gBAAgB,GAAG,mBAAmB,CAAA;AAEnD,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAEpC;;;;;;;;;;;EAWE;AAEF,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,GAAW,EAAE,EAAE;IAClC,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,IAAI;QACA,SAAS,GAAG,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAA;KACzC;IAAC,OAAO,CAAC,EAAE,GAAG;IACf,OAAO,SAAS,CAAA;AACpB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,GAAW,EAAE,EAAE;IACpC,IAAI,WAAW,GAAG,KAAK,CAAC;IACxB,IAAI;QACA,WAAW,GAAG,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAA;KAChD;IAAC,OAAO,CAAC,EAAE,GAAG;IACf,OAAO,WAAW,CAAC;AACvB,CAAC,CAAA;AAED,MAAM,iBAAiB,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;AACnF,MAAM,iBAAiB,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,CAAA;AACtD,MAAM,iBAAiB,GAAG,CAAC,EAAE,EAAE,EAAE;IAC7B,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE;QAC9E,OAAO,IAAI,CAAA;KACd;IACD,oCAAoC;IACpC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,MAAM,EAAE;QAC3B,OAAO,IAAI,CAAC;KACf;IACD,OAAO,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAA;AACjC,CAAC,CAAA;AACD,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,EAAE,EAAE,EAAE,CAAE,UAAU,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAA"} \ No newline at end of file +{"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,YAAY,QAAQ;AAKb,MAAM,YAAY;AAClB,MAAM,mBAAmB;AAEhC,SAAS,kBAAkB;AAGpB,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,OAAQ,WAAW,IAAI,kBAAkB,EAAE,IAAI,kBAAkB,EAAE;","names":[]} \ No newline at end of file diff --git a/packages/commons/dist/fs/_glob.d.ts b/packages/commons/dist/fs/_glob.d.ts index 86aa9a01..a8c01dca 100644 --- a/packages/commons/dist/fs/_glob.d.ts +++ b/packages/commons/dist/fs/_glob.d.ts @@ -1,10 +1,10 @@ -import { GlobOptions } from 'glob'; -export declare const files: (cwd: any, glob: any, options?: any) => []; -export declare const filesEx: (cwd: any, glob: any, options?: GlobOptions) => []; -import { PATH_INFO } from '../types_common.js'; -export { globBase } from './glob-base.js'; -export { globParent } from './glob-parent.js'; -export declare const getExtensions: (glob: string) => string[]; -export declare const forward_slash: (path: any) => any; -export declare const pathInfoEx: (src: string, altToken?: boolean, globOptions?: GlobOptions) => PATH_INFO; -export declare const pathInfo: (src: string, altToken?: boolean, cwd?: string) => PATH_INFO; +import { GlobOptions } from 'glob'; +export declare const files: (cwd: any, glob: any, options?: any) => []; +export declare const filesEx: (cwd: any, glob: any, options?: GlobOptions) => []; +import { PATH_INFO } from '../types_common.js'; +export { globBase } from './glob-base.js'; +export { globParent } from './glob-parent.js'; +export declare const getExtensions: (glob: string) => string[]; +export declare const forward_slash: (path: any) => any; +export declare const pathInfoEx: (src: string, altToken?: boolean, globOptions?: GlobOptions) => PATH_INFO; +export declare const pathInfo: (src: string, altToken?: boolean, cwd?: string) => PATH_INFO; diff --git a/packages/commons/dist/fs/_glob.js b/packages/commons/dist/fs/_glob.js index 5f410821..a21a1056 100644 --- a/packages/commons/dist/fs/_glob.js +++ b/packages/commons/dist/fs/_glob.js @@ -1,98 +1,96 @@ -import * as path from 'path'; -import { glob, globSync, hasMagic } from 'glob'; -import { REGEX_VAR, REGEX_VAR_ALT } from "@polymech/core/constants"; -import { sync as exists } from '@polymech/fs/exists'; -export const files = (cwd, glob, options) => globSync(glob, { ...{ dot: true, cwd, absolute: true, caseSensitiveMatch: false }, ...options || {} }); -export const filesEx = (cwd, glob, options) => globSync(glob, { ...{ dot: true, cwd, absolute: true, caseSensitiveMatch: false }, ...options || {} }); -import { isFile, isFolder } from '../fs.js'; -import { globBase } from './glob-base.js'; -export { globBase } from './glob-base.js'; -export { globParent } from './glob-parent.js'; -const GLOB_GROUP_PATTERN = /[!*+?@]\(.*\)/; -export const getExtensions = (glob) => { - //const parseGlob = require('parse-glob') - //https://github.com/micromatch/parse-glob/blob/master/index.js - const match = glob.match(GLOB_GROUP_PATTERN); - if (match) { - return glob.substring((match.index || 0) + 2, glob.lastIndexOf(')')).split('|'); - } - else { - // return [parseGlob(glob).path.ext] - } -}; -export const forward_slash = (path) => { - const isExtendedLengthPath = /^\\\\\?\\/.test(path); - const hasNonAscii = /[^\u0000-\u0080]+/.test(path); - if (isExtendedLengthPath || hasNonAscii) { - return path; - } - return path.replace(/\\/g, '/'); -}; -export const pathInfoEx = (src, altToken = false, globOptions = {}) => { - const srcParts = path.parse(src); - let variables = { - PATH: src - }; - variables.DIR = srcParts.dir; - variables.NAME = srcParts.name; - variables.FILE_NAME = srcParts.base; - variables.FILE_EXT = srcParts.ext.replace('.', ''); - variables.PATH = src; - variables.IS_FILE = isFile(src); - variables.IS_FOLDER = isFolder(src); - variables.IS_EXPRESSION = src.match(altToken ? REGEX_VAR_ALT : REGEX_VAR) != null; - variables.IS_GLOB = hasMagic(src); - if (variables.IS_GLOB) { - const glob_base = globBase(src); - variables.DIR = path.resolve(glob_base.base); - variables.FILE_NAME = glob_base.glob; - variables.GLOB = glob_base.glob; - variables.GLOB_EXTENSIONS = getExtensions(glob_base.glob); - globOptions = { - ...globOptions, - cwd: globOptions.cwd ? path.join(globOptions.cwd, glob_base.base) : glob_base.base - }; - variables.FILES = glob.sync(glob_base.glob, globOptions); - } - else if (variables.IS_FILE && exists(src)) { - variables.FILES = [src]; - } - return variables; -}; -export const pathInfo = (src, altToken = false, cwd = null) => { - const srcParts = path.parse(src); - let variables = { - PATH: src - }; - variables.DIR = srcParts.dir; - variables.NAME = srcParts.name; - variables.FILE_NAME = srcParts.base; - variables.FILE_EXT = srcParts.ext.replace('.', ''); - variables.PATH = src; - variables.IS_FILE = isFile(src); - variables.IS_FOLDER = isFolder(src); - variables.IS_EXPRESSION = src.match(altToken ? REGEX_VAR_ALT : REGEX_VAR) != null; - if (!variables.IS_FOLDER && !variables.IS_FILE) { - variables.IS_GLOB = hasMagic(srcParts.base); - } - else { - variables.IS_GLOB = false; - } - if (variables.IS_GLOB) { - const glob_base = globBase(src); - variables.DIR = path.resolve(glob_base.base); - variables.FILE_NAME = glob_base.glob; - variables.GLOB = glob_base.glob; - //variables.GLOB_EXTENSIONS = getExtensions(glob_base.glob) - variables.FILES = globSync(glob_base.glob, { - dot: true, - cwd: path.resolve(cwd || variables.DIR), - absolute: true - }); - } - else if (variables.IS_FILE && exists(src)) { - variables.FILES = [src]; - } - return variables; -}; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiX2dsb2IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZnMvX2dsb2IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUE7QUFFNUIsT0FBTyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQWUsUUFBUSxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQzVELE9BQU8sRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUE7QUFDbkUsT0FBTyxFQUFFLElBQUksSUFBSSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUVwRCxNQUFNLENBQUMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLE9BQWEsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLGtCQUFrQixFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsT0FBTyxJQUFJLEVBQUUsRUFBRSxDQUFPLENBQUE7QUFDL0osTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxPQUFxQixFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsa0JBQWtCLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxPQUFPLElBQUksRUFBRSxFQUFFLENBQU8sQ0FBQTtBQUd6SyxPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUczQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDekMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBQ3pDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUU3QyxNQUFNLGtCQUFrQixHQUFHLGVBQWUsQ0FBQTtBQUUxQyxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsQ0FBQyxJQUFZLEVBQUUsRUFBRTtJQUMxQyx5Q0FBeUM7SUFDekMsK0RBQStEO0lBQy9ELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUM3QyxJQUFJLEtBQUssRUFBRTtRQUNQLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUE7S0FDbEY7U0FBTTtRQUNKLG9DQUFvQztLQUN0QztBQUNMLENBQUMsQ0FBQTtBQUdELE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxDQUFDLElBQUksRUFBRSxFQUFFO0lBQ2xDLE1BQU0sb0JBQW9CLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUNuRCxNQUFNLFdBQVcsR0FBRyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDbEQsSUFBSSxvQkFBb0IsSUFBSSxXQUFXLEVBQUU7UUFDckMsT0FBTyxJQUFJLENBQUM7S0FDZjtJQUNELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUE7QUFDbkMsQ0FBQyxDQUFBO0FBRUQsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLENBQUMsR0FBVyxFQUFFLFdBQW9CLEtBQUssRUFBRSxjQUEyQixFQUFFLEVBQWEsRUFBRTtJQUMzRyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQ2hDLElBQUksU0FBUyxHQUFjO1FBQ3ZCLElBQUksRUFBRSxHQUFHO0tBQ0MsQ0FBQTtJQUVkLFNBQVMsQ0FBQyxHQUFHLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQTtJQUM1QixTQUFTLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUE7SUFDOUIsU0FBUyxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFBO0lBQ25DLFNBQVMsQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFBO0lBQ2xELFNBQVMsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFBO0lBQ3BCLFNBQVMsQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQy9CLFNBQVMsQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQ25DLFNBQVMsQ0FBQyxhQUFhLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksSUFBSSxDQUFBO0lBQ2pGLFNBQVMsQ0FBQyxPQUFPLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQ2pDLElBQUksU0FBUyxDQUFDLE9BQU8sRUFBRTtRQUNuQixNQUFNLFNBQVMsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDL0IsU0FBUyxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUM1QyxTQUFTLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUE7UUFDcEMsU0FBUyxDQUFDLElBQUksR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFBO1FBQy9CLFNBQVMsQ0FBQyxlQUFlLEdBQUcsYUFBYSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUN6RCxXQUFXLEdBQUc7WUFDVixHQUFHLFdBQVc7WUFDZCxHQUFHLEVBQUUsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBYSxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUk7U0FDL0YsQ0FBQTtRQUNELFNBQVMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBTyxDQUFBO0tBQ2pFO1NBQU0sSUFBSSxTQUFTLENBQUMsT0FBTyxJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUN6QyxTQUFTLENBQUMsS0FBSyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUE7S0FDMUI7SUFDRCxPQUFPLFNBQVMsQ0FBQTtBQUNwQixDQUFDLENBQUE7QUFDRCxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsQ0FBQyxHQUFXLEVBQUUsV0FBb0IsS0FBSyxFQUFFLE1BQWMsSUFBSSxFQUFhLEVBQUU7SUFDOUYsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUNoQyxJQUFJLFNBQVMsR0FBYztRQUN2QixJQUFJLEVBQUUsR0FBRztLQUNDLENBQUE7SUFDZCxTQUFTLENBQUMsR0FBRyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUE7SUFDNUIsU0FBUyxDQUFDLElBQUksR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFBO0lBQzlCLFNBQVMsQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQTtJQUNuQyxTQUFTLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQTtJQUNsRCxTQUFTLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQTtJQUNwQixTQUFTLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUMvQixTQUFTLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUNuQyxTQUFTLENBQUMsYUFBYSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLElBQUksQ0FBQTtJQUVqRixJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUU7UUFDNUMsU0FBUyxDQUFDLE9BQU8sR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFBO0tBQzlDO1NBQU07UUFDSCxTQUFTLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQTtLQUM1QjtJQUNELElBQUksU0FBUyxDQUFDLE9BQU8sRUFBRTtRQUNuQixNQUFNLFNBQVMsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDL0IsU0FBUyxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUM1QyxTQUFTLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUE7UUFDcEMsU0FBUyxDQUFDLElBQUksR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFBO1FBQy9CLDJEQUEyRDtRQUMzRCxTQUFTLENBQUMsS0FBSyxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFO1lBQ3ZDLEdBQUcsRUFBRSxJQUFJO1lBQ1QsR0FBRyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxJQUFJLFNBQVMsQ0FBQyxHQUFHLENBQUM7WUFDdkMsUUFBUSxFQUFFLElBQUk7U0FDakIsQ0FBQyxDQUFBO0tBQ0w7U0FBTSxJQUFJLFNBQVMsQ0FBQyxPQUFPLElBQUksTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1FBQ3pDLFNBQVMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQTtLQUMxQjtJQUNELE9BQU8sU0FBUyxDQUFBO0FBQ3BCLENBQUMsQ0FBQSJ9 \ No newline at end of file +import * as path from 'path'; +import { glob, globSync, hasMagic } from 'glob'; +import { REGEX_VAR, REGEX_VAR_ALT } from "@polymech/core/constants"; +import { sync as exists } from '@polymech/fs/exists'; +export const files = (cwd, glob, options) => globSync(glob, { ...{ dot: true, cwd, absolute: true, caseSensitiveMatch: false }, ...options || {} }); +export const filesEx = (cwd, glob, options) => globSync(glob, { ...{ dot: true, cwd, absolute: true, caseSensitiveMatch: false }, ...options || {} }); +import { isFile, isFolder } from '../fs.js'; +import { globBase } from './glob-base.js'; +export { globBase } from './glob-base.js'; +export { globParent } from './glob-parent.js'; +const GLOB_GROUP_PATTERN = /[!*+?@]\(.*\)/; +export const getExtensions = (glob) => { + const match = glob.match(GLOB_GROUP_PATTERN); + if (match) { + return glob.substring((match.index || 0) + 2, glob.lastIndexOf(')')).split('|'); + } + else { + // return [parseGlob(glob).path.ext] + } +}; +export const forward_slash = (path) => { + const isExtendedLengthPath = /^\\\\\?\\/.test(path); + const hasNonAscii = /[^\u0000-\u0080]+/.test(path); + if (isExtendedLengthPath || hasNonAscii) { + return path; + } + return path.replace(/\\/g, '/'); +}; +export const pathInfoEx = (src, altToken = false, globOptions = {}) => { + const srcParts = path.parse(src); + let variables = { + PATH: src + }; + variables.DIR = srcParts.dir; + variables.NAME = srcParts.name; + variables.FILE_NAME = srcParts.base; + variables.FILE_EXT = srcParts.ext.replace('.', ''); + variables.PATH = src; + variables.IS_FILE = isFile(src); + variables.IS_FOLDER = isFolder(src); + variables.IS_EXPRESSION = src.match(altToken ? REGEX_VAR_ALT : REGEX_VAR) != null; + variables.IS_GLOB = hasMagic(src); + if (variables.IS_GLOB) { + const glob_base = globBase(src); + variables.DIR = path.resolve(glob_base.base); + variables.FILE_NAME = glob_base.glob; + variables.GLOB = glob_base.glob; + variables.GLOB_EXTENSIONS = getExtensions(glob_base.glob); + globOptions = { + ...globOptions, + cwd: globOptions.cwd ? path.join(globOptions.cwd, glob_base.base) : glob_base.base + }; + variables.FILES = glob.sync(glob_base.glob, globOptions); + } + else if (variables.IS_FILE && exists(src)) { + variables.FILES = [src]; + } + return variables; +}; +export const pathInfo = (src, altToken = false, cwd = null) => { + const srcParts = path.parse(src); + let variables = { + PATH: src + }; + variables.DIR = srcParts.dir; + variables.NAME = srcParts.name; + variables.FILE_NAME = srcParts.base; + variables.FILE_EXT = srcParts.ext.replace('.', ''); + variables.PATH = src; + variables.IS_FILE = isFile(src); + variables.IS_FOLDER = isFolder(src); + variables.IS_EXPRESSION = src.match(altToken ? REGEX_VAR_ALT : REGEX_VAR) != null; + if (!variables.IS_FOLDER && !variables.IS_FILE) { + variables.IS_GLOB = hasMagic(srcParts.base); + } + else { + variables.IS_GLOB = false; + } + if (variables.IS_GLOB) { + const glob_base = globBase(src); + variables.DIR = path.resolve(glob_base.base); + variables.FILE_NAME = glob_base.glob; + variables.GLOB = glob_base.glob; + //variables.GLOB_EXTENSIONS = getExtensions(glob_base.glob) + variables.FILES = globSync(glob_base.glob, { + dot: true, + cwd: path.resolve(cwd || variables.DIR), + absolute: true + }); + } + else if (variables.IS_FILE && exists(src)) { + variables.FILES = [src]; + } + return variables; +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiX2dsb2IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZnMvX2dsb2IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUE7QUFFNUIsT0FBTyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQWUsUUFBUSxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQzVELE9BQU8sRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUE7QUFDbkUsT0FBTyxFQUFFLElBQUksSUFBSSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUVwRCxNQUFNLENBQUMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLE9BQWEsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLGtCQUFrQixFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsT0FBTyxJQUFJLEVBQUUsRUFBRSxDQUFPLENBQUE7QUFDL0osTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxPQUFxQixFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsa0JBQWtCLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxPQUFPLElBQUksRUFBRSxFQUFFLENBQU8sQ0FBQTtBQUV6SyxPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUczQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDekMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBQ3pDLE9B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 \ No newline at end of file diff --git a/packages/commons/dist/fs/glob-base.d.ts b/packages/commons/dist/fs/glob-base.d.ts index 92f549c1..46637c57 100644 --- a/packages/commons/dist/fs/glob-base.d.ts +++ b/packages/commons/dist/fs/glob-base.d.ts @@ -1,13 +1,13 @@ -/*! - * glob-base - * - * Copyright (c) 2015, Jon Schlinkert. - * Licensed under the MIT License. - */ -interface GlobBaseResult { - base: string; - isGlob: boolean; - glob: string; -} -export declare const globBase: (pattern: string) => GlobBaseResult; -export {}; +/*! + * glob-base + * + * Copyright (c) 2015, Jon Schlinkert. + * Licensed under the MIT License. + */ +interface GlobBaseResult { + base: string; + isGlob: boolean; + glob: string; +} +export declare const globBase: (pattern: string) => GlobBaseResult; +export {}; diff --git a/packages/commons/dist/fs/glob-base.js b/packages/commons/dist/fs/glob-base.js index 12782f62..d0ae8597 100644 --- a/packages/commons/dist/fs/glob-base.js +++ b/packages/commons/dist/fs/glob-base.js @@ -1,47 +1,47 @@ -/*! - * glob-base - * - * Copyright (c) 2015, Jon Schlinkert. - * Licensed under the MIT License. - */ -import { dirname as pathDirname } from 'path'; -import { hasMagic } from 'glob'; -import { globParent } from './glob-parent.js'; -function dirname(glob) { - if (glob.slice(-1) === '/') - return glob; - return pathDirname(glob); -} -export const globBase = (pattern) => { - if (typeof pattern !== 'string') { - throw new TypeError('glob-base expects a string.'); - } - const res = { - base: globParent(pattern), - isGlob: hasMagic(pattern), - glob: '' - }; - if (res.base !== '.') { - res.glob = pattern.substr(res.base.length); - if (res.glob.charAt(0) === '/') { - res.glob = res.glob.substr(1); - } - } - else { - res.glob = pattern; - } - if (!res.isGlob) { - res.base = dirname(pattern); - res.glob = res.base !== '.' - ? pattern.substr(res.base.length) - : pattern; - } - if (res.glob.substr(0, 2) === './') { - res.glob = res.glob.substr(2); - } - if (res.glob.charAt(0) === '/') { - res.glob = res.glob.substr(1); - } - return res; -}; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xvYi1iYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2ZzL2dsb2ItYmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7R0FLRztBQUVILE9BQU8sRUFBRSxPQUFPLElBQUksV0FBVyxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQzdDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFDL0IsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBUTdDLFNBQVMsT0FBTyxDQUFDLElBQVk7SUFDM0IsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRztRQUFFLE9BQU8sSUFBSSxDQUFDO0lBQ3hDLE9BQU8sV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzNCLENBQUM7QUFFRCxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsQ0FBQyxPQUFlLEVBQWtCLEVBQUU7SUFDMUQsSUFBSSxPQUFPLE9BQU8sS0FBSyxRQUFRLEVBQUU7UUFDL0IsTUFBTSxJQUFJLFNBQVMsQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO0tBQ3BEO0lBRUQsTUFBTSxHQUFHLEdBQW1CO1FBQzFCLElBQUksRUFBRSxVQUFVLENBQUMsT0FBTyxDQUFDO1FBQ3pCLE1BQU0sRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDO1FBQ3pCLElBQUksRUFBRSxFQUFFO0tBQ1QsQ0FBQztJQUVGLElBQUksR0FBRyxDQUFDLElBQUksS0FBSyxHQUFHLEVBQUU7UUFDcEIsR0FBRyxDQUFDLElBQUksR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDM0MsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLEVBQUU7WUFDOUIsR0FBRyxDQUFDLElBQUksR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUMvQjtLQUNGO1NBQU07UUFDTCxHQUFHLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQztLQUNwQjtJQUVELElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFO1FBQ2YsR0FBRyxDQUFDLElBQUksR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDNUIsR0FBRyxDQUFDLElBQUksR0FBRyxHQUFHLENBQUMsSUFBSSxLQUFLLEdBQUc7WUFDekIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7WUFDakMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztLQUNiO0lBRUQsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssSUFBSSxFQUFFO1FBQ2xDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDL0I7SUFDRCxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsRUFBRTtRQUM5QixHQUFHLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQy9CO0lBQ0QsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDLENBQUEifQ== \ No newline at end of file +/*! + * glob-base + * + * Copyright (c) 2015, Jon Schlinkert. + * Licensed under the MIT License. + */ +import { dirname as pathDirname } from 'path'; +import { hasMagic } from 'glob'; +import { globParent } from './glob-parent.js'; +function dirname(glob) { + if (glob.slice(-1) === '/') + return glob; + return pathDirname(glob); +} +export const globBase = (pattern) => { + if (typeof pattern !== 'string') { + throw new TypeError('glob-base expects a string.'); + } + const res = { + base: globParent(pattern), + isGlob: hasMagic(pattern), + glob: '' + }; + if (res.base !== '.') { + res.glob = pattern.substr(res.base.length); + if (res.glob.charAt(0) === '/') { + res.glob = res.glob.substr(1); + } + } + else { + res.glob = pattern; + } + if (!res.isGlob) { + res.base = dirname(pattern); + res.glob = res.base !== '.' + ? pattern.substr(res.base.length) + : pattern; + } + if (res.glob.substr(0, 2) === './') { + res.glob = res.glob.substr(2); + } + if (res.glob.charAt(0) === '/') { + res.glob = res.glob.substr(1); + } + return res; +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xvYi1iYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2ZzL2dsb2ItYmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7R0FLRztBQUVILE9BQU8sRUFBRSxPQUFPLElBQUksV0FBVyxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQzdDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFDL0IsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBUTdDLFNBQVMsT0FBTyxDQUFDLElBQVk7SUFDM0IsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRztRQUFFLE9BQU8sSUFBSSxDQUFDO0lBQ3hDLE9BQU8sV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzNCLENBQUM7QUFFRCxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsQ0FBQyxPQUFlLEVBQWtCLEVBQUU7SUFDMUQsSUFBSSxPQUFPLE9BQU8sS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUNoQyxNQUFNLElBQUksU0FBUyxDQUFDLDZCQUE2QixDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVELE1BQU0sR0FBRyxHQUFtQjtRQUMxQixJQUFJLEVBQUUsVUFBVSxDQUFDLE9BQU8sQ0FBQztRQUN6QixNQUFNLEVBQUUsUUFBUSxDQUFDLE9BQU8sQ0FBQztRQUN6QixJQUFJLEVBQUUsRUFBRTtLQUNULENBQUM7SUFFRixJQUFJLEdBQUcsQ0FBQyxJQUFJLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDckIsR0FBRyxDQUFDLElBQUksR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDM0MsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztZQUMvQixHQUFHLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2hDLENBQUM7SUFDSCxDQUFDO1NBQU0sQ0FBQztRQUNOLEdBQUcsQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2hCLEdBQUcsQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzVCLEdBQUcsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLElBQUksS0FBSyxHQUFHO1lBQ3pCLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQ2pDLENBQUMsQ0FBQyxPQUFPLENBQUM7SUFDZCxDQUFDO0lBRUQsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7UUFDbkMsR0FBRyxDQUFDLElBQUksR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBQ0QsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUMvQixHQUFHLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFDRCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUMsQ0FBQSJ9 \ No newline at end of file diff --git a/packages/commons/dist/fs/glob-parent.d.ts b/packages/commons/dist/fs/glob-parent.d.ts index 7354ba22..73abe241 100644 --- a/packages/commons/dist/fs/glob-parent.d.ts +++ b/packages/commons/dist/fs/glob-parent.d.ts @@ -1,5 +1,5 @@ -interface Options { - flipBackslashes?: boolean; -} -export declare const globParent: (str: string, opts?: Options) => string; -export {}; +interface Options { + flipBackslashes?: boolean; +} +export declare const globParent: (str: string, opts?: Options) => string; +export {}; diff --git a/packages/commons/dist/fs/glob-parent.js b/packages/commons/dist/fs/glob-parent.js index b7868b22..198d915d 100644 --- a/packages/commons/dist/fs/glob-parent.js +++ b/packages/commons/dist/fs/glob-parent.js @@ -1,58 +1,58 @@ -import { posix } from 'path'; -import { platform } from 'os'; -import { hasMagic } from 'glob'; -const isWin32 = platform() === 'win32'; -const slash = '/'; -const backslash = /\\/g; -const escaped = /\\([!*?|[\](){}])/g; -export const globParent = (str, opts) => { - const options = { flipBackslashes: true, ...opts }; - // flip windows path separators - if (options.flipBackslashes && isWin32 && !str.includes(slash)) { - str = str.replace(backslash, slash); - } - // special case for strings ending in enclosure containing path separator - if (isEnclosure(str)) { - str += slash; - } - // preserves full path in case of trailing path separator - str += 'a'; - // remove path parts that are globby - do { - str = posix.dirname(str); - } while (isGlobby(str)); - // remove escape chars and return result - return str.replace(escaped, '$1'); -}; -function isEnclosure(str) { - const lastChar = str.slice(-1); - let enclosureStart; - switch (lastChar) { - case '}': - enclosureStart = '{'; - break; - case ']': - enclosureStart = '['; - break; - default: - return false; - } - const foundIndex = str.indexOf(enclosureStart); - if (foundIndex < 0) { - return false; - } - return str.slice(foundIndex + 1, -1).includes(slash); -} -function isGlobby(str) { - if (/\([^()]+$/.test(str)) { - return true; - } - if (str[0] === '{' || str[0] === '[') { - return true; - } - if (/[^\\][{[]/.test(str)) { - return true; - } - return hasMagic(str); -} -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xvYi1wYXJlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZnMvZ2xvYi1wYXJlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUM1QixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sSUFBSSxDQUFBO0FBQzdCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFFL0IsTUFBTSxPQUFPLEdBQUcsUUFBUSxFQUFFLEtBQUssT0FBTyxDQUFBO0FBRXRDLE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQztBQUNsQixNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUM7QUFDeEIsTUFBTSxPQUFPLEdBQUcsb0JBQW9CLENBQUM7QUFNckMsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLENBQUMsR0FBVyxFQUFFLElBQWMsRUFBVSxFQUFFO0lBQ2hFLE1BQU0sT0FBTyxHQUFZLEVBQUUsZUFBZSxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksRUFBRSxDQUFDO0lBRTVELCtCQUErQjtJQUMvQixJQUFJLE9BQU8sQ0FBQyxlQUFlLElBQUksT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUM5RCxHQUFHLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7S0FDckM7SUFFRCx5RUFBeUU7SUFDekUsSUFBSSxXQUFXLENBQUMsR0FBRyxDQUFDLEVBQUU7UUFDcEIsR0FBRyxJQUFJLEtBQUssQ0FBQztLQUNkO0lBRUQseURBQXlEO0lBQ3pELEdBQUcsSUFBSSxHQUFHLENBQUM7SUFFWCxvQ0FBb0M7SUFDcEMsR0FBRztRQUNELEdBQUcsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0tBQzFCLFFBQVEsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFO0lBRXhCLHdDQUF3QztJQUN4QyxPQUFPLEdBQUcsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3BDLENBQUMsQ0FBQTtBQUVELFNBQVMsV0FBVyxDQUFDLEdBQVc7SUFDOUIsTUFBTSxRQUFRLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRS9CLElBQUksY0FBc0IsQ0FBQztJQUMzQixRQUFRLFFBQVEsRUFBRTtRQUNoQixLQUFLLEdBQUc7WUFDTixjQUFjLEdBQUcsR0FBRyxDQUFDO1lBQ3JCLE1BQU07UUFDUixLQUFLLEdBQUc7WUFDTixjQUFjLEdBQUcsR0FBRyxDQUFDO1lBQ3JCLE1BQU07UUFDUjtZQUNFLE9BQU8sS0FBSyxDQUFDO0tBQ2hCO0lBRUQsTUFBTSxVQUFVLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUMvQyxJQUFJLFVBQVUsR0FBRyxDQUFDLEVBQUU7UUFDbEIsT0FBTyxLQUFLLENBQUM7S0FDZDtJQUVELE9BQU8sR0FBRyxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3ZELENBQUM7QUFFRCxTQUFTLFFBQVEsQ0FBQyxHQUFXO0lBQzNCLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUN6QixPQUFPLElBQUksQ0FBQztLQUNiO0lBQ0QsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLEVBQUU7UUFDcEMsT0FBTyxJQUFJLENBQUM7S0FDYjtJQUNELElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUN6QixPQUFPLElBQUksQ0FBQztLQUNiO0lBQ0QsT0FBTyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDdkIsQ0FBQyJ9 \ No newline at end of file +import { posix } from 'path'; +import { platform } from 'os'; +import { hasMagic } from 'glob'; +const isWin32 = platform() === 'win32'; +const slash = '/'; +const backslash = /\\/g; +const escaped = /\\([!*?|[\](){}])/g; +export const globParent = (str, opts) => { + const options = { flipBackslashes: true, ...opts }; + // flip windows path separators + if (options.flipBackslashes && isWin32 && !str.includes(slash)) { + str = str.replace(backslash, slash); + } + // special case for strings ending in enclosure containing path separator + if (isEnclosure(str)) { + str += slash; + } + // preserves full path in case of trailing path separator + str += 'a'; + // remove path parts that are globby + do { + str = posix.dirname(str); + } while (isGlobby(str)); + // remove escape chars and return result + return str.replace(escaped, '$1'); +}; +function isEnclosure(str) { + const lastChar = str.slice(-1); + let enclosureStart; + switch (lastChar) { + case '}': + enclosureStart = '{'; + break; + case ']': + enclosureStart = '['; + break; + default: + return false; + } + const foundIndex = str.indexOf(enclosureStart); + if (foundIndex < 0) { + return false; + } + return str.slice(foundIndex + 1, -1).includes(slash); +} +function isGlobby(str) { + if (/\([^()]+$/.test(str)) { + return true; + } + if (str[0] === '{' || str[0] === '[') { + return true; + } + if (/[^\\][{[]/.test(str)) { + return true; + } + return hasMagic(str); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xvYi1wYXJlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZnMvZ2xvYi1wYXJlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUM1QixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sSUFBSSxDQUFBO0FBQzdCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFFL0IsTUFBTSxPQUFPLEdBQUcsUUFBUSxFQUFFLEtBQUssT0FBTyxDQUFBO0FBRXRDLE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQztBQUNsQixNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUM7QUFDeEIsTUFBTSxPQUFPLEdBQUcsb0JBQW9CLENBQUM7QUFNckMsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLENBQUMsR0FBVyxFQUFFLElBQWMsRUFBVSxFQUFFO0lBQ2hFLE1BQU0sT0FBTyxHQUFZLEVBQUUsZUFBZSxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksRUFBRSxDQUFDO0lBRTVELCtCQUErQjtJQUMvQixJQUFJLE9BQU8sQ0FBQyxlQUFlLElBQUksT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQy9ELEdBQUcsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQseUVBQXlFO0lBQ3pFLElBQUksV0FBVyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDckIsR0FBRyxJQUFJLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCx5REFBeUQ7SUFDekQsR0FBRyxJQUFJLEdBQUcsQ0FBQztJQUVYLG9DQUFvQztJQUNwQyxHQUFHLENBQUM7UUFDRixHQUFHLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMzQixDQUFDLFFBQVEsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFO0lBRXhCLHdDQUF3QztJQUN4QyxPQUFPLEdBQUcsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3BDLENBQUMsQ0FBQTtBQUVELFNBQVMsV0FBVyxDQUFDLEdBQVc7SUFDOUIsTUFBTSxRQUFRLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRS9CLElBQUksY0FBc0IsQ0FBQztJQUMzQixRQUFRLFFBQVEsRUFBRSxDQUFDO1FBQ2pCLEtBQUssR0FBRztZQUNOLGNBQWMsR0FBRyxHQUFHLENBQUM7WUFDckIsTUFBTTtRQUNSLEtBQUssR0FBRztZQUNOLGNBQWMsR0FBRyxHQUFHLENBQUM7WUFDckIsTUFBTTtRQUNSO1lBQ0UsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVELE1BQU0sVUFBVSxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDL0MsSUFBSSxVQUFVLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDbkIsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsT0FBTyxHQUFHLENBQUMsS0FBSyxDQUFDLFVBQVUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDdkQsQ0FBQztBQUVELFNBQVMsUUFBUSxDQUFDLEdBQVc7SUFDM0IsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDMUIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBQ0QsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUNyQyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFDRCxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUMxQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFDRCxPQUFPLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN2QixDQUFDIn0= \ No newline at end of file diff --git a/packages/commons/dist/index.d.ts b/packages/commons/dist/index.d.ts index c987fb36..fe580582 100644 --- a/packages/commons/dist/index.d.ts +++ b/packages/commons/dist/index.d.ts @@ -1,10 +1,10 @@ -export * from './fs.js'; -export * from './config.js'; -export * from './os.js'; -export * from './paths.js'; -export * from './variables.js'; -export * from './profile.js'; -export * from './types.js'; -export * from './constants.js'; -export * from './fs/_glob.js'; -export * from './component.js'; +export * from './fs.js'; +export * from './config.js'; +export * from './os.js'; +export * from './paths.js'; +export * from './variables.js'; +export * from './profile.js'; +export * from './types.js'; +export * from './constants.js'; +export * from './fs/_glob.js'; +export * from './component.js'; diff --git a/packages/commons/dist/index.js b/packages/commons/dist/index.js index 9c58ad64..3436f4aa 100644 --- a/packages/commons/dist/index.js +++ b/packages/commons/dist/index.js @@ -1,11 +1,11 @@ -export * from './fs.js'; -export * from './config.js'; -export * from './os.js'; -export * from './paths.js'; -export * from './variables.js'; -export * from './profile.js'; -export * from './types.js'; -export * from './constants.js'; -export * from './fs/_glob.js'; -export * from './component.js'; +export * from './fs.js'; +export * from './config.js'; +export * from './os.js'; +export * from './paths.js'; +export * from './variables.js'; +export * from './profile.js'; +export * from './types.js'; +export * from './constants.js'; +export * from './fs/_glob.js'; +export * from './component.js'; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxTQUFTLENBQUE7QUFDdkIsY0FBYyxhQUFhLENBQUE7QUFDM0IsY0FBYyxTQUFTLENBQUE7QUFDdkIsY0FBYyxZQUFZLENBQUE7QUFDMUIsY0FBYyxnQkFBZ0IsQ0FBQTtBQUM5QixjQUFjLGNBQWMsQ0FBQTtBQUM1QixjQUFjLFlBQVksQ0FBQTtBQUMxQixjQUFjLGdCQUFnQixDQUFBO0FBQzlCLGNBQWMsZUFBZSxDQUFBO0FBQzdCLGNBQWMsZ0JBQWdCLENBQUEifQ== \ No newline at end of file diff --git a/packages/commons/dist/index.js.map b/packages/commons/dist/index.js.map index e56754c1..614a7220 100644 --- a/packages/commons/dist/index.js.map +++ b/packages/commons/dist/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAA;AACvB,cAAc,aAAa,CAAA;AAC3B,cAAc,SAAS,CAAA;AACvB,cAAc,YAAY,CAAA;AAC1B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAC5B,cAAc,YAAY,CAAA;AAC1B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,eAAe,CAAA;AAC7B,cAAc,gBAAgB,CAAA"} \ No newline at end of file +{"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,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;","names":[]} \ No newline at end of file diff --git a/packages/commons/dist/lang/frontmatter.d.ts b/packages/commons/dist/lang/frontmatter.d.ts index e24a266b..af79e372 100644 --- a/packages/commons/dist/lang/frontmatter.d.ts +++ b/packages/commons/dist/lang/frontmatter.d.ts @@ -1,20 +1,20 @@ -export declare function isFrontmatterValid(frontmatter: Record): boolean; -export declare function extractFrontmatter(code: string): string | undefined; -export interface ParseFrontmatterOptions { - /** - * How the frontmatter should be handled in the returned `content` string. - * - `preserve`: Keep the frontmatter. - * - `remove`: Remove the frontmatter. - * - `empty-with-spaces`: Replace the frontmatter with empty spaces. (preserves sourcemap line/col/offset) - * - `empty-with-lines`: Replace the frontmatter with empty line breaks. (preserves sourcemap line/col) - * - * @default 'remove' - */ - frontmatter: 'preserve' | 'remove' | 'empty-with-spaces' | 'empty-with-lines'; -} -export interface ParseFrontmatterResult { - frontmatter: Record; - rawFrontmatter: string; - content: string; -} -export declare function parseFrontmatter(code: string, options?: ParseFrontmatterOptions): ParseFrontmatterResult; +export declare function isFrontmatterValid(frontmatter: Record): boolean; +export declare function extractFrontmatter(code: string): string | undefined; +export interface ParseFrontmatterOptions { + /** + * How the frontmatter should be handled in the returned `content` string. + * - `preserve`: Keep the frontmatter. + * - `remove`: Remove the frontmatter. + * - `empty-with-spaces`: Replace the frontmatter with empty spaces. (preserves sourcemap line/col/offset) + * - `empty-with-lines`: Replace the frontmatter with empty line breaks. (preserves sourcemap line/col) + * + * @default 'remove' + */ + frontmatter: 'preserve' | 'remove' | 'empty-with-spaces' | 'empty-with-lines'; +} +export interface ParseFrontmatterResult { + frontmatter: Record; + rawFrontmatter: string; + content: string; +} +export declare function parseFrontmatter(code: string, options?: ParseFrontmatterOptions): ParseFrontmatterResult; diff --git a/packages/commons/dist/lang/frontmatter.js b/packages/commons/dist/lang/frontmatter.js index bbfecd10..e22bcb0c 100644 --- a/packages/commons/dist/lang/frontmatter.js +++ b/packages/commons/dist/lang/frontmatter.js @@ -1,48 +1,48 @@ -import yaml from 'js-yaml'; -export function isFrontmatterValid(frontmatter) { - try { - // ensure frontmatter is JSON-serializable - JSON.stringify(frontmatter); - } - catch { - return false; - } - return typeof frontmatter === 'object' && frontmatter !== null; -} -// Capture frontmatter wrapped with `---`, including any characters and new lines within it. -// Only capture if `---` exists near the top of the file, including: -// 1. Start of file (including if has BOM encoding) -// 2. Start of file with any whitespace (but `---` must still start on a new line) -const frontmatterRE = /(?:^\uFEFF?|^\s*\n)---([\s\S]*?\n)---/; -export function extractFrontmatter(code) { - return frontmatterRE.exec(code)?.[1]; -} -export function parseFrontmatter(code, options) { - const rawFrontmatter = extractFrontmatter(code); - if (rawFrontmatter == null) { - return { frontmatter: {}, rawFrontmatter: '', content: code }; - } - const parsed = yaml.load(rawFrontmatter); - const frontmatter = (parsed && typeof parsed === 'object' ? parsed : {}); - let content; - switch (options?.frontmatter ?? 'remove') { - case 'preserve': - content = code; - break; - case 'remove': - content = code.replace(`---${rawFrontmatter}---`, ''); - break; - case 'empty-with-spaces': - content = code.replace(`---${rawFrontmatter}---`, ` ${rawFrontmatter.replace(/[^\r\n]/g, ' ')} `); - break; - case 'empty-with-lines': - content = code.replace(`---${rawFrontmatter}---`, rawFrontmatter.replace(/[^\r\n]/g, '')); - break; - } - return { - frontmatter, - rawFrontmatter, - content, - }; -} -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJvbnRtYXR0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGFuZy9mcm9udG1hdHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLElBQUksTUFBTSxTQUFTLENBQUM7QUFFM0IsTUFBTSxVQUFVLGtCQUFrQixDQUFDLFdBQWdDO0lBQ2xFLElBQUk7UUFDSCwwQ0FBMEM7UUFDMUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQztLQUM1QjtJQUFDLE1BQU07UUFDUCxPQUFPLEtBQUssQ0FBQztLQUNiO0lBQ0QsT0FBTyxPQUFPLFdBQVcsS0FBSyxRQUFRLElBQUksV0FBVyxLQUFLLElBQUksQ0FBQztBQUNoRSxDQUFDO0FBRUQsNEZBQTRGO0FBQzVGLG9FQUFvRTtBQUNwRSxtREFBbUQ7QUFDbkQsa0ZBQWtGO0FBQ2xGLE1BQU0sYUFBYSxHQUFHLHVDQUF1QyxDQUFDO0FBQzlELE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxJQUFZO0lBQzlDLE9BQU8sYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3RDLENBQUM7QUFxQkQsTUFBTSxVQUFVLGdCQUFnQixDQUMvQixJQUFZLEVBQ1osT0FBaUM7SUFFakMsTUFBTSxjQUFjLEdBQUcsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFaEQsSUFBSSxjQUFjLElBQUksSUFBSSxFQUFFO1FBQzNCLE9BQU8sRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFFLGNBQWMsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDO0tBQzlEO0lBRUQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUN6QyxNQUFNLFdBQVcsR0FBRyxDQUFDLE1BQU0sSUFBSSxPQUFPLE1BQU0sS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUF3QixDQUFDO0lBRWhHLElBQUksT0FBZSxDQUFDO0lBQ3BCLFFBQVEsT0FBTyxFQUFFLFdBQVcsSUFBSSxRQUFRLEVBQUU7UUFDekMsS0FBSyxVQUFVO1lBQ2QsT0FBTyxHQUFHLElBQUksQ0FBQztZQUNmLE1BQU07UUFDUCxLQUFLLFFBQVE7WUFDWixPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLGNBQWMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3RELE1BQU07UUFDUCxLQUFLLG1CQUFtQjtZQUN2QixPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FDckIsTUFBTSxjQUFjLEtBQUssRUFDekIsTUFBTSxjQUFjLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsS0FBSyxDQUNsRCxDQUFDO1lBQ0YsTUFBTTtRQUNQLEtBQUssa0JBQWtCO1lBQ3RCLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sY0FBYyxLQUFLLEVBQUUsY0FBYyxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUMxRixNQUFNO0tBQ1A7SUFFRCxPQUFPO1FBQ04sV0FBVztRQUNYLGNBQWM7UUFDZCxPQUFPO0tBQ1AsQ0FBQztBQUNILENBQUMifQ== \ No newline at end of file +import yaml from 'js-yaml'; +export function isFrontmatterValid(frontmatter) { + try { + // ensure frontmatter is JSON-serializable + JSON.stringify(frontmatter); + } + catch { + return false; + } + return typeof frontmatter === 'object' && frontmatter !== null; +} +// Capture frontmatter wrapped with `---`, including any characters and new lines within it. +// Only capture if `---` exists near the top of the file, including: +// 1. Start of file (including if has BOM encoding) +// 2. Start of file with any whitespace (but `---` must still start on a new line) +const frontmatterRE = /(?:^\uFEFF?|^\s*\n)---([\s\S]*?\n)---/; +export function extractFrontmatter(code) { + return frontmatterRE.exec(code)?.[1]; +} +export function parseFrontmatter(code, options) { + const rawFrontmatter = extractFrontmatter(code); + if (rawFrontmatter == null) { + return { frontmatter: {}, rawFrontmatter: '', content: code }; + } + const parsed = yaml.load(rawFrontmatter); + const frontmatter = (parsed && typeof parsed === 'object' ? parsed : {}); + let content; + switch (options?.frontmatter ?? 'remove') { + case 'preserve': + content = code; + break; + case 'remove': + content = code.replace(`---${rawFrontmatter}---`, ''); + break; + case 'empty-with-spaces': + content = code.replace(`---${rawFrontmatter}---`, ` ${rawFrontmatter.replace(/[^\r\n]/g, ' ')} `); + break; + case 'empty-with-lines': + content = code.replace(`---${rawFrontmatter}---`, rawFrontmatter.replace(/[^\r\n]/g, '')); + break; + } + return { + frontmatter, + rawFrontmatter, + content, + }; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJvbnRtYXR0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGFuZy9mcm9udG1hdHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLElBQUksTUFBTSxTQUFTLENBQUM7QUFFM0IsTUFBTSxVQUFVLGtCQUFrQixDQUFDLFdBQWdDO0lBQ2xFLElBQUksQ0FBQztRQUNKLDBDQUEwQztRQUMxQyxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUixPQUFPLEtBQUssQ0FBQztJQUNkLENBQUM7SUFDRCxPQUFPLE9BQU8sV0FBVyxLQUFLLFFBQVEsSUFBSSxXQUFXLEtBQUssSUFBSSxDQUFDO0FBQ2hFLENBQUM7QUFFRCw0RkFBNEY7QUFDNUYsb0VBQW9FO0FBQ3BFLG1EQUFtRDtBQUNuRCxrRkFBa0Y7QUFDbEYsTUFBTSxhQUFhLEdBQUcsdUNBQXVDLENBQUM7QUFDOUQsTUFBTSxVQUFVLGtCQUFrQixDQUFDLElBQVk7SUFDOUMsT0FBTyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdEMsQ0FBQztBQXFCRCxNQUFNLFVBQVUsZ0JBQWdCLENBQy9CLElBQVksRUFDWixPQUFpQztJQUVqQyxNQUFNLGNBQWMsR0FBRyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUVoRCxJQUFJLGNBQWMsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUM1QixPQUFPLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRSxjQUFjLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUMvRCxDQUFDO0lBRUQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUN6QyxNQUFNLFdBQVcsR0FBRyxDQUFDLE1BQU0sSUFBSSxPQUFPLE1BQU0sS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUF3QixDQUFDO0lBRWhHLElBQUksT0FBZSxDQUFDO0lBQ3BCLFFBQVEsT0FBTyxFQUFFLFdBQVcsSUFBSSxRQUFRLEVBQUUsQ0FBQztRQUMxQyxLQUFLLFVBQVU7WUFDZCxPQUFPLEdBQUcsSUFBSSxDQUFDO1lBQ2YsTUFBTTtRQUNQLEtBQUssUUFBUTtZQUNaLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sY0FBYyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDdEQsTUFBTTtRQUNQLEtBQUssbUJBQW1CO1lBQ3ZCLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUNyQixNQUFNLGNBQWMsS0FBSyxFQUN6QixNQUFNLGNBQWMsQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxLQUFLLENBQ2xELENBQUM7WUFDRixNQUFNO1FBQ1AsS0FBSyxrQkFBa0I7WUFDdEIsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxjQUFjLEtBQUssRUFBRSxjQUFjLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzFGLE1BQU07SUFDUixDQUFDO0lBRUQsT0FBTztRQUNOLFdBQVc7UUFDWCxjQUFjO1FBQ2QsT0FBTztLQUNQLENBQUM7QUFDSCxDQUFDIn0= \ No newline at end of file diff --git a/packages/commons/dist/lib/components.d.ts b/packages/commons/dist/lib/components.d.ts index 509db186..cb0ff5c3 100644 --- a/packages/commons/dist/lib/components.d.ts +++ b/packages/commons/dist/lib/components.d.ts @@ -1 +1 @@ -export {}; +export {}; diff --git a/packages/commons/dist/lib/components.js b/packages/commons/dist/lib/components.js index 5173acea..e8f500f0 100644 --- a/packages/commons/dist/lib/components.js +++ b/packages/commons/dist/lib/components.js @@ -1,2 +1,2 @@ -export {}; +export {}; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvY29tcG9uZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIn0= \ No newline at end of file diff --git a/packages/commons/dist/lib/fs.d.ts b/packages/commons/dist/lib/fs.d.ts index 1e9f7d1a..bf97a79b 100644 --- a/packages/commons/dist/lib/fs.d.ts +++ b/packages/commons/dist/lib/fs.d.ts @@ -1,2 +1,2 @@ -export declare const isFile: (src: string) => boolean; -export declare const isFolder: (src: string) => boolean; +export declare const isFile: (src: string) => boolean; +export declare const isFolder: (src: string) => boolean; diff --git a/packages/commons/dist/lib/fs.js b/packages/commons/dist/lib/fs.js index e2656cc2..b4e71bf0 100644 --- a/packages/commons/dist/lib/fs.js +++ b/packages/commons/dist/lib/fs.js @@ -1,18 +1,18 @@ -import * as fs from 'fs'; -export const isFile = (src) => { - let srcIsFile = false; - try { - srcIsFile = fs.lstatSync(src).isFile(); - } - catch (e) { } - return srcIsFile; -}; -export const isFolder = (src) => { - let srcIsFolder = false; - try { - srcIsFolder = fs.lstatSync(src).isDirectory(); - } - catch (e) { } - return srcIsFolder; -}; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL2ZzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFBO0FBRXhCLE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBRyxDQUFDLEdBQVcsRUFBRSxFQUFFO0lBQ2xDLElBQUksU0FBUyxHQUFHLEtBQUssQ0FBQztJQUN0QixJQUFJO1FBQ0EsU0FBUyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUE7S0FDekM7SUFBQyxPQUFPLENBQUMsRUFBRSxHQUFHO0lBQ2YsT0FBTyxTQUFTLENBQUE7QUFDcEIsQ0FBQyxDQUFBO0FBQ0QsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLENBQUMsR0FBVyxFQUFFLEVBQUU7SUFDcEMsSUFBSSxXQUFXLEdBQUcsS0FBSyxDQUFDO0lBQ3hCLElBQUk7UUFDQSxXQUFXLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQTtLQUNoRDtJQUFDLE9BQU8sQ0FBQyxFQUFFLEdBQUc7SUFDZixPQUFPLFdBQVcsQ0FBQztBQUN2QixDQUFDLENBQUEifQ== \ No newline at end of file +import * as fs from 'fs'; +export const isFile = (src) => { + let srcIsFile = false; + try { + srcIsFile = fs.lstatSync(src).isFile(); + } + catch (e) { } + return srcIsFile; +}; +export const isFolder = (src) => { + let srcIsFolder = false; + try { + srcIsFolder = fs.lstatSync(src).isDirectory(); + } + catch (e) { } + return srcIsFolder; +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL2ZzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFBO0FBRXhCLE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBRyxDQUFDLEdBQVcsRUFBRSxFQUFFO0lBQ2xDLElBQUksU0FBUyxHQUFHLEtBQUssQ0FBQztJQUN0QixJQUFJLENBQUM7UUFDRCxTQUFTLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQTtJQUMxQyxDQUFDO0lBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDZixPQUFPLFNBQVMsQ0FBQTtBQUNwQixDQUFDLENBQUE7QUFDRCxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsQ0FBQyxHQUFXLEVBQUUsRUFBRTtJQUNwQyxJQUFJLFdBQVcsR0FBRyxLQUFLLENBQUM7SUFDeEIsSUFBSSxDQUFDO1FBQ0QsV0FBVyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUE7SUFDakQsQ0FBQztJQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2YsT0FBTyxXQUFXLENBQUM7QUFDdkIsQ0FBQyxDQUFBIn0= \ No newline at end of file diff --git a/packages/commons/dist/lib/index.d.ts b/packages/commons/dist/lib/index.d.ts index c78ab911..43d0f579 100644 --- a/packages/commons/dist/lib/index.d.ts +++ b/packages/commons/dist/lib/index.d.ts @@ -1,2 +1,2 @@ -export * from './strings.js'; -export * from './fs.js'; +export * from './strings.js'; +export * from './fs.js'; diff --git a/packages/commons/dist/lib/index.js b/packages/commons/dist/lib/index.js index a5780b50..beb71543 100644 --- a/packages/commons/dist/lib/index.js +++ b/packages/commons/dist/lib/index.js @@ -1,3 +1,3 @@ -export * from './strings.js'; -export * from './fs.js'; +export * from './strings.js'; +export * from './fs.js'; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsY0FBYyxDQUFBO0FBQzVCLGNBQWMsU0FBUyxDQUFBIn0= \ No newline at end of file diff --git a/packages/commons/dist/lib/strings.d.ts b/packages/commons/dist/lib/strings.d.ts index e4bc12a9..f16aa5f9 100644 --- a/packages/commons/dist/lib/strings.d.ts +++ b/packages/commons/dist/lib/strings.d.ts @@ -1,3 +1,3 @@ -export declare const regexExEmojis: RegExp; -export declare const regexExEmojis2: RegExp; -export declare const regexExEmojis3: RegExp; +export declare const regexExEmojis: RegExp; +export declare const regexExEmojis2: RegExp; +export declare const regexExEmojis3: RegExp; diff --git a/packages/commons/dist/lib/strings.js b/packages/commons/dist/lib/strings.js index 64d8fea0..a4e2a289 100644 --- a/packages/commons/dist/lib/strings.js +++ b/packages/commons/dist/lib/strings.js @@ -1,7 +1,7 @@ -export const regexExEmojis = /((?:\ud83c\udde8\ud83c\uddf3|\ud83c\uddfa\ud83c\uddf8|\ud83c\uddf7\ud83c\uddfa|\ud83c\uddf0\ud83c\uddf7|\ud83c\uddef\ud83c\uddf5|\ud83c\uddee\ud83c\uddf9|\ud83c\uddec\ud83c\udde7|\ud83c\uddeb\ud83c\uddf7|\ud83c\uddea\ud83c\uddf8|\ud83c\udde9\ud83c\uddea|\u0039\ufe0f?\u20e3|\u0038\ufe0f?\u20e3|\u0037\ufe0f?\u20e3|\u0036\ufe0f?\u20e3|\u0035\ufe0f?\u20e3|\u0034\ufe0f?\u20e3|\u0033\ufe0f?\u20e3|\u0032\ufe0f?\u20e3|\u0031\ufe0f?\u20e3|\u0030\ufe0f?\u20e3|\u0023\ufe0f?\u20e3|\ud83d\udeb3|\ud83d\udeb1|\ud83d\udeb0|\ud83d\udeaf|\ud83d\udeae|\ud83d\udea6|\ud83d\udea3|\ud83d\udea1|\ud83d\udea0|\ud83d\ude9f|\ud83d\ude9e|\ud83d\ude9d|\ud83d\ude9c|\ud83d\ude9b|\ud83d\ude98|\ud83d\ude96|\ud83d\ude94|\ud83d\ude90|\ud83d\ude8e|\ud83d\ude8d|\ud83d\ude8b|\ud83d\ude8a|\ud83d\ude88|\ud83d\ude86|\ud83d\ude82|\ud83d\ude81|\ud83d\ude36|\ud83d\ude34|\ud83d\ude2f|\ud83d\ude2e|\ud83d\ude2c|\ud83d\ude27|\ud83d\ude26|\ud83d\ude1f|\ud83d\ude1b|\ud83d\ude19|\ud83d\ude17|\ud83d\ude15|\ud83d\ude11|\ud83d\ude10|\ud83d\ude0e|\ud83d\ude08|\ud83d\ude07|\ud83d\ude00|\ud83d\udd67|\ud83d\udd66|\ud83d\udd65|\ud83d\udd64|\ud83d\udd63|\ud83d\udd62|\ud83d\udd61|\ud83d\udd60|\ud83d\udd5f|\ud83d\udd5e|\ud83d\udd5d|\ud83d\udd5c|\ud83d\udd2d|\ud83d\udd2c|\ud83d\udd15|\ud83d\udd09|\ud83d\udd08|\ud83d\udd07|\ud83d\udd06|\ud83d\udd05|\ud83d\udd04|\ud83d\udd02|\ud83d\udd01|\ud83d\udd00|\ud83d\udcf5|\ud83d\udcef|\ud83d\udced|\ud83d\udcec|\ud83d\udcb7|\ud83d\udcb6|\ud83d\udcad|\ud83d\udc6d|\ud83d\udc6c|\ud83d\udc65|\ud83d\udc2a|\ud83d\udc16|\ud83d\udc15|\ud83d\udc13|\ud83d\udc10|\ud83d\udc0f|\ud83d\udc0b|\ud83d\udc0a|\ud83d\udc09|\ud83d\udc08|\ud83d\udc07|\ud83d\udc06|\ud83d\udc05|\ud83d\udc04|\ud83d\udc03|\ud83d\udc02|\ud83d\udc01|\ud83d\udc00|\ud83c\udfe4|\ud83c\udfc9|\ud83c\udfc7|\ud83c\udf7c|\ud83c\udf50|\ud83c\udf4b|\ud83c\udf33|\ud83c\udf32|\ud83c\udf1e|\ud83c\udf1d|\ud83c\udf1c|\ud83c\udf1a|\ud83c\udf18|\ud83c\udccf|\ud83c\udd8e|\ud83c\udd91|\ud83c\udd92|\ud83c\udd93|\ud83c\udd94|\ud83c\udd95|\ud83c\udd96|\ud83c\udd97|\ud83c\udd98|\ud83c\udd99|\ud83c\udd9a|\ud83d\udc77|\ud83d\udec5|\ud83d\udec4|\ud83d\udec3|\ud83d\udec2|\ud83d\udec1|\ud83d\udebf|\ud83d\udeb8|\ud83d\udeb7|\ud83d\udeb5|\ud83c\ude01|\ud83c\ude32|\ud83c\ude33|\ud83c\ude34|\ud83c\ude35|\ud83c\ude36|\ud83c\ude38|\ud83c\ude39|\ud83c\ude3a|\ud83c\ude50|\ud83c\ude51|\ud83c\udf00|\ud83c\udf01|\ud83c\udf02|\ud83c\udf03|\ud83c\udf04|\ud83c\udf05|\ud83c\udf06|\ud83c\udf07|\ud83c\udf08|\ud83c\udf09|\ud83c\udf0a|\ud83c\udf0b|\ud83c\udf0c|\ud83c\udf0f|\ud83c\udf11|\ud83c\udf13|\ud83c\udf14|\ud83c\udf15|\ud83c\udf19|\ud83c\udf1b|\ud83c\udf1f|\ud83c\udf20|\ud83c\udf30|\ud83c\udf31|\ud83c\udf34|\ud83c\udf35|\ud83c\udf37|\ud83c\udf38|\ud83c\udf39|\ud83c\udf3a|\ud83c\udf3b|\ud83c\udf3c|\ud83c\udf3d|\ud83c\udf3e|\ud83c\udf3f|\ud83c\udf40|\ud83c\udf41|\ud83c\udf42|\ud83c\udf43|\ud83c\udf44|\ud83c\udf45|\ud83c\udf46|\ud83c\udf47|\ud83c\udf48|\ud83c\udf49|\ud83c\udf4a|\ud83c\udf4c|\ud83c\udf4d|\ud83c\udf4e|\ud83c\udf4f|\ud83c\udf51|\ud83c\udf52|\ud83c\udf53|\ud83c\udf54|\ud83c\udf55|\ud83c\udf56|\ud83c\udf57|\ud83c\udf58|\ud83c\udf59|\ud83c\udf5a|\ud83c\udf5b|\ud83c\udf5c|\ud83c\udf5d|\ud83c\udf5e|\ud83c\udf5f|\ud83c\udf60|\ud83c\udf61|\ud83c\udf62|\ud83c\udf63|\ud83c\udf64|\ud83c\udf65|\ud83c\udf66|\ud83c\udf67|\ud83c\udf68|\ud83c\udf69|\ud83c\udf6a|\ud83c\udf6b|\ud83c\udf6c|\ud83c\udf6d|\ud83c\udf6e|\ud83c\udf6f|\ud83c\udf70|\ud83c\udf71|\ud83c\udf72|\ud83c\udf73|\ud83c\udf74|\ud83c\udf75|\ud83c\udf76|\ud83c\udf77|\ud83c\udf78|\ud83c\udf79|\ud83c\udf7a|\ud83c\udf7b|\ud83c\udf80|\ud83c\udf81|\ud83c\udf82|\ud83c\udf83|\ud83c\udf84|\ud83c\udf85|\ud83c\udf86|\ud83c\udf87|\ud83c\udf88|\ud83c\udf89|\ud83c\udf8a|\ud83c\udf8b|\ud83c\udf8c|\ud83c\udf8d|\ud83c\udf8e|\ud83c\udf8f|\ud83c\udf90|\ud83c\udf91|\ud83c\udf92|\ud83c\udf93|\ud83c\udfa0|\ud83c\udfa1|\ud83c\udfa2|\ud83c\udfa3|\ud83c\udfa4|\ud83c\udfa5|\ud83c\udfa6|\ud83c\udfa7|\ud83c\udfa8|\ud83c\udfa9|\ud83c\udfaa|\ud83c\udfab|\ud83c\udfac|\ud83c\udfad|\ud83c\udfae|\ud83c\udfaf|\ud83c\udfb0|\ud83c\udfb1|\ud83c\udfb2|\ud83c\udfb3|\ud83c\udfb4|\ud83c\udfb5|\ud83c\udfb6|\ud83c\udfb7|\ud83c\udfb8|\ud83c\udfb9|\ud83c\udfba|\ud83c\udfbb|\ud83c\udfbc|\ud83c\udfbd|\ud83c\udfbe|\ud83c\udfbf|\ud83c\udfc0|\ud83c\udfc1|\ud83c\udfc2|\ud83c\udfc3|\ud83c\udfc4|\ud83c\udfc6|\ud83c\udfc8|\ud83c\udfca|\ud83c\udfe0|\ud83c\udfe1|\ud83c\udfe2|\ud83c\udfe3|\ud83c\udfe5|\ud83c\udfe6|\ud83c\udfe7|\ud83c\udfe8|\ud83c\udfe9|\ud83c\udfea|\ud83c\udfeb|\ud83c\udfec|\ud83c\udfed|\ud83c\udfee|\ud83c\udfef|\ud83c\udff0|\ud83d\udc0c|\ud83d\udc0d|\ud83d\udc0e|\ud83d\udc11|\ud83d\udc12|\ud83d\udc14|\ud83d\udc17|\ud83d\udc18|\ud83d\udc19|\ud83d\udc1a|\ud83d\udc1b|\ud83d\udc1c|\ud83d\udc1d|\ud83d\udc1e|\ud83d\udc1f|\ud83d\udc20|\ud83d\udc21|\ud83d\udc22|\ud83d\udc23|\ud83d\udc24|\ud83d\udc25|\ud83d\udc26|\ud83d\udc27|\ud83d\udc28|\ud83d\udc29|\ud83d\udc2b|\ud83d\udc2c|\ud83d\udc2d|\ud83d\udc2e|\ud83d\udc2f|\ud83d\udc30|\ud83d\udc31|\ud83d\udc32|\ud83d\udc33|\ud83d\udc34|\ud83d\udc35|\ud83d\udc36|\ud83d\udc37|\ud83d\udc38|\ud83d\udc39|\ud83d\udc3a|\ud83d\udc3b|\ud83d\udc3c|\ud83d\udc3d|\ud83d\udc3e|\ud83d\udc40|\ud83d\udc42|\ud83d\udc43|\ud83d\udc44|\ud83d\udc45|\ud83d\udc46|\ud83d\udc47|\ud83d\udc48|\ud83d\udc49|\ud83d\udc4a|\ud83d\udc4b|\ud83d\udc4c|\ud83d\udc4d|\ud83d\udc4e|\ud83d\udc4f|\ud83d\udc50|\ud83d\udc51|\ud83d\udc52|\ud83d\udc53|\ud83d\udc54|\ud83d\udc55|\ud83d\udc56|\ud83d\udc57|\ud83d\udc58|\ud83d\udc59|\ud83d\udc5a|\ud83d\udc5b|\ud83d\udc5c|\ud83d\udc5d|\ud83d\udc5e|\ud83d\udc5f|\ud83d\udc60|\ud83d\udc61|\ud83d\udc62|\ud83d\udc63|\ud83d\udc64|\ud83d\udc66|\ud83d\udc67|\ud83d\udc68|\ud83d\udc69|\ud83d\udc6a|\ud83d\udc6b|\ud83d\udc6e|\ud83d\udc6f|\ud83d\udc70|\ud83d\udc71|\ud83d\udc72|\ud83d\udc73|\ud83d\udc74|\ud83d\udc75|\ud83d\udc76|\ud83d\udeb4|\ud83d\udc78|\ud83d\udc79|\ud83d\udc7a|\ud83d\udc7b|\ud83d\udc7c|\ud83d\udc7d|\ud83d\udc7e|\ud83d\udc7f|\ud83d\udc80|\ud83d\udc81|\ud83d\udc82|\ud83d\udc83|\ud83d\udc84|\ud83d\udc85|\ud83d\udc86|\ud83d\udc87|\ud83d\udc88|\ud83d\udc89|\ud83d\udc8a|\ud83d\udc8b|\ud83d\udc8c|\ud83d\udc8d|\ud83d\udc8e|\ud83d\udc8f|\ud83d\udc90|\ud83d\udc91|\ud83d\udc92|\ud83d\udc93|\ud83d\udc94|\ud83d\udc95|\ud83d\udc96|\ud83d\udc97|\ud83d\udc98|\ud83d\udc99|\ud83d\udc9a|\ud83d\udc9b|\ud83d\udc9c|\ud83d\udc9d|\ud83d\udc9e|\ud83d\udc9f|\ud83d\udca0|\ud83d\udca1|\ud83d\udca2|\ud83d\udca3|\ud83d\udca4|\ud83d\udca5|\ud83d\udca6|\ud83d\udca7|\ud83d\udca8|\ud83d\udca9|\ud83d\udcaa|\ud83d\udcab|\ud83d\udcac|\ud83d\udcae|\ud83d\udcaf|\ud83d\udcb0|\ud83d\udcb1|\ud83d\udcb2|\ud83d\udcb3|\ud83d\udcb4|\ud83d\udcb5|\ud83d\udcb8|\ud83d\udcb9|\ud83d\udcba|\ud83d\udcbb|\ud83d\udcbc|\ud83d\udcbd|\ud83d\udcbe|\ud83d\udcbf|\ud83d\udcc0|\ud83d\udcc1|\ud83d\udcc2|\ud83d\udcc3|\ud83d\udcc4|\ud83d\udcc5|\ud83d\udcc6|\ud83d\udcc7|\ud83d\udcc8|\ud83d\udcc9|\ud83d\udcca|\ud83d\udccb|\ud83d\udccc|\ud83d\udccd|\ud83d\udcce|\ud83d\udccf|\ud83d\udcd0|\ud83d\udcd1|\ud83d\udcd2|\ud83d\udcd3|\ud83d\udcd4|\ud83d\udcd5|\ud83d\udcd6|\ud83d\udcd7|\ud83d\udcd8|\ud83d\udcd9|\ud83d\udcda|\ud83d\udcdb|\ud83d\udcdc|\ud83d\udcdd|\ud83d\udcde|\ud83d\udcdf|\ud83d\udce0|\ud83d\udce1|\ud83d\udce2|\ud83d\udce3|\ud83d\udce4|\ud83d\udce5|\ud83d\udce6|\ud83d\udce7|\ud83d\udce8|\ud83d\udce9|\ud83d\udcea|\ud83d\udceb|\ud83d\udcee|\ud83d\udcf0|\ud83d\udcf1|\ud83d\udcf2|\ud83d\udcf3|\ud83d\udcf4|\ud83d\udcf6|\ud83d\udcf7|\ud83d\udcf9|\ud83d\udcfa|\ud83d\udcfb|\ud83d\udcfc|\ud83d\udd03|\ud83d\udd0a|\ud83d\udd0b|\ud83d\udd0c|\ud83d\udd0d|\ud83d\udd0e|\ud83d\udd0f|\ud83d\udd10|\ud83d\udd11|\ud83d\udd12|\ud83d\udd13|\ud83d\udd14|\ud83d\udd16|\ud83d\udd17|\ud83d\udd18|\ud83d\udd19|\ud83d\udd1a|\ud83d\udd1b|\ud83d\udd1c|\ud83d\udd1d|\ud83d\udd1e|\ud83d\udd1f|\ud83d\udd20|\ud83d\udd21|\ud83d\udd22|\ud83d\udd23|\ud83d\udd24|\ud83d\udd25|\ud83d\udd26|\ud83d\udd27|\ud83d\udd28|\ud83d\udd29|\ud83d\udd2a|\ud83d\udd2b|\ud83d\udd2e|\ud83d\udd2f|\ud83d\udd30|\ud83d\udd31|\ud83d\udd32|\ud83d\udd33|\ud83d\udd34|\ud83d\udd35|\ud83d\udd36|\ud83d\udd37|\ud83d\udd38|\ud83d\udd39|\ud83d\udd3a|\ud83d\udd3b|\ud83d\udd3c|\ud83d\udd3d|\ud83d\udd50|\ud83d\udd51|\ud83d\udd52|\ud83d\udd53|\ud83d\udd54|\ud83d\udd55|\ud83d\udd56|\ud83d\udd57|\ud83d\udd58|\ud83d\udd59|\ud83d\udd5a|\ud83d\udd5b|\ud83d\uddfb|\ud83d\uddfc|\ud83d\uddfd|\ud83d\uddfe|\ud83d\uddff|\ud83d\ude01|\ud83d\ude02|\ud83d\ude03|\ud83d\ude04|\ud83d\ude05|\ud83d\ude06|\ud83d\ude09|\ud83d\ude0a|\ud83d\ude0b|\ud83d\ude0c|\ud83d\ude0d|\ud83d\ude0f|\ud83d\ude12|\ud83d\ude13|\ud83d\ude14|\ud83d\ude16|\ud83d\ude18|\ud83d\ude1a|\ud83d\ude1c|\ud83d\ude1d|\ud83d\ude1e|\ud83d\ude20|\ud83d\ude21|\ud83d\ude22|\ud83d\ude23|\ud83d\ude24|\ud83d\ude25|\ud83d\ude28|\ud83d\ude29|\ud83d\ude2a|\ud83d\ude2b|\ud83d\ude2d|\ud83d\ude30|\ud83d\ude31|\ud83d\ude32|\ud83d\ude33|\ud83d\ude35|\ud83d\ude37|\ud83d\ude38|\ud83d\ude39|\ud83d\ude3a|\ud83d\ude3b|\ud83d\ude3c|\ud83d\ude3d|\ud83d\ude3e|\ud83d\ude3f|\ud83d\ude40|\ud83d\ude45|\ud83d\ude46|\ud83d\ude47|\ud83d\ude48|\ud83d\ude49|\ud83d\ude4a|\ud83d\ude4b|\ud83d\ude4c|\ud83d\ude4d|\ud83d\ude4e|\ud83d\ude4f|\ud83d\ude80|\ud83d\ude83|\ud83d\ude84|\ud83d\ude85|\ud83d\ude87|\ud83d\ude89|\ud83d\ude8c|\ud83d\ude8f|\ud83d\ude91|\ud83d\ude92|\ud83d\ude93|\ud83d\ude95|\ud83d\ude97|\ud83d\ude99|\ud83d\ude9a|\ud83d\udea2|\ud83d\udea4|\ud83d\udea5|\ud83d\udea7|\ud83d\udea8|\ud83d\udea9|\ud83d\udeaa|\ud83d\udeab|\ud83d\udeac|\ud83d\udead|\ud83d\udeb2|\ud83d\udeb6|\ud83d\udeb9|\ud83d\udeba|\ud83d\udebb|\ud83d\udebc|\ud83d\udebd|\ud83d\udebe|\ud83d\udec0|\ud83c\udde6|\ud83c\udde7|\ud83c\udde8|\ud83c\udde9|\ud83c\uddea|\ud83c\uddeb|\ud83c\uddec|\ud83c\udded|\ud83c\uddee|\ud83c\uddef|\ud83c\uddf0|\ud83c\uddf1|\ud83c\uddf2|\ud83c\uddf3|\ud83c\uddf4|\ud83c\uddf5|\ud83c\uddf6|\ud83c\uddf7|\ud83c\uddf8|\ud83c\uddf9|\ud83c\uddfa|\ud83c\uddfb|\ud83c\uddfc|\ud83c\uddfd|\ud83c\uddfe|\ud83c\uddff|\ud83c\udf0d|\ud83c\udf0e|\ud83c\udf10|\ud83c\udf12|\ud83c\udf16|\ud83c\udf17|\ue50a|\u27b0|\u2797|\u2796|\u2795|\u2755|\u2754|\u2753|\u274e|\u274c|\u2728|\u270b|\u270a|\u2705|\u26ce|\u23f3|\u23f0|\u23ec|\u23eb|\u23ea|\u23e9|\u27bf|\u00a9|\u00ae)|(?:(?:\ud83c\udc04|\ud83c\udd70|\ud83c\udd71|\ud83c\udd7e|\ud83c\udd7f|\ud83c\ude02|\ud83c\ude1a|\ud83c\ude2f|\ud83c\ude37|\u3299|\u303d|\u3030|\u2b55|\u2b50|\u2b1c|\u2b1b|\u2b07|\u2b06|\u2b05|\u2935|\u2934|\u27a1|\u2764|\u2757|\u2747|\u2744|\u2734|\u2733|\u2716|\u2714|\u2712|\u270f|\u270c|\u2709|\u2708|\u2702|\u26fd|\u26fa|\u26f5|\u26f3|\u26f2|\u26ea|\u26d4|\u26c5|\u26c4|\u26be|\u26bd|\u26ab|\u26aa|\u26a1|\u26a0|\u2693|\u267f|\u267b|\u3297|\u2666|\u2665|\u2663|\u2660|\u2653|\u2652|\u2651|\u2650|\u264f|\u264e|\u264d|\u264c|\u264b|\u264a|\u2649|\u2648|\u263a|\u261d|\u2615|\u2614|\u2611|\u260e|\u2601|\u2600|\u25fe|\u25fd|\u25fc|\u25fb|\u25c0|\u25b6|\u25ab|\u25aa|\u24c2|\u231b|\u231a|\u21aa|\u21a9|\u2199|\u2198|\u2197|\u2196|\u2195|\u2194|\u2139|\u2122|\u2049|\u203c|\u2668)([\uFE0E\uFE0F]?)))/g; -// Alternative syntax using RegExp constructor -export const regexExEmojis2 = new RegExp('((?:\\ud83c\\udde8\\ud83c\\uddf3|\\ud83c\\uddfa\\ud83c\\uddf8|\\ud83c\\uddf7\\ud83c\\uddfa|\\ud83c\\uddf0\\ud83c\\uddf7|\\ud83c\\uddef\\ud83c\\uddf5|\\ud83c\\uddee\\ud83c\\uddf9|\\ud83c\\uddec\\ud83c\\udde7|\\ud83c\\uddeb\\ud83c\\uddf7|\\ud83c\\uddea\\ud83c\\uddf8|\\ud83c\\udde9\\ud83c\\uddea|\\u0039\\ufe0f?\\u20e3|\\u0038\\ufe0f?\\u20e3|\\u0037\\ufe0f?\\u20e3|\\u0036\\ufe0f?\\u20e3|\\u0035\\ufe0f?\\u20e3|\\u0034\\ufe0f?\\u20e3|\\u0033\\ufe0f?\\u20e3|\\u0032\\ufe0f?\\u20e3|\\u0031\\ufe0f?\\u20e3|\\u0030\\ufe0f?\\u20e3|\\u0023\\ufe0f?\\u20e3|\\ud83d\\udeb3|\\ud83d\\udeb1|\\ud83d\\udeb0|\\ud83d\\udeaf|\\ud83d\\udeae|\\ud83d\\udea6|\\ud83d\\udea3|\\ud83d\\udea1|\\ud83d\\udea0|\\ud83d\\ude9f|\\ud83d\\ude9e|\\ud83d\\ude9d|\\ud83d\\ude9c|\\ud83d\\ude9b|\\ud83d\\ude98|\\ud83d\\ude96|\\ud83d\\ude94|\\ud83d\\ude90|\\ud83d\\ude8e|\\ud83d\\ude8d|\\ud83d\\ude8b|\\ud83d\\ude8a|\\ud83d\\ude88|\\ud83d\\ude86|\\ud83d\\ude82|\\ud83d\\ude81|\\ud83d\\ude36|\\ud83d\\ude34|\\ud83d\\ude2f|\\ud83d\\ude2e|\\ud83d\\ude2c|\\ud83d\\ude27|\\ud83d\\ude26|\\ud83d\\ude1f|\\ud83d\\ude1b|\\ud83d\\ude19|\\ud83d\\ude17|\\ud83d\\ude15|\\ud83d\\ude11|\\ud83d\\ude10|\\ud83d\\ude0e|\\ud83d\\ude08|\\ud83d\\ude07|\\ud83d\\ude00|\\ud83d\\udd67|\\ud83d\\udd66|\\ud83d\\udd65|\\ud83d\\udd64|\\ud83d\\udd63|\\ud83d\\udd62|\\ud83d\\udd61|\\ud83d\\udd60|\\ud83d\\udd5f|\\ud83d\\udd5e|\\ud83d\\udd5d|\\ud83d\\udd5c|\\ud83d\\udd2d|\\ud83d\\udd2c|\\ud83d\\udd15|\\ud83d\\udd09|\\ud83d\\udd08|\\ud83d\\udd07|\\ud83d\\udd06|\\ud83d\\udd05|\\ud83d\\udd04|\\ud83d\\udd02|\\ud83d\\udd01|\\ud83d\\udd00|\\ud83d\\udcf5|\\ud83d\\udcef|\\ud83d\\udced|\\ud83d\\udcec|\\ud83d\\udcb7|\\ud83d\\udcb6|\\ud83d\\udcad|\\ud83d\\udc6d|\\ud83d\\udc6c|\\ud83d\\udc65|\\ud83d\\udc2a|\\ud83d\\udc16|\\ud83d\\udc15|\\ud83d\\udc13|\\ud83d\\udc10|\\ud83d\\udc0f|\\ud83d\\udc0b|\\ud83d\\udc0a|\\ud83d\\udc09|\\ud83d\\udc08|\\ud83d\\udc07|\\ud83d\\udc06|\\ud83d\\udc05|\\ud83d\\udc04|\\ud83d\\udc03|\\ud83d\\udc02|\\ud83d\\udc01|\\ud83d\\udc00|\\ud83c\\udfe4|\\ud83c\\udfc9|\\ud83c\\udfc7|\\ud83c\\udf7c|\\ud83c\\udf50|\\ud83c\\udf4b|\\ud83c\\udf33|\\ud83c\\udf32|\\ud83c\\udf1e|\\ud83c\\udf1d|\\ud83c\\udf1c|\\ud83c\\udf1a|\\ud83c\\udf18|\\ud83c\\udccf|\\ud83c\\udd8e|\\ud83c\\udd91|\\ud83c\\udd92|\\ud83c\\udd93|\\ud83c\\udd94|\\ud83c\\udd95|\\ud83c\\udd96|\\ud83c\\udd97|\\ud83c\\udd98|\\ud83c\\udd99|\\ud83c\\udd9a|\\ud83d\\udc77|\\ud83d\\udec5|\\ud83d\\udec4|\\ud83d\\udec3|\\ud83d\\udec2|\\ud83d\\udec1|\\ud83d\\udebf|\\ud83d\\udeb8|\\ud83d\\udeb7|\\ud83d\\udeb5|\\ud83c\\ude01|\\ud83c\\ude32|\\ud83c\\ude33|\\ud83c\\ude34|\\ud83c\\ude35|\\ud83c\\ude36|\\ud83c\\ude38|\\ud83c\\ude39|\\ud83c\\ude3a|\\ud83c\\ude50|\\ud83c\\ude51|\\ud83c\\udf00|\\ud83c\\udf01|\\ud83c\\udf02|\\ud83c\\udf03|\\ud83c\\udf04|\\ud83c\\udf05|\\ud83c\\udf06|\\ud83c\\udf07|\\ud83c\\udf08|\\ud83c\\udf09|\\ud83c\\udf0a|\\ud83c\\udf0b|\\ud83c\\udf0c|\\ud83c\\udf0f|\\ud83c\\udf11|\\ud83c\\udf13|\\ud83c\\udf14|\\ud83c\\udf15|\\ud83c\\udf19|\\ud83c\\udf1b|\\ud83c\\udf1f|\\ud83c\\udf20|\\ud83c\\udf30|\\ud83c\\udf31|\\ud83c\\udf34|\\ud83c\\udf35|\\ud83c\\udf37|\\ud83c\\udf38|\\ud83c\\udf39|\\ud83c\\udf3a|\\ud83c\\udf3b|\\ud83c\\udf3c|\\ud83c\\udf3d|\\ud83c\\udf3e|\\ud83c\\udf3f|\\ud83c\\udf40|\\ud83c\\udf41|\\ud83c\\udf42|\\ud83c\\udf43|\\ud83c\\udf44|\\ud83c\\udf45|\\ud83c\\udf46|\\ud83c\\udf47|\\ud83c\\udf48|\\ud83c\\udf49|\\ud83c\\udf4a|\\ud83c\\udf4c|\\ud83c\\udf4d|\\ud83c\\udf4e|\\ud83c\\udf4f|\\ud83c\\udf51|\\ud83c\\udf52|\\ud83c\\udf53|\\ud83c\\udf54|\\ud83c\\udf55|\\ud83c\\udf56|\\ud83c\\udf57|\\ud83c\\udf58|\\ud83c\\udf59|\\ud83c\\udf5a|\\ud83c\\udf5b|\\ud83c\\udf5c|\\ud83c\\udf5d|\\ud83c\\udf5e|\\ud83c\\udf5f|\\ud83c\\udf60|\\ud83c\\udf61|\\ud83c\\udf62|\\ud83c\\udf63|\\ud83c\\udf64|\\ud83c\\udf65|\\ud83c\\udf66|\\ud83c\\udf67|\\ud83c\\udf68|\\ud83c\\udf69|\\ud83c\\udf6a|\\ud83c\\udf6b|\\ud83c\\udf6c|\\ud83c\\udf6d|\\ud83c\\udf6e|\\ud83c\\udf6f|\\ud83c\\udf70|\\ud83c\\udf71|\\ud83c\\udf72|\\ud83c\\udf73|\\ud83c\\udf74|\\ud83c\\udf75|\\ud83c\\udf76|\\ud83c\\udf77|\\ud83c\\udf78|\\ud83c\\udf79|\\ud83c\\udf7a|\\ud83c\\udf7b|\\ud83c\\udf80|\\ud83c\\udf81|\\ud83c\\udf82|\\ud83c\\udf83|\\ud83c\\udf84|\\ud83c\\udf85|\\ud83c\\udf86|\\ud83c\\udf87|\\ud83c\\udf88|\\ud83c\\udf89|\\ud83c\\udf8a|\\ud83c\\udf8b|\\ud83c\\udf8c|\\ud83c\\udf8d|\\ud83c\\udf8e|\\ud83c\\udf8f|\\ud83c\\udf90|\\ud83c\\udf91|\\ud83c\\udf92|\\ud83c\\udf93|\\ud83c\\udfa0|\\ud83c\\udfa1|\\ud83c\\udfa2|\\ud83c\\udfa3|\\ud83c\\udfa4|\\ud83c\\udfa5|\\ud83c\\udfa6|\\ud83c\\udfa7|\\ud83c\\udfa8|\\ud83c\\udfa9|\\ud83c\\udfaa|\\ud83c\\udfab|\\ud83c\\udfac|\\ud83c\\udfad|\\ud83c\\udfae|\\ud83c\\udfaf|\\ud83c\\udfb0|\\ud83c\\udfb1|\\ud83c\\udfb2|\\ud83c\\udfb3|\\ud83c\\udfb4|\\ud83c\\udfb5|\\ud83c\\udfb6|\\ud83c\\udfb7|\\ud83c\\udfb8|\\ud83c\\udfb9|\\ud83c\\udfba|\\ud83c\\udfbb|\\ud83c\\udfbc|\\ud83c\\udfbd|\\ud83c\\udfbe|\\ud83c\\udfbf|\\ud83c\\udfc0|\\ud83c\\udfc1|\\ud83c\\udfc2|\\ud83c\\udfc3|\\ud83c\\udfc4|\\ud83c\\udfc6|\\ud83c\\udfc8|\\ud83c\\udfca|\\ud83c\\udfe0|\\ud83c\\udfe1|\\ud83c\\udfe2|\\ud83c\\udfe3|\\ud83c\\udfe5|\\ud83c\\udfe6|\\ud83c\\udfe7|\\ud83c\\udfe8|\\ud83c\\udfe9|\\ud83c\\udfea|\\ud83c\\udfeb|\\ud83c\\udfec|\\ud83c\\udfed|\\ud83c\\udfee|\\ud83c\\udfef|\\ud83c\\udff0|\\ud83d\\udc0c|\\ud83d\\udc0d|\\ud83d\\udc0e|\\ud83d\\udc11|\\ud83d\\udc12|\\ud83d\\udc14|\\ud83d\\udc17|\\ud83d\\udc18|\\ud83d\\udc19|\\ud83d\\udc1a|\\ud83d\\udc1b|\\ud83d\\udc1c|\\ud83d\\udc1d|\\ud83d\\udc1e|\\ud83d\\udc1f|\\ud83d\\udc20|\\ud83d\\udc21|\\ud83d\\udc22|\\ud83d\\udc23|\\ud83d\\udc24|\\ud83d\\udc25|\\ud83d\\udc26|\\ud83d\\udc27|\\ud83d\\udc28|\\ud83d\\udc29|\\ud83d\\udc2b|\\ud83d\\udc2c|\\ud83d\\udc2d|\\ud83d\\udc2e|\\ud83d\\udc2f|\\ud83d\\udc30|\\ud83d\\udc31|\\ud83d\\udc32|\\ud83d\\udc33|\\ud83d\\udc34|\\ud83d\\udc35|\\ud83d\\udc36|\\ud83d\\udc37|\\ud83d\\udc38|\\ud83d\\udc39|\\ud83d\\udc3a|\\ud83d\\udc3b|\\ud83d\\udc3c|\\ud83d\\udc3d|\\ud83d\\udc3e|\\ud83d\\udc40|\\ud83d\\udc42|\\ud83d\\udc43|\\ud83d\\udc44|\\ud83d\\udc45|\\ud83d\\udc46|\\ud83d\\udc47|\\ud83d\\udc48|\\ud83d\\udc49|\\ud83d\\udc4a|\\ud83d\\udc4b|\\ud83d\\udc4c|\\ud83d\\udc4d|\\ud83d\\udc4e|\\ud83d\\udc4f|\\ud83d\\udc50|\\ud83d\\udc51|\\ud83d\\udc52|\\ud83d\\udc53|\\ud83d\\udc54|\\ud83d\\udc55|\\ud83d\\udc56|\\ud83d\\udc57|\\ud83d\\udc58|\\ud83d\\udc59|\\ud83d\\udc5a|\\ud83d\\udc5b|\\ud83d\\udc5c|\\ud83d\\udc5d|\\ud83d\\udc5e|\\ud83d\\udc5f|\\ud83d\\udc60|\\ud83d\\udc61|\\ud83d\\udc62|\\ud83d\\udc63|\\ud83d\\udc64|\\ud83d\\udc66|\\ud83d\\udc67|\\ud83d\\udc68|\\ud83d\\udc69|\\ud83d\\udc6a|\\ud83d\\udc6b|\\ud83d\\udc6e|\\ud83d\\udc6f|\\ud83d\\udc70|\\ud83d\\udc71|\\ud83d\\udc72|\\ud83d\\udc73|\\ud83d\\udc74|\\ud83d\\udc75|\\ud83d\\udc76|\\ud83d\\udeb4|\\ud83d\\udc78|\\ud83d\\udc79|\\ud83d\\udc7a|\\ud83d\\udc7b|\\ud83d\\udc7c|\\ud83d\\udc7d|\\ud83d\\udc7e|\\ud83d\\udc7f|\\ud83d\\udc80|\\ud83d\\udc81|\\ud83d\\udc82|\\ud83d\\udc83|\\ud83d\\udc84|\\ud83d\\udc85|\\ud83d\\udc86|\\ud83d\\udc87|\\ud83d\\udc88|\\ud83d\\udc89|\\ud83d\\udc8a|\\ud83d\\udc8b|\\ud83d\\udc8c|\\ud83d\\udc8d|\\ud83d\\udc8e|\\ud83d\\udc8f|\\ud83d\\udc90|\\ud83d\\udc91|\\ud83d\\udc92|\\ud83d\\udc93|\\ud83d\\udc94|\\ud83d\\udc95|\\ud83d\\udc96|\\ud83d\\udc97|\\ud83d\\udc98|\\ud83d\\udc99|\\ud83d\\udc9a|\\ud83d\\udc9b|\\ud83d\\udc9c|\\ud83d\\udc9d|\\ud83d\\udc9e|\\ud83d\\udc9f|\\ud83d\\udca0|\\ud83d\\udca1|\\ud83d\\udca2|\\ud83d\\udca3|\\ud83d\\udca4|\\ud83d\\udca5|\\ud83d\\udca6|\\ud83d\\udca7|\\ud83d\\udca8|\\ud83d\\udca9|\\ud83d\\udcaa|\\ud83d\\udcab|\\ud83d\\udcac|\\ud83d\\udcae|\\ud83d\\udcaf|\\ud83d\\udcb0|\\ud83d\\udcb1|\\ud83d\\udcb2|\\ud83d\\udcb3|\\ud83d\\udcb4|\\ud83d\\udcb5|\\ud83d\\udcb8|\\ud83d\\udcb9|\\ud83d\\udcba|\\ud83d\\udcbb|\\ud83d\\udcbc|\\ud83d\\udcbd|\\ud83d\\udcbe|\\ud83d\\udcbf|\\ud83d\\udcc0|\\ud83d\\udcc1|\\ud83d\\udcc2|\\ud83d\\udcc3|\\ud83d\\udcc4|\\ud83d\\udcc5|\\ud83d\\udcc6|\\ud83d\\udcc7|\\ud83d\\udcc8|\\ud83d\\udcc9|\\ud83d\\udcca|\\ud83d\\udccb|\\ud83d\\udccc|\\ud83d\\udccd|\\ud83d\\udcce|\\ud83d\\udccf|\\ud83d\\udcd0|\\ud83d\\udcd1|\\ud83d\\udcd2|\\ud83d\\udcd3|\\ud83d\\udcd4|\\ud83d\\udcd5|\\ud83d\\udcd6|\\ud83d\\udcd7|\\ud83d\\udcd8|\\ud83d\\udcd9|\\ud83d\\udcda|\\ud83d\\udcdb|\\ud83d\\udcdc|\\ud83d\\udcdd|\\ud83d\\udcde|\\ud83d\\udcdf|\\ud83d\\udce0|\\ud83d\\udce1|\\ud83d\\udce2|\\ud83d\\udce3|\\ud83d\\udce4|\\ud83d\\udce5|\\ud83d\\udce6|\\ud83d\\udce7|\\ud83d\\udce8|\\ud83d\\udce9|\\ud83d\\udcea|\\ud83d\\udceb|\\ud83d\\udcee|\\ud83d\\udcf0|\\ud83d\\udcf1|\\ud83d\\udcf2|\\ud83d\\udcf3|\\ud83d\\udcf4|\\ud83d\\udcf6|\\ud83d\\udcf7|\\ud83d\\udcf9|\\ud83d\\udcfa|\\ud83d\\udcfb|\\ud83d\\udcfc|\\ud83d\\udd03|\\ud83d\\udd0a|\\ud83d\\udd0b|\\ud83d\\udd0c|\\ud83d\\udd0d|\\ud83d\\udd0e|\\ud83d\\udd0f|\\ud83d\\udd10|\\ud83d\\udd11|\\ud83d\\udd12|\\ud83d\\udd13|\\ud83d\\udd14|\\ud83d\\udd16|\\ud83d\\udd17|\\ud83d\\udd18|\\ud83d\\udd19|\\ud83d\\udd1a|\\ud83d\\udd1b|\\ud83d\\udd1c|\\ud83d\\udd1d|\\ud83d\\udd1e|\\ud83d\\udd1f|\\ud83d\\udd20|\\ud83d\\udd21|\\ud83d\\udd22|\\ud83d\\udd23|\\ud83d\\udd24|\\ud83d\\udd25|\\ud83d\\udd26|\\ud83d\\udd27|\\ud83d\\udd28|\\ud83d\\udd29|\\ud83d\\udd2a|\\ud83d\\udd2b|\\ud83d\\udd2e|\\ud83d\\udd2f|\\ud83d\\udd30|\\ud83d\\udd31|\\ud83d\\udd32|\\ud83d\\udd33|\\ud83d\\udd34|\\ud83d\\udd35|\\ud83d\\udd36|\\ud83d\\udd37|\\ud83d\\udd38|\\ud83d\\udd39|\\ud83d\\udd3a|\\ud83d\\udd3b|\\ud83d\\udd3c|\\ud83d\\udd3d|\\ud83d\\udd50|\\ud83d\\udd51|\\ud83d\\udd52|\\ud83d\\udd53|\\ud83d\\udd54|\\ud83d\\udd55|\\ud83d\\udd56|\\ud83d\\udd57|\\ud83d\\udd58|\\ud83d\\udd59|\\ud83d\\udd5a|\\ud83d\\udd5b|\\ud83d\\uddfb|\\ud83d\\uddfc|\\ud83d\\uddfd|\\ud83d\\uddfe|\\ud83d\\uddff|\\ud83d\\ude01|\\ud83d\\ude02|\\ud83d\\ude03|\\ud83d\\ude04|\\ud83d\\ude05|\\ud83d\\ude06|\\ud83d\\ude09|\\ud83d\\ude0a|\\ud83d\\ude0b|\\ud83d\\ude0c|\\ud83d\\ude0d|\\ud83d\\ude0f|\\ud83d\\ude12|\\ud83d\\ude13|\\ud83d\\ude14|\\ud83d\\ude16|\\ud83d\\ude18|\\ud83d\\ude1a|\\ud83d\\ude1c|\\ud83d\\ude1d|\\ud83d\\ude1e|\\ud83d\\ude20|\\ud83d\\ude21|\\ud83d\\ude22|\\ud83d\\ude23|\\ud83d\\ude24|\\ud83d\\ude25|\\ud83d\\ude28|\\ud83d\\ude29|\\ud83d\\ude2a|\\ud83d\\ude2b|\\ud83d\\ude2d|\\ud83d\\ude30|\\ud83d\\ude31|\\ud83d\\ude32|\\ud83d\\ude33|\\ud83d\\ude35|\\ud83d\\ude37|\\ud83d\\ude38|\\ud83d\\ude39|\\ud83d\\ude3a|\\ud83d\\ude3b|\\ud83d\\ude3c|\\ud83d\\ude3d|\\ud83d\\ude3e|\\ud83d\\ude3f|\\ud83d\\ude40|\\ud83d\\ude45|\\ud83d\\ude46|\\ud83d\\ude47|\\ud83d\\ude48|\\ud83d\\ude49|\\ud83d\\ude4a|\\ud83d\\ude4b|\\ud83d\\ude4c|\\ud83d\\ude4d|\\ud83d\\ude4e|\\ud83d\\ude4f|\\ud83d\\ude80|\\ud83d\\ude83|\\ud83d\\ude84|\\ud83d\\ude85|\\ud83d\\ude87|\\ud83d\\ude89|\\ud83d\\ude8c|\\ud83d\\ude8f|\\ud83d\\ude91|\\ud83d\\ude92|\\ud83d\\ude93|\\ud83d\\ude95|\\ud83d\\ude97|\\ud83d\\ude99|\\ud83d\\ude9a|\\ud83d\\udea2|\\ud83d\\udea4|\\ud83d\\udea5|\\ud83d\\udea7|\\ud83d\\udea8|\\ud83d\\udea9|\\ud83d\\udeaa|\\ud83d\\udeab|\\ud83d\\udeac|\\ud83d\\udead|\\ud83d\\udeb2|\\ud83d\\udeb6|\\ud83d\\udeb9|\\ud83d\\udeba|\\ud83d\\udebb|\\ud83d\\udebc|\\ud83d\\udebd|\\ud83d\\udebe|\\ud83d\\udec0|\\ud83c\\udde6|\\ud83c\\udde7|\\ud83c\\udde8|\\ud83c\\udde9|\\ud83c\\uddea|\\ud83c\\uddeb|\\ud83c\\uddec|\\ud83c\\udded|\\ud83c\\uddee|\\ud83c\\uddef|\\ud83c\\uddf0|\\ud83c\\uddf1|\\ud83c\\uddf2|\\ud83c\\uddf3|\\ud83c\\uddf4|\\ud83c\\uddf5|\\ud83c\\uddf6|\\ud83c\\uddf7|\\ud83c\\uddf8|\\ud83c\\uddf9|\\ud83c\\uddfa|\\ud83c\\uddfb|\\ud83c\\uddfc|\\ud83c\\uddfd|\\ud83c\\uddfe|\\ud83c\\uddff|\\ud83c\\udf0d|\\ud83c\\udf0e|\\ud83c\\udf10|\\ud83c\\udf12|\\ud83c\\udf16|\\ud83c\\udf17|\\ue50a|\\u27b0|\\u2797|\\u2796|\\u2795|\\u2755|\\u2754|\\u2753|\\u274e|\\u274c|\\u2728|\\u270b|\\u270a|\\u2705|\\u26ce|\\u23f3|\\u23f0|\\u23ec|\\u23eb|\\u23ea|\\u23e9|\\u27bf|\\u00a9|\\u00ae)|(?:(?:\\ud83c\\udc04|\\ud83c\\udd70|\\ud83c\\udd71|\\ud83c\\udd7e|\\ud83c\\udd7f|\\ud83c\\ude02|\\ud83c\\ude1a|\\ud83c\\ude2f|\\ud83c\\ude37|\\u3299|\\u303d|\\u3030|\\u2b55|\\u2b50|\\u2b1c|\\u2b1b|\\u2b07|\\u2b06|\\u2b05|\\u2935|\\u2934|\\u27a1|\\u2764|\\u2757|\\u2747|\\u2744|\\u2734|\\u2733|\\u2716|\\u2714|\\u2712|\\u270f|\\u270c|\\u2709|\\u2708|\\u2702|\\u26fd|\\u26fa|\\u26f5|\\u26f3|\\u26f2|\\u26ea|\\u26d4|\\u26c5|\\u26c4|\\u26be|\\u26bd|\\u26ab|\\u26aa|\\u26a1|\\u26a0|\\u2693|\\u267f|\\u267b|\\u3297|\\u2666|\\u2665|\\u2663|\\u2660|\\u2653|\\u2652|\\u2651|\\u2650|\\u264f|\\u264e|\\u264d|\\u264c|\\u264b|\\u264a|\\u2649|\\u2648|\\u263a|\\u261d|\\u2615|\\u2614|\\u2611|\\u260e|\\u2601|\\u2600|\\u25fe|\\u25fd|\\u25fc|\\u25fb|\\u25c0|\\u25b6|\\u25ab|\\u25aa|\\u24c2|\\u231b|\\u231a|\\u21aa|\\u21a9|\\u2199|\\u2198|\\u2197|\\u2196|\\u2195|\\u2194|\\u2139|\\u2122|\\u2049|\\u203c|\\u2668)([\\uFE0E\\uFE0F]?)))', 'g'); -// https://mths.be/emoji -export const regexExEmojis3 = /[#*0-9]\uFE0F?\u20E3|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26AA\u26B0\u26B1\u26BD\u26BE\u26C4\u26C8\u26CF\u26D1\u26D3\u26E9\u26F0-\u26F5\u26F7\u26F8\u26FA\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B55\u3030\u303D\u3297\u3299]\uFE0F?|[\u261D\u270C\u270D](?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?|[\u270A\u270B](?:\uD83C[\uDFFB-\uDFFF])?|[\u23E9-\u23EC\u23F0\u23F3\u25FD\u2693\u26A1\u26AB\u26C5\u26CE\u26D4\u26EA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2795-\u2797\u27B0\u27BF\u2B50]|\u26F9(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|\u2764\uFE0F?(?:\u200D(?:\uD83D\uDD25|\uD83E\uDE79))?|\uD83C(?:[\uDC04\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]\uFE0F?|[\uDF85\uDFC2\uDFC7](?:\uD83C[\uDFFB-\uDFFF])?|[\uDFC3\uDFC4\uDFCA](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDFCB\uDFCC](?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uDDE6\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF]|\uDDE7\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF]|\uDDE8\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF]|\uDDE9\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF]|\uDDEA\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA]|\uDDEB\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7]|\uDDEC\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE]|\uDDED\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA]|\uDDEE\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9]|\uDDEF\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5]|\uDDF0\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF]|\uDDF1\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE]|\uDDF2\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF]|\uDDF3\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF]|\uDDF4\uD83C\uDDF2|\uDDF5\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE]|\uDDF6\uD83C\uDDE6|\uDDF7\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC]|\uDDF8\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF]|\uDDF9\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF]|\uDDFA\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF]|\uDDFB\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA]|\uDDFC\uD83C[\uDDEB\uDDF8]|\uDDFD\uD83C\uDDF0|\uDDFE\uD83C[\uDDEA\uDDF9]|\uDDFF\uD83C[\uDDE6\uDDF2\uDDFC]|\uDFF3\uFE0F?(?:\u200D(?:\u26A7\uFE0F?|\uD83C\uDF08))?|\uDFF4(?:\u200D\u2620\uFE0F?|\uDB40\uDC67\uDB40\uDC62\uDB40(?:\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDC73\uDB40\uDC63\uDB40\uDC74|\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F)?)|\uD83D(?:[\uDC08\uDC26](?:\u200D\u2B1B)?|[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3]\uFE0F?|[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC](?:\uD83C[\uDFFB-\uDFFF])?|[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD74\uDD90](?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?|[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC25\uDC27-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED7\uDEDC-\uDEDF\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB\uDFF0]|\uDC15(?:\u200D\uD83E\uDDBA)?|\uDC3B(?:\u200D\u2744\uFE0F?)?|\uDC41\uFE0F?(?:\u200D\uD83D\uDDE8\uFE0F?)?|\uDC68(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDC68\uDC69]\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFE])))?))?|\uDC69(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?[\uDC68\uDC69]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?|\uDC69\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?))|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFE])))?))?|\uDC6F(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDD75(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDE2E(?:\u200D\uD83D\uDCA8)?|\uDE35(?:\u200D\uD83D\uDCAB)?|\uDE36(?:\u200D\uD83C\uDF2B\uFE0F?)?)|\uD83E(?:[\uDD0C\uDD0F\uDD18-\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5\uDEC3-\uDEC5\uDEF0\uDEF2-\uDEF8](?:\uD83C[\uDFFB-\uDFFF])?|[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDDDE\uDDDF](?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD0D\uDD0E\uDD10-\uDD17\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCC\uDDD0\uDDE0-\uDDFF\uDE70-\uDE7C\uDE80-\uDE88\uDE90-\uDEBD\uDEBF-\uDEC2\uDECE-\uDEDB\uDEE0-\uDEE8]|\uDD3C(?:\u200D[\u2640\u2642]\uFE0F?|\uD83C[\uDFFB-\uDFFF])?|\uDDD1(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83E\uDDD1))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?))?|\uDEF1(?:\uD83C(?:\uDFFB(?:\u200D\uD83E\uDEF2\uD83C[\uDFFC-\uDFFF])?|\uDFFC(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFD-\uDFFF])?|\uDFFD(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])?|\uDFFE(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFD\uDFFF])?|\uDFFF(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFE])?))?)/g; -const regexExEmojis4 = /([#0-9]\u20E3)|[\xA9\xAE\u203C\u2047-\u2049\u2122\u2139\u3030\u303D\u3297\u3299][\uFE00-\uFEFF]?|[\u2190-\u21FF][\uFE00-\uFEFF]?|[\u2300-\u23FF][\uFE00-\uFEFF]?|[\u2460-\u24FF][\uFE00-\uFEFF]?|[\u25A0-\u25FF][\uFE00-\uFEFF]?|[\u2600-\u27BF][\uFE00-\uFEFF]?|[\u2900-\u297F][\uFE00-\uFEFF]?|[\u2B00-\u2BF0][\uFE00-\uFEFF]?|(?:\uD83C[\uDC00-\uDFFF]|\uD83D[\uDC00-\uDEFF])[\uFE00-\uFEFF]?/g; +export const regexExEmojis = /((?:\ud83c\udde8\ud83c\uddf3|\ud83c\uddfa\ud83c\uddf8|\ud83c\uddf7\ud83c\uddfa|\ud83c\uddf0\ud83c\uddf7|\ud83c\uddef\ud83c\uddf5|\ud83c\uddee\ud83c\uddf9|\ud83c\uddec\ud83c\udde7|\ud83c\uddeb\ud83c\uddf7|\ud83c\uddea\ud83c\uddf8|\ud83c\udde9\ud83c\uddea|\u0039\ufe0f?\u20e3|\u0038\ufe0f?\u20e3|\u0037\ufe0f?\u20e3|\u0036\ufe0f?\u20e3|\u0035\ufe0f?\u20e3|\u0034\ufe0f?\u20e3|\u0033\ufe0f?\u20e3|\u0032\ufe0f?\u20e3|\u0031\ufe0f?\u20e3|\u0030\ufe0f?\u20e3|\u0023\ufe0f?\u20e3|\ud83d\udeb3|\ud83d\udeb1|\ud83d\udeb0|\ud83d\udeaf|\ud83d\udeae|\ud83d\udea6|\ud83d\udea3|\ud83d\udea1|\ud83d\udea0|\ud83d\ude9f|\ud83d\ude9e|\ud83d\ude9d|\ud83d\ude9c|\ud83d\ude9b|\ud83d\ude98|\ud83d\ude96|\ud83d\ude94|\ud83d\ude90|\ud83d\ude8e|\ud83d\ude8d|\ud83d\ude8b|\ud83d\ude8a|\ud83d\ude88|\ud83d\ude86|\ud83d\ude82|\ud83d\ude81|\ud83d\ude36|\ud83d\ude34|\ud83d\ude2f|\ud83d\ude2e|\ud83d\ude2c|\ud83d\ude27|\ud83d\ude26|\ud83d\ude1f|\ud83d\ude1b|\ud83d\ude19|\ud83d\ude17|\ud83d\ude15|\ud83d\ude11|\ud83d\ude10|\ud83d\ude0e|\ud83d\ude08|\ud83d\ude07|\ud83d\ude00|\ud83d\udd67|\ud83d\udd66|\ud83d\udd65|\ud83d\udd64|\ud83d\udd63|\ud83d\udd62|\ud83d\udd61|\ud83d\udd60|\ud83d\udd5f|\ud83d\udd5e|\ud83d\udd5d|\ud83d\udd5c|\ud83d\udd2d|\ud83d\udd2c|\ud83d\udd15|\ud83d\udd09|\ud83d\udd08|\ud83d\udd07|\ud83d\udd06|\ud83d\udd05|\ud83d\udd04|\ud83d\udd02|\ud83d\udd01|\ud83d\udd00|\ud83d\udcf5|\ud83d\udcef|\ud83d\udced|\ud83d\udcec|\ud83d\udcb7|\ud83d\udcb6|\ud83d\udcad|\ud83d\udc6d|\ud83d\udc6c|\ud83d\udc65|\ud83d\udc2a|\ud83d\udc16|\ud83d\udc15|\ud83d\udc13|\ud83d\udc10|\ud83d\udc0f|\ud83d\udc0b|\ud83d\udc0a|\ud83d\udc09|\ud83d\udc08|\ud83d\udc07|\ud83d\udc06|\ud83d\udc05|\ud83d\udc04|\ud83d\udc03|\ud83d\udc02|\ud83d\udc01|\ud83d\udc00|\ud83c\udfe4|\ud83c\udfc9|\ud83c\udfc7|\ud83c\udf7c|\ud83c\udf50|\ud83c\udf4b|\ud83c\udf33|\ud83c\udf32|\ud83c\udf1e|\ud83c\udf1d|\ud83c\udf1c|\ud83c\udf1a|\ud83c\udf18|\ud83c\udccf|\ud83c\udd8e|\ud83c\udd91|\ud83c\udd92|\ud83c\udd93|\ud83c\udd94|\ud83c\udd95|\ud83c\udd96|\ud83c\udd97|\ud83c\udd98|\ud83c\udd99|\ud83c\udd9a|\ud83d\udc77|\ud83d\udec5|\ud83d\udec4|\ud83d\udec3|\ud83d\udec2|\ud83d\udec1|\ud83d\udebf|\ud83d\udeb8|\ud83d\udeb7|\ud83d\udeb5|\ud83c\ude01|\ud83c\ude32|\ud83c\ude33|\ud83c\ude34|\ud83c\ude35|\ud83c\ude36|\ud83c\ude38|\ud83c\ude39|\ud83c\ude3a|\ud83c\ude50|\ud83c\ude51|\ud83c\udf00|\ud83c\udf01|\ud83c\udf02|\ud83c\udf03|\ud83c\udf04|\ud83c\udf05|\ud83c\udf06|\ud83c\udf07|\ud83c\udf08|\ud83c\udf09|\ud83c\udf0a|\ud83c\udf0b|\ud83c\udf0c|\ud83c\udf0f|\ud83c\udf11|\ud83c\udf13|\ud83c\udf14|\ud83c\udf15|\ud83c\udf19|\ud83c\udf1b|\ud83c\udf1f|\ud83c\udf20|\ud83c\udf30|\ud83c\udf31|\ud83c\udf34|\ud83c\udf35|\ud83c\udf37|\ud83c\udf38|\ud83c\udf39|\ud83c\udf3a|\ud83c\udf3b|\ud83c\udf3c|\ud83c\udf3d|\ud83c\udf3e|\ud83c\udf3f|\ud83c\udf40|\ud83c\udf41|\ud83c\udf42|\ud83c\udf43|\ud83c\udf44|\ud83c\udf45|\ud83c\udf46|\ud83c\udf47|\ud83c\udf48|\ud83c\udf49|\ud83c\udf4a|\ud83c\udf4c|\ud83c\udf4d|\ud83c\udf4e|\ud83c\udf4f|\ud83c\udf51|\ud83c\udf52|\ud83c\udf53|\ud83c\udf54|\ud83c\udf55|\ud83c\udf56|\ud83c\udf57|\ud83c\udf58|\ud83c\udf59|\ud83c\udf5a|\ud83c\udf5b|\ud83c\udf5c|\ud83c\udf5d|\ud83c\udf5e|\ud83c\udf5f|\ud83c\udf60|\ud83c\udf61|\ud83c\udf62|\ud83c\udf63|\ud83c\udf64|\ud83c\udf65|\ud83c\udf66|\ud83c\udf67|\ud83c\udf68|\ud83c\udf69|\ud83c\udf6a|\ud83c\udf6b|\ud83c\udf6c|\ud83c\udf6d|\ud83c\udf6e|\ud83c\udf6f|\ud83c\udf70|\ud83c\udf71|\ud83c\udf72|\ud83c\udf73|\ud83c\udf74|\ud83c\udf75|\ud83c\udf76|\ud83c\udf77|\ud83c\udf78|\ud83c\udf79|\ud83c\udf7a|\ud83c\udf7b|\ud83c\udf80|\ud83c\udf81|\ud83c\udf82|\ud83c\udf83|\ud83c\udf84|\ud83c\udf85|\ud83c\udf86|\ud83c\udf87|\ud83c\udf88|\ud83c\udf89|\ud83c\udf8a|\ud83c\udf8b|\ud83c\udf8c|\ud83c\udf8d|\ud83c\udf8e|\ud83c\udf8f|\ud83c\udf90|\ud83c\udf91|\ud83c\udf92|\ud83c\udf93|\ud83c\udfa0|\ud83c\udfa1|\ud83c\udfa2|\ud83c\udfa3|\ud83c\udfa4|\ud83c\udfa5|\ud83c\udfa6|\ud83c\udfa7|\ud83c\udfa8|\ud83c\udfa9|\ud83c\udfaa|\ud83c\udfab|\ud83c\udfac|\ud83c\udfad|\ud83c\udfae|\ud83c\udfaf|\ud83c\udfb0|\ud83c\udfb1|\ud83c\udfb2|\ud83c\udfb3|\ud83c\udfb4|\ud83c\udfb5|\ud83c\udfb6|\ud83c\udfb7|\ud83c\udfb8|\ud83c\udfb9|\ud83c\udfba|\ud83c\udfbb|\ud83c\udfbc|\ud83c\udfbd|\ud83c\udfbe|\ud83c\udfbf|\ud83c\udfc0|\ud83c\udfc1|\ud83c\udfc2|\ud83c\udfc3|\ud83c\udfc4|\ud83c\udfc6|\ud83c\udfc8|\ud83c\udfca|\ud83c\udfe0|\ud83c\udfe1|\ud83c\udfe2|\ud83c\udfe3|\ud83c\udfe5|\ud83c\udfe6|\ud83c\udfe7|\ud83c\udfe8|\ud83c\udfe9|\ud83c\udfea|\ud83c\udfeb|\ud83c\udfec|\ud83c\udfed|\ud83c\udfee|\ud83c\udfef|\ud83c\udff0|\ud83d\udc0c|\ud83d\udc0d|\ud83d\udc0e|\ud83d\udc11|\ud83d\udc12|\ud83d\udc14|\ud83d\udc17|\ud83d\udc18|\ud83d\udc19|\ud83d\udc1a|\ud83d\udc1b|\ud83d\udc1c|\ud83d\udc1d|\ud83d\udc1e|\ud83d\udc1f|\ud83d\udc20|\ud83d\udc21|\ud83d\udc22|\ud83d\udc23|\ud83d\udc24|\ud83d\udc25|\ud83d\udc26|\ud83d\udc27|\ud83d\udc28|\ud83d\udc29|\ud83d\udc2b|\ud83d\udc2c|\ud83d\udc2d|\ud83d\udc2e|\ud83d\udc2f|\ud83d\udc30|\ud83d\udc31|\ud83d\udc32|\ud83d\udc33|\ud83d\udc34|\ud83d\udc35|\ud83d\udc36|\ud83d\udc37|\ud83d\udc38|\ud83d\udc39|\ud83d\udc3a|\ud83d\udc3b|\ud83d\udc3c|\ud83d\udc3d|\ud83d\udc3e|\ud83d\udc40|\ud83d\udc42|\ud83d\udc43|\ud83d\udc44|\ud83d\udc45|\ud83d\udc46|\ud83d\udc47|\ud83d\udc48|\ud83d\udc49|\ud83d\udc4a|\ud83d\udc4b|\ud83d\udc4c|\ud83d\udc4d|\ud83d\udc4e|\ud83d\udc4f|\ud83d\udc50|\ud83d\udc51|\ud83d\udc52|\ud83d\udc53|\ud83d\udc54|\ud83d\udc55|\ud83d\udc56|\ud83d\udc57|\ud83d\udc58|\ud83d\udc59|\ud83d\udc5a|\ud83d\udc5b|\ud83d\udc5c|\ud83d\udc5d|\ud83d\udc5e|\ud83d\udc5f|\ud83d\udc60|\ud83d\udc61|\ud83d\udc62|\ud83d\udc63|\ud83d\udc64|\ud83d\udc66|\ud83d\udc67|\ud83d\udc68|\ud83d\udc69|\ud83d\udc6a|\ud83d\udc6b|\ud83d\udc6e|\ud83d\udc6f|\ud83d\udc70|\ud83d\udc71|\ud83d\udc72|\ud83d\udc73|\ud83d\udc74|\ud83d\udc75|\ud83d\udc76|\ud83d\udeb4|\ud83d\udc78|\ud83d\udc79|\ud83d\udc7a|\ud83d\udc7b|\ud83d\udc7c|\ud83d\udc7d|\ud83d\udc7e|\ud83d\udc7f|\ud83d\udc80|\ud83d\udc81|\ud83d\udc82|\ud83d\udc83|\ud83d\udc84|\ud83d\udc85|\ud83d\udc86|\ud83d\udc87|\ud83d\udc88|\ud83d\udc89|\ud83d\udc8a|\ud83d\udc8b|\ud83d\udc8c|\ud83d\udc8d|\ud83d\udc8e|\ud83d\udc8f|\ud83d\udc90|\ud83d\udc91|\ud83d\udc92|\ud83d\udc93|\ud83d\udc94|\ud83d\udc95|\ud83d\udc96|\ud83d\udc97|\ud83d\udc98|\ud83d\udc99|\ud83d\udc9a|\ud83d\udc9b|\ud83d\udc9c|\ud83d\udc9d|\ud83d\udc9e|\ud83d\udc9f|\ud83d\udca0|\ud83d\udca1|\ud83d\udca2|\ud83d\udca3|\ud83d\udca4|\ud83d\udca5|\ud83d\udca6|\ud83d\udca7|\ud83d\udca8|\ud83d\udca9|\ud83d\udcaa|\ud83d\udcab|\ud83d\udcac|\ud83d\udcae|\ud83d\udcaf|\ud83d\udcb0|\ud83d\udcb1|\ud83d\udcb2|\ud83d\udcb3|\ud83d\udcb4|\ud83d\udcb5|\ud83d\udcb8|\ud83d\udcb9|\ud83d\udcba|\ud83d\udcbb|\ud83d\udcbc|\ud83d\udcbd|\ud83d\udcbe|\ud83d\udcbf|\ud83d\udcc0|\ud83d\udcc1|\ud83d\udcc2|\ud83d\udcc3|\ud83d\udcc4|\ud83d\udcc5|\ud83d\udcc6|\ud83d\udcc7|\ud83d\udcc8|\ud83d\udcc9|\ud83d\udcca|\ud83d\udccb|\ud83d\udccc|\ud83d\udccd|\ud83d\udcce|\ud83d\udccf|\ud83d\udcd0|\ud83d\udcd1|\ud83d\udcd2|\ud83d\udcd3|\ud83d\udcd4|\ud83d\udcd5|\ud83d\udcd6|\ud83d\udcd7|\ud83d\udcd8|\ud83d\udcd9|\ud83d\udcda|\ud83d\udcdb|\ud83d\udcdc|\ud83d\udcdd|\ud83d\udcde|\ud83d\udcdf|\ud83d\udce0|\ud83d\udce1|\ud83d\udce2|\ud83d\udce3|\ud83d\udce4|\ud83d\udce5|\ud83d\udce6|\ud83d\udce7|\ud83d\udce8|\ud83d\udce9|\ud83d\udcea|\ud83d\udceb|\ud83d\udcee|\ud83d\udcf0|\ud83d\udcf1|\ud83d\udcf2|\ud83d\udcf3|\ud83d\udcf4|\ud83d\udcf6|\ud83d\udcf7|\ud83d\udcf9|\ud83d\udcfa|\ud83d\udcfb|\ud83d\udcfc|\ud83d\udd03|\ud83d\udd0a|\ud83d\udd0b|\ud83d\udd0c|\ud83d\udd0d|\ud83d\udd0e|\ud83d\udd0f|\ud83d\udd10|\ud83d\udd11|\ud83d\udd12|\ud83d\udd13|\ud83d\udd14|\ud83d\udd16|\ud83d\udd17|\ud83d\udd18|\ud83d\udd19|\ud83d\udd1a|\ud83d\udd1b|\ud83d\udd1c|\ud83d\udd1d|\ud83d\udd1e|\ud83d\udd1f|\ud83d\udd20|\ud83d\udd21|\ud83d\udd22|\ud83d\udd23|\ud83d\udd24|\ud83d\udd25|\ud83d\udd26|\ud83d\udd27|\ud83d\udd28|\ud83d\udd29|\ud83d\udd2a|\ud83d\udd2b|\ud83d\udd2e|\ud83d\udd2f|\ud83d\udd30|\ud83d\udd31|\ud83d\udd32|\ud83d\udd33|\ud83d\udd34|\ud83d\udd35|\ud83d\udd36|\ud83d\udd37|\ud83d\udd38|\ud83d\udd39|\ud83d\udd3a|\ud83d\udd3b|\ud83d\udd3c|\ud83d\udd3d|\ud83d\udd50|\ud83d\udd51|\ud83d\udd52|\ud83d\udd53|\ud83d\udd54|\ud83d\udd55|\ud83d\udd56|\ud83d\udd57|\ud83d\udd58|\ud83d\udd59|\ud83d\udd5a|\ud83d\udd5b|\ud83d\uddfb|\ud83d\uddfc|\ud83d\uddfd|\ud83d\uddfe|\ud83d\uddff|\ud83d\ude01|\ud83d\ude02|\ud83d\ude03|\ud83d\ude04|\ud83d\ude05|\ud83d\ude06|\ud83d\ude09|\ud83d\ude0a|\ud83d\ude0b|\ud83d\ude0c|\ud83d\ude0d|\ud83d\ude0f|\ud83d\ude12|\ud83d\ude13|\ud83d\ude14|\ud83d\ude16|\ud83d\ude18|\ud83d\ude1a|\ud83d\ude1c|\ud83d\ude1d|\ud83d\ude1e|\ud83d\ude20|\ud83d\ude21|\ud83d\ude22|\ud83d\ude23|\ud83d\ude24|\ud83d\ude25|\ud83d\ude28|\ud83d\ude29|\ud83d\ude2a|\ud83d\ude2b|\ud83d\ude2d|\ud83d\ude30|\ud83d\ude31|\ud83d\ude32|\ud83d\ude33|\ud83d\ude35|\ud83d\ude37|\ud83d\ude38|\ud83d\ude39|\ud83d\ude3a|\ud83d\ude3b|\ud83d\ude3c|\ud83d\ude3d|\ud83d\ude3e|\ud83d\ude3f|\ud83d\ude40|\ud83d\ude45|\ud83d\ude46|\ud83d\ude47|\ud83d\ude48|\ud83d\ude49|\ud83d\ude4a|\ud83d\ude4b|\ud83d\ude4c|\ud83d\ude4d|\ud83d\ude4e|\ud83d\ude4f|\ud83d\ude80|\ud83d\ude83|\ud83d\ude84|\ud83d\ude85|\ud83d\ude87|\ud83d\ude89|\ud83d\ude8c|\ud83d\ude8f|\ud83d\ude91|\ud83d\ude92|\ud83d\ude93|\ud83d\ude95|\ud83d\ude97|\ud83d\ude99|\ud83d\ude9a|\ud83d\udea2|\ud83d\udea4|\ud83d\udea5|\ud83d\udea7|\ud83d\udea8|\ud83d\udea9|\ud83d\udeaa|\ud83d\udeab|\ud83d\udeac|\ud83d\udead|\ud83d\udeb2|\ud83d\udeb6|\ud83d\udeb9|\ud83d\udeba|\ud83d\udebb|\ud83d\udebc|\ud83d\udebd|\ud83d\udebe|\ud83d\udec0|\ud83c\udde6|\ud83c\udde7|\ud83c\udde8|\ud83c\udde9|\ud83c\uddea|\ud83c\uddeb|\ud83c\uddec|\ud83c\udded|\ud83c\uddee|\ud83c\uddef|\ud83c\uddf0|\ud83c\uddf1|\ud83c\uddf2|\ud83c\uddf3|\ud83c\uddf4|\ud83c\uddf5|\ud83c\uddf6|\ud83c\uddf7|\ud83c\uddf8|\ud83c\uddf9|\ud83c\uddfa|\ud83c\uddfb|\ud83c\uddfc|\ud83c\uddfd|\ud83c\uddfe|\ud83c\uddff|\ud83c\udf0d|\ud83c\udf0e|\ud83c\udf10|\ud83c\udf12|\ud83c\udf16|\ud83c\udf17|\ue50a|\u27b0|\u2797|\u2796|\u2795|\u2755|\u2754|\u2753|\u274e|\u274c|\u2728|\u270b|\u270a|\u2705|\u26ce|\u23f3|\u23f0|\u23ec|\u23eb|\u23ea|\u23e9|\u27bf|\u00a9|\u00ae)|(?:(?:\ud83c\udc04|\ud83c\udd70|\ud83c\udd71|\ud83c\udd7e|\ud83c\udd7f|\ud83c\ude02|\ud83c\ude1a|\ud83c\ude2f|\ud83c\ude37|\u3299|\u303d|\u3030|\u2b55|\u2b50|\u2b1c|\u2b1b|\u2b07|\u2b06|\u2b05|\u2935|\u2934|\u27a1|\u2764|\u2757|\u2747|\u2744|\u2734|\u2733|\u2716|\u2714|\u2712|\u270f|\u270c|\u2709|\u2708|\u2702|\u26fd|\u26fa|\u26f5|\u26f3|\u26f2|\u26ea|\u26d4|\u26c5|\u26c4|\u26be|\u26bd|\u26ab|\u26aa|\u26a1|\u26a0|\u2693|\u267f|\u267b|\u3297|\u2666|\u2665|\u2663|\u2660|\u2653|\u2652|\u2651|\u2650|\u264f|\u264e|\u264d|\u264c|\u264b|\u264a|\u2649|\u2648|\u263a|\u261d|\u2615|\u2614|\u2611|\u260e|\u2601|\u2600|\u25fe|\u25fd|\u25fc|\u25fb|\u25c0|\u25b6|\u25ab|\u25aa|\u24c2|\u231b|\u231a|\u21aa|\u21a9|\u2199|\u2198|\u2197|\u2196|\u2195|\u2194|\u2139|\u2122|\u2049|\u203c|\u2668)([\uFE0E\uFE0F]?)))/g; +// Alternative syntax using RegExp constructor +export const regexExEmojis2 = new RegExp('((?:\\ud83c\\udde8\\ud83c\\uddf3|\\ud83c\\uddfa\\ud83c\\uddf8|\\ud83c\\uddf7\\ud83c\\uddfa|\\ud83c\\uddf0\\ud83c\\uddf7|\\ud83c\\uddef\\ud83c\\uddf5|\\ud83c\\uddee\\ud83c\\uddf9|\\ud83c\\uddec\\ud83c\\udde7|\\ud83c\\uddeb\\ud83c\\uddf7|\\ud83c\\uddea\\ud83c\\uddf8|\\ud83c\\udde9\\ud83c\\uddea|\\u0039\\ufe0f?\\u20e3|\\u0038\\ufe0f?\\u20e3|\\u0037\\ufe0f?\\u20e3|\\u0036\\ufe0f?\\u20e3|\\u0035\\ufe0f?\\u20e3|\\u0034\\ufe0f?\\u20e3|\\u0033\\ufe0f?\\u20e3|\\u0032\\ufe0f?\\u20e3|\\u0031\\ufe0f?\\u20e3|\\u0030\\ufe0f?\\u20e3|\\u0023\\ufe0f?\\u20e3|\\ud83d\\udeb3|\\ud83d\\udeb1|\\ud83d\\udeb0|\\ud83d\\udeaf|\\ud83d\\udeae|\\ud83d\\udea6|\\ud83d\\udea3|\\ud83d\\udea1|\\ud83d\\udea0|\\ud83d\\ude9f|\\ud83d\\ude9e|\\ud83d\\ude9d|\\ud83d\\ude9c|\\ud83d\\ude9b|\\ud83d\\ude98|\\ud83d\\ude96|\\ud83d\\ude94|\\ud83d\\ude90|\\ud83d\\ude8e|\\ud83d\\ude8d|\\ud83d\\ude8b|\\ud83d\\ude8a|\\ud83d\\ude88|\\ud83d\\ude86|\\ud83d\\ude82|\\ud83d\\ude81|\\ud83d\\ude36|\\ud83d\\ude34|\\ud83d\\ude2f|\\ud83d\\ude2e|\\ud83d\\ude2c|\\ud83d\\ude27|\\ud83d\\ude26|\\ud83d\\ude1f|\\ud83d\\ude1b|\\ud83d\\ude19|\\ud83d\\ude17|\\ud83d\\ude15|\\ud83d\\ude11|\\ud83d\\ude10|\\ud83d\\ude0e|\\ud83d\\ude08|\\ud83d\\ude07|\\ud83d\\ude00|\\ud83d\\udd67|\\ud83d\\udd66|\\ud83d\\udd65|\\ud83d\\udd64|\\ud83d\\udd63|\\ud83d\\udd62|\\ud83d\\udd61|\\ud83d\\udd60|\\ud83d\\udd5f|\\ud83d\\udd5e|\\ud83d\\udd5d|\\ud83d\\udd5c|\\ud83d\\udd2d|\\ud83d\\udd2c|\\ud83d\\udd15|\\ud83d\\udd09|\\ud83d\\udd08|\\ud83d\\udd07|\\ud83d\\udd06|\\ud83d\\udd05|\\ud83d\\udd04|\\ud83d\\udd02|\\ud83d\\udd01|\\ud83d\\udd00|\\ud83d\\udcf5|\\ud83d\\udcef|\\ud83d\\udced|\\ud83d\\udcec|\\ud83d\\udcb7|\\ud83d\\udcb6|\\ud83d\\udcad|\\ud83d\\udc6d|\\ud83d\\udc6c|\\ud83d\\udc65|\\ud83d\\udc2a|\\ud83d\\udc16|\\ud83d\\udc15|\\ud83d\\udc13|\\ud83d\\udc10|\\ud83d\\udc0f|\\ud83d\\udc0b|\\ud83d\\udc0a|\\ud83d\\udc09|\\ud83d\\udc08|\\ud83d\\udc07|\\ud83d\\udc06|\\ud83d\\udc05|\\ud83d\\udc04|\\ud83d\\udc03|\\ud83d\\udc02|\\ud83d\\udc01|\\ud83d\\udc00|\\ud83c\\udfe4|\\ud83c\\udfc9|\\ud83c\\udfc7|\\ud83c\\udf7c|\\ud83c\\udf50|\\ud83c\\udf4b|\\ud83c\\udf33|\\ud83c\\udf32|\\ud83c\\udf1e|\\ud83c\\udf1d|\\ud83c\\udf1c|\\ud83c\\udf1a|\\ud83c\\udf18|\\ud83c\\udccf|\\ud83c\\udd8e|\\ud83c\\udd91|\\ud83c\\udd92|\\ud83c\\udd93|\\ud83c\\udd94|\\ud83c\\udd95|\\ud83c\\udd96|\\ud83c\\udd97|\\ud83c\\udd98|\\ud83c\\udd99|\\ud83c\\udd9a|\\ud83d\\udc77|\\ud83d\\udec5|\\ud83d\\udec4|\\ud83d\\udec3|\\ud83d\\udec2|\\ud83d\\udec1|\\ud83d\\udebf|\\ud83d\\udeb8|\\ud83d\\udeb7|\\ud83d\\udeb5|\\ud83c\\ude01|\\ud83c\\ude32|\\ud83c\\ude33|\\ud83c\\ude34|\\ud83c\\ude35|\\ud83c\\ude36|\\ud83c\\ude38|\\ud83c\\ude39|\\ud83c\\ude3a|\\ud83c\\ude50|\\ud83c\\ude51|\\ud83c\\udf00|\\ud83c\\udf01|\\ud83c\\udf02|\\ud83c\\udf03|\\ud83c\\udf04|\\ud83c\\udf05|\\ud83c\\udf06|\\ud83c\\udf07|\\ud83c\\udf08|\\ud83c\\udf09|\\ud83c\\udf0a|\\ud83c\\udf0b|\\ud83c\\udf0c|\\ud83c\\udf0f|\\ud83c\\udf11|\\ud83c\\udf13|\\ud83c\\udf14|\\ud83c\\udf15|\\ud83c\\udf19|\\ud83c\\udf1b|\\ud83c\\udf1f|\\ud83c\\udf20|\\ud83c\\udf30|\\ud83c\\udf31|\\ud83c\\udf34|\\ud83c\\udf35|\\ud83c\\udf37|\\ud83c\\udf38|\\ud83c\\udf39|\\ud83c\\udf3a|\\ud83c\\udf3b|\\ud83c\\udf3c|\\ud83c\\udf3d|\\ud83c\\udf3e|\\ud83c\\udf3f|\\ud83c\\udf40|\\ud83c\\udf41|\\ud83c\\udf42|\\ud83c\\udf43|\\ud83c\\udf44|\\ud83c\\udf45|\\ud83c\\udf46|\\ud83c\\udf47|\\ud83c\\udf48|\\ud83c\\udf49|\\ud83c\\udf4a|\\ud83c\\udf4c|\\ud83c\\udf4d|\\ud83c\\udf4e|\\ud83c\\udf4f|\\ud83c\\udf51|\\ud83c\\udf52|\\ud83c\\udf53|\\ud83c\\udf54|\\ud83c\\udf55|\\ud83c\\udf56|\\ud83c\\udf57|\\ud83c\\udf58|\\ud83c\\udf59|\\ud83c\\udf5a|\\ud83c\\udf5b|\\ud83c\\udf5c|\\ud83c\\udf5d|\\ud83c\\udf5e|\\ud83c\\udf5f|\\ud83c\\udf60|\\ud83c\\udf61|\\ud83c\\udf62|\\ud83c\\udf63|\\ud83c\\udf64|\\ud83c\\udf65|\\ud83c\\udf66|\\ud83c\\udf67|\\ud83c\\udf68|\\ud83c\\udf69|\\ud83c\\udf6a|\\ud83c\\udf6b|\\ud83c\\udf6c|\\ud83c\\udf6d|\\ud83c\\udf6e|\\ud83c\\udf6f|\\ud83c\\udf70|\\ud83c\\udf71|\\ud83c\\udf72|\\ud83c\\udf73|\\ud83c\\udf74|\\ud83c\\udf75|\\ud83c\\udf76|\\ud83c\\udf77|\\ud83c\\udf78|\\ud83c\\udf79|\\ud83c\\udf7a|\\ud83c\\udf7b|\\ud83c\\udf80|\\ud83c\\udf81|\\ud83c\\udf82|\\ud83c\\udf83|\\ud83c\\udf84|\\ud83c\\udf85|\\ud83c\\udf86|\\ud83c\\udf87|\\ud83c\\udf88|\\ud83c\\udf89|\\ud83c\\udf8a|\\ud83c\\udf8b|\\ud83c\\udf8c|\\ud83c\\udf8d|\\ud83c\\udf8e|\\ud83c\\udf8f|\\ud83c\\udf90|\\ud83c\\udf91|\\ud83c\\udf92|\\ud83c\\udf93|\\ud83c\\udfa0|\\ud83c\\udfa1|\\ud83c\\udfa2|\\ud83c\\udfa3|\\ud83c\\udfa4|\\ud83c\\udfa5|\\ud83c\\udfa6|\\ud83c\\udfa7|\\ud83c\\udfa8|\\ud83c\\udfa9|\\ud83c\\udfaa|\\ud83c\\udfab|\\ud83c\\udfac|\\ud83c\\udfad|\\ud83c\\udfae|\\ud83c\\udfaf|\\ud83c\\udfb0|\\ud83c\\udfb1|\\ud83c\\udfb2|\\ud83c\\udfb3|\\ud83c\\udfb4|\\ud83c\\udfb5|\\ud83c\\udfb6|\\ud83c\\udfb7|\\ud83c\\udfb8|\\ud83c\\udfb9|\\ud83c\\udfba|\\ud83c\\udfbb|\\ud83c\\udfbc|\\ud83c\\udfbd|\\ud83c\\udfbe|\\ud83c\\udfbf|\\ud83c\\udfc0|\\ud83c\\udfc1|\\ud83c\\udfc2|\\ud83c\\udfc3|\\ud83c\\udfc4|\\ud83c\\udfc6|\\ud83c\\udfc8|\\ud83c\\udfca|\\ud83c\\udfe0|\\ud83c\\udfe1|\\ud83c\\udfe2|\\ud83c\\udfe3|\\ud83c\\udfe5|\\ud83c\\udfe6|\\ud83c\\udfe7|\\ud83c\\udfe8|\\ud83c\\udfe9|\\ud83c\\udfea|\\ud83c\\udfeb|\\ud83c\\udfec|\\ud83c\\udfed|\\ud83c\\udfee|\\ud83c\\udfef|\\ud83c\\udff0|\\ud83d\\udc0c|\\ud83d\\udc0d|\\ud83d\\udc0e|\\ud83d\\udc11|\\ud83d\\udc12|\\ud83d\\udc14|\\ud83d\\udc17|\\ud83d\\udc18|\\ud83d\\udc19|\\ud83d\\udc1a|\\ud83d\\udc1b|\\ud83d\\udc1c|\\ud83d\\udc1d|\\ud83d\\udc1e|\\ud83d\\udc1f|\\ud83d\\udc20|\\ud83d\\udc21|\\ud83d\\udc22|\\ud83d\\udc23|\\ud83d\\udc24|\\ud83d\\udc25|\\ud83d\\udc26|\\ud83d\\udc27|\\ud83d\\udc28|\\ud83d\\udc29|\\ud83d\\udc2b|\\ud83d\\udc2c|\\ud83d\\udc2d|\\ud83d\\udc2e|\\ud83d\\udc2f|\\ud83d\\udc30|\\ud83d\\udc31|\\ud83d\\udc32|\\ud83d\\udc33|\\ud83d\\udc34|\\ud83d\\udc35|\\ud83d\\udc36|\\ud83d\\udc37|\\ud83d\\udc38|\\ud83d\\udc39|\\ud83d\\udc3a|\\ud83d\\udc3b|\\ud83d\\udc3c|\\ud83d\\udc3d|\\ud83d\\udc3e|\\ud83d\\udc40|\\ud83d\\udc42|\\ud83d\\udc43|\\ud83d\\udc44|\\ud83d\\udc45|\\ud83d\\udc46|\\ud83d\\udc47|\\ud83d\\udc48|\\ud83d\\udc49|\\ud83d\\udc4a|\\ud83d\\udc4b|\\ud83d\\udc4c|\\ud83d\\udc4d|\\ud83d\\udc4e|\\ud83d\\udc4f|\\ud83d\\udc50|\\ud83d\\udc51|\\ud83d\\udc52|\\ud83d\\udc53|\\ud83d\\udc54|\\ud83d\\udc55|\\ud83d\\udc56|\\ud83d\\udc57|\\ud83d\\udc58|\\ud83d\\udc59|\\ud83d\\udc5a|\\ud83d\\udc5b|\\ud83d\\udc5c|\\ud83d\\udc5d|\\ud83d\\udc5e|\\ud83d\\udc5f|\\ud83d\\udc60|\\ud83d\\udc61|\\ud83d\\udc62|\\ud83d\\udc63|\\ud83d\\udc64|\\ud83d\\udc66|\\ud83d\\udc67|\\ud83d\\udc68|\\ud83d\\udc69|\\ud83d\\udc6a|\\ud83d\\udc6b|\\ud83d\\udc6e|\\ud83d\\udc6f|\\ud83d\\udc70|\\ud83d\\udc71|\\ud83d\\udc72|\\ud83d\\udc73|\\ud83d\\udc74|\\ud83d\\udc75|\\ud83d\\udc76|\\ud83d\\udeb4|\\ud83d\\udc78|\\ud83d\\udc79|\\ud83d\\udc7a|\\ud83d\\udc7b|\\ud83d\\udc7c|\\ud83d\\udc7d|\\ud83d\\udc7e|\\ud83d\\udc7f|\\ud83d\\udc80|\\ud83d\\udc81|\\ud83d\\udc82|\\ud83d\\udc83|\\ud83d\\udc84|\\ud83d\\udc85|\\ud83d\\udc86|\\ud83d\\udc87|\\ud83d\\udc88|\\ud83d\\udc89|\\ud83d\\udc8a|\\ud83d\\udc8b|\\ud83d\\udc8c|\\ud83d\\udc8d|\\ud83d\\udc8e|\\ud83d\\udc8f|\\ud83d\\udc90|\\ud83d\\udc91|\\ud83d\\udc92|\\ud83d\\udc93|\\ud83d\\udc94|\\ud83d\\udc95|\\ud83d\\udc96|\\ud83d\\udc97|\\ud83d\\udc98|\\ud83d\\udc99|\\ud83d\\udc9a|\\ud83d\\udc9b|\\ud83d\\udc9c|\\ud83d\\udc9d|\\ud83d\\udc9e|\\ud83d\\udc9f|\\ud83d\\udca0|\\ud83d\\udca1|\\ud83d\\udca2|\\ud83d\\udca3|\\ud83d\\udca4|\\ud83d\\udca5|\\ud83d\\udca6|\\ud83d\\udca7|\\ud83d\\udca8|\\ud83d\\udca9|\\ud83d\\udcaa|\\ud83d\\udcab|\\ud83d\\udcac|\\ud83d\\udcae|\\ud83d\\udcaf|\\ud83d\\udcb0|\\ud83d\\udcb1|\\ud83d\\udcb2|\\ud83d\\udcb3|\\ud83d\\udcb4|\\ud83d\\udcb5|\\ud83d\\udcb8|\\ud83d\\udcb9|\\ud83d\\udcba|\\ud83d\\udcbb|\\ud83d\\udcbc|\\ud83d\\udcbd|\\ud83d\\udcbe|\\ud83d\\udcbf|\\ud83d\\udcc0|\\ud83d\\udcc1|\\ud83d\\udcc2|\\ud83d\\udcc3|\\ud83d\\udcc4|\\ud83d\\udcc5|\\ud83d\\udcc6|\\ud83d\\udcc7|\\ud83d\\udcc8|\\ud83d\\udcc9|\\ud83d\\udcca|\\ud83d\\udccb|\\ud83d\\udccc|\\ud83d\\udccd|\\ud83d\\udcce|\\ud83d\\udccf|\\ud83d\\udcd0|\\ud83d\\udcd1|\\ud83d\\udcd2|\\ud83d\\udcd3|\\ud83d\\udcd4|\\ud83d\\udcd5|\\ud83d\\udcd6|\\ud83d\\udcd7|\\ud83d\\udcd8|\\ud83d\\udcd9|\\ud83d\\udcda|\\ud83d\\udcdb|\\ud83d\\udcdc|\\ud83d\\udcdd|\\ud83d\\udcde|\\ud83d\\udcdf|\\ud83d\\udce0|\\ud83d\\udce1|\\ud83d\\udce2|\\ud83d\\udce3|\\ud83d\\udce4|\\ud83d\\udce5|\\ud83d\\udce6|\\ud83d\\udce7|\\ud83d\\udce8|\\ud83d\\udce9|\\ud83d\\udcea|\\ud83d\\udceb|\\ud83d\\udcee|\\ud83d\\udcf0|\\ud83d\\udcf1|\\ud83d\\udcf2|\\ud83d\\udcf3|\\ud83d\\udcf4|\\ud83d\\udcf6|\\ud83d\\udcf7|\\ud83d\\udcf9|\\ud83d\\udcfa|\\ud83d\\udcfb|\\ud83d\\udcfc|\\ud83d\\udd03|\\ud83d\\udd0a|\\ud83d\\udd0b|\\ud83d\\udd0c|\\ud83d\\udd0d|\\ud83d\\udd0e|\\ud83d\\udd0f|\\ud83d\\udd10|\\ud83d\\udd11|\\ud83d\\udd12|\\ud83d\\udd13|\\ud83d\\udd14|\\ud83d\\udd16|\\ud83d\\udd17|\\ud83d\\udd18|\\ud83d\\udd19|\\ud83d\\udd1a|\\ud83d\\udd1b|\\ud83d\\udd1c|\\ud83d\\udd1d|\\ud83d\\udd1e|\\ud83d\\udd1f|\\ud83d\\udd20|\\ud83d\\udd21|\\ud83d\\udd22|\\ud83d\\udd23|\\ud83d\\udd24|\\ud83d\\udd25|\\ud83d\\udd26|\\ud83d\\udd27|\\ud83d\\udd28|\\ud83d\\udd29|\\ud83d\\udd2a|\\ud83d\\udd2b|\\ud83d\\udd2e|\\ud83d\\udd2f|\\ud83d\\udd30|\\ud83d\\udd31|\\ud83d\\udd32|\\ud83d\\udd33|\\ud83d\\udd34|\\ud83d\\udd35|\\ud83d\\udd36|\\ud83d\\udd37|\\ud83d\\udd38|\\ud83d\\udd39|\\ud83d\\udd3a|\\ud83d\\udd3b|\\ud83d\\udd3c|\\ud83d\\udd3d|\\ud83d\\udd50|\\ud83d\\udd51|\\ud83d\\udd52|\\ud83d\\udd53|\\ud83d\\udd54|\\ud83d\\udd55|\\ud83d\\udd56|\\ud83d\\udd57|\\ud83d\\udd58|\\ud83d\\udd59|\\ud83d\\udd5a|\\ud83d\\udd5b|\\ud83d\\uddfb|\\ud83d\\uddfc|\\ud83d\\uddfd|\\ud83d\\uddfe|\\ud83d\\uddff|\\ud83d\\ude01|\\ud83d\\ude02|\\ud83d\\ude03|\\ud83d\\ude04|\\ud83d\\ude05|\\ud83d\\ude06|\\ud83d\\ude09|\\ud83d\\ude0a|\\ud83d\\ude0b|\\ud83d\\ude0c|\\ud83d\\ude0d|\\ud83d\\ude0f|\\ud83d\\ude12|\\ud83d\\ude13|\\ud83d\\ude14|\\ud83d\\ude16|\\ud83d\\ude18|\\ud83d\\ude1a|\\ud83d\\ude1c|\\ud83d\\ude1d|\\ud83d\\ude1e|\\ud83d\\ude20|\\ud83d\\ude21|\\ud83d\\ude22|\\ud83d\\ude23|\\ud83d\\ude24|\\ud83d\\ude25|\\ud83d\\ude28|\\ud83d\\ude29|\\ud83d\\ude2a|\\ud83d\\ude2b|\\ud83d\\ude2d|\\ud83d\\ude30|\\ud83d\\ude31|\\ud83d\\ude32|\\ud83d\\ude33|\\ud83d\\ude35|\\ud83d\\ude37|\\ud83d\\ude38|\\ud83d\\ude39|\\ud83d\\ude3a|\\ud83d\\ude3b|\\ud83d\\ude3c|\\ud83d\\ude3d|\\ud83d\\ude3e|\\ud83d\\ude3f|\\ud83d\\ude40|\\ud83d\\ude45|\\ud83d\\ude46|\\ud83d\\ude47|\\ud83d\\ude48|\\ud83d\\ude49|\\ud83d\\ude4a|\\ud83d\\ude4b|\\ud83d\\ude4c|\\ud83d\\ude4d|\\ud83d\\ude4e|\\ud83d\\ude4f|\\ud83d\\ude80|\\ud83d\\ude83|\\ud83d\\ude84|\\ud83d\\ude85|\\ud83d\\ude87|\\ud83d\\ude89|\\ud83d\\ude8c|\\ud83d\\ude8f|\\ud83d\\ude91|\\ud83d\\ude92|\\ud83d\\ude93|\\ud83d\\ude95|\\ud83d\\ude97|\\ud83d\\ude99|\\ud83d\\ude9a|\\ud83d\\udea2|\\ud83d\\udea4|\\ud83d\\udea5|\\ud83d\\udea7|\\ud83d\\udea8|\\ud83d\\udea9|\\ud83d\\udeaa|\\ud83d\\udeab|\\ud83d\\udeac|\\ud83d\\udead|\\ud83d\\udeb2|\\ud83d\\udeb6|\\ud83d\\udeb9|\\ud83d\\udeba|\\ud83d\\udebb|\\ud83d\\udebc|\\ud83d\\udebd|\\ud83d\\udebe|\\ud83d\\udec0|\\ud83c\\udde6|\\ud83c\\udde7|\\ud83c\\udde8|\\ud83c\\udde9|\\ud83c\\uddea|\\ud83c\\uddeb|\\ud83c\\uddec|\\ud83c\\udded|\\ud83c\\uddee|\\ud83c\\uddef|\\ud83c\\uddf0|\\ud83c\\uddf1|\\ud83c\\uddf2|\\ud83c\\uddf3|\\ud83c\\uddf4|\\ud83c\\uddf5|\\ud83c\\uddf6|\\ud83c\\uddf7|\\ud83c\\uddf8|\\ud83c\\uddf9|\\ud83c\\uddfa|\\ud83c\\uddfb|\\ud83c\\uddfc|\\ud83c\\uddfd|\\ud83c\\uddfe|\\ud83c\\uddff|\\ud83c\\udf0d|\\ud83c\\udf0e|\\ud83c\\udf10|\\ud83c\\udf12|\\ud83c\\udf16|\\ud83c\\udf17|\\ue50a|\\u27b0|\\u2797|\\u2796|\\u2795|\\u2755|\\u2754|\\u2753|\\u274e|\\u274c|\\u2728|\\u270b|\\u270a|\\u2705|\\u26ce|\\u23f3|\\u23f0|\\u23ec|\\u23eb|\\u23ea|\\u23e9|\\u27bf|\\u00a9|\\u00ae)|(?:(?:\\ud83c\\udc04|\\ud83c\\udd70|\\ud83c\\udd71|\\ud83c\\udd7e|\\ud83c\\udd7f|\\ud83c\\ude02|\\ud83c\\ude1a|\\ud83c\\ude2f|\\ud83c\\ude37|\\u3299|\\u303d|\\u3030|\\u2b55|\\u2b50|\\u2b1c|\\u2b1b|\\u2b07|\\u2b06|\\u2b05|\\u2935|\\u2934|\\u27a1|\\u2764|\\u2757|\\u2747|\\u2744|\\u2734|\\u2733|\\u2716|\\u2714|\\u2712|\\u270f|\\u270c|\\u2709|\\u2708|\\u2702|\\u26fd|\\u26fa|\\u26f5|\\u26f3|\\u26f2|\\u26ea|\\u26d4|\\u26c5|\\u26c4|\\u26be|\\u26bd|\\u26ab|\\u26aa|\\u26a1|\\u26a0|\\u2693|\\u267f|\\u267b|\\u3297|\\u2666|\\u2665|\\u2663|\\u2660|\\u2653|\\u2652|\\u2651|\\u2650|\\u264f|\\u264e|\\u264d|\\u264c|\\u264b|\\u264a|\\u2649|\\u2648|\\u263a|\\u261d|\\u2615|\\u2614|\\u2611|\\u260e|\\u2601|\\u2600|\\u25fe|\\u25fd|\\u25fc|\\u25fb|\\u25c0|\\u25b6|\\u25ab|\\u25aa|\\u24c2|\\u231b|\\u231a|\\u21aa|\\u21a9|\\u2199|\\u2198|\\u2197|\\u2196|\\u2195|\\u2194|\\u2139|\\u2122|\\u2049|\\u203c|\\u2668)([\\uFE0E\\uFE0F]?)))', 'g'); +// https://mths.be/emoji +export const regexExEmojis3 = /[#*0-9]\uFE0F?\u20E3|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26AA\u26B0\u26B1\u26BD\u26BE\u26C4\u26C8\u26CF\u26D1\u26D3\u26E9\u26F0-\u26F5\u26F7\u26F8\u26FA\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B55\u3030\u303D\u3297\u3299]\uFE0F?|[\u261D\u270C\u270D](?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?|[\u270A\u270B](?:\uD83C[\uDFFB-\uDFFF])?|[\u23E9-\u23EC\u23F0\u23F3\u25FD\u2693\u26A1\u26AB\u26C5\u26CE\u26D4\u26EA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2795-\u2797\u27B0\u27BF\u2B50]|\u26F9(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|\u2764\uFE0F?(?:\u200D(?:\uD83D\uDD25|\uD83E\uDE79))?|\uD83C(?:[\uDC04\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]\uFE0F?|[\uDF85\uDFC2\uDFC7](?:\uD83C[\uDFFB-\uDFFF])?|[\uDFC3\uDFC4\uDFCA](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDFCB\uDFCC](?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uDDE6\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF]|\uDDE7\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF]|\uDDE8\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF]|\uDDE9\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF]|\uDDEA\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA]|\uDDEB\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7]|\uDDEC\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE]|\uDDED\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA]|\uDDEE\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9]|\uDDEF\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5]|\uDDF0\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF]|\uDDF1\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE]|\uDDF2\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF]|\uDDF3\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF]|\uDDF4\uD83C\uDDF2|\uDDF5\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE]|\uDDF6\uD83C\uDDE6|\uDDF7\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC]|\uDDF8\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF]|\uDDF9\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF]|\uDDFA\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF]|\uDDFB\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA]|\uDDFC\uD83C[\uDDEB\uDDF8]|\uDDFD\uD83C\uDDF0|\uDDFE\uD83C[\uDDEA\uDDF9]|\uDDFF\uD83C[\uDDE6\uDDF2\uDDFC]|\uDFF3\uFE0F?(?:\u200D(?:\u26A7\uFE0F?|\uD83C\uDF08))?|\uDFF4(?:\u200D\u2620\uFE0F?|\uDB40\uDC67\uDB40\uDC62\uDB40(?:\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDC73\uDB40\uDC63\uDB40\uDC74|\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F)?)|\uD83D(?:[\uDC08\uDC26](?:\u200D\u2B1B)?|[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3]\uFE0F?|[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC](?:\uD83C[\uDFFB-\uDFFF])?|[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD74\uDD90](?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?|[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC25\uDC27-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED7\uDEDC-\uDEDF\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB\uDFF0]|\uDC15(?:\u200D\uD83E\uDDBA)?|\uDC3B(?:\u200D\u2744\uFE0F?)?|\uDC41\uFE0F?(?:\u200D\uD83D\uDDE8\uFE0F?)?|\uDC68(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDC68\uDC69]\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFE])))?))?|\uDC69(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?[\uDC68\uDC69]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?|\uDC69\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?))|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFE])))?))?|\uDC6F(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDD75(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDE2E(?:\u200D\uD83D\uDCA8)?|\uDE35(?:\u200D\uD83D\uDCAB)?|\uDE36(?:\u200D\uD83C\uDF2B\uFE0F?)?)|\uD83E(?:[\uDD0C\uDD0F\uDD18-\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5\uDEC3-\uDEC5\uDEF0\uDEF2-\uDEF8](?:\uD83C[\uDFFB-\uDFFF])?|[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDDDE\uDDDF](?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD0D\uDD0E\uDD10-\uDD17\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCC\uDDD0\uDDE0-\uDDFF\uDE70-\uDE7C\uDE80-\uDE88\uDE90-\uDEBD\uDEBF-\uDEC2\uDECE-\uDEDB\uDEE0-\uDEE8]|\uDD3C(?:\u200D[\u2640\u2642]\uFE0F?|\uD83C[\uDFFB-\uDFFF])?|\uDDD1(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83E\uDDD1))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?))?|\uDEF1(?:\uD83C(?:\uDFFB(?:\u200D\uD83E\uDEF2\uD83C[\uDFFC-\uDFFF])?|\uDFFC(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFD-\uDFFF])?|\uDFFD(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])?|\uDFFE(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFD\uDFFF])?|\uDFFF(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFE])?))?)/g; +const regexExEmojis4 = /([#0-9]\u20E3)|[\xA9\xAE\u203C\u2047-\u2049\u2122\u2139\u3030\u303D\u3297\u3299][\uFE00-\uFEFF]?|[\u2190-\u21FF][\uFE00-\uFEFF]?|[\u2300-\u23FF][\uFE00-\uFEFF]?|[\u2460-\u24FF][\uFE00-\uFEFF]?|[\u25A0-\u25FF][\uFE00-\uFEFF]?|[\u2600-\u27BF][\uFE00-\uFEFF]?|[\u2900-\u297F][\uFE00-\uFEFF]?|[\u2B00-\u2BF0][\uFE00-\uFEFF]?|(?:\uD83C[\uDC00-\uDFFF]|\uD83D[\uDC00-\uDEFF])[\uFE00-\uFEFF]?/g; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5ncy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvc3RyaW5ncy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsMG1WQUEwbVYsQ0FBQztBQUV4b1YsOENBQThDO0FBQzlDLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxJQUFJLE1BQU0sQ0FBQyxvdVlBQW91WSxFQUFFLEdBQUcsQ0FBQyxDQUFBO0FBRW54WSx3QkFBd0I7QUFDeEIsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLDYyV0FBNjJXLENBQUM7QUFFNTRXLE1BQU0sY0FBYyxHQUFHLG1ZQUFtWSxDQUFBIn0= \ No newline at end of file diff --git a/packages/commons/dist/logger.d.ts b/packages/commons/dist/logger.d.ts index b9b3bbfc..e563b9e0 100644 --- a/packages/commons/dist/logger.d.ts +++ b/packages/commons/dist/logger.d.ts @@ -1,5 +1,5 @@ -import { Logger } from "tslog"; -export declare function createLogger(name: string, options?: any): Logger; -export declare const defaultLogger: Logger; -export { MODULE_NAME } from './constants.js'; -export declare const logger: Logger; +import { Logger } from "tslog"; +export declare function createLogger(name: string, options?: any): Logger; +export declare const defaultLogger: Logger; +export { MODULE_NAME } from './constants.js'; +export declare const logger: Logger; diff --git a/packages/commons/dist/logger.js b/packages/commons/dist/logger.js index edb53336..f575e0db 100644 --- a/packages/commons/dist/logger.js +++ b/packages/commons/dist/logger.js @@ -1,15 +1,15 @@ -import { Logger } from "tslog"; -export function createLogger(name, options) { - return new Logger({ - name, - type: 'pretty', - ...options, - }); -} -export const defaultLogger = createLogger('DefaultLogger', { - minLevel: 1 -}); -import { MODULE_NAME } from './constants.js'; -export { MODULE_NAME } from './constants.js'; -export const logger = createLogger(MODULE_NAME, {}); +import { Logger } from "tslog"; +export function createLogger(name, options) { + return new Logger({ + name, + type: 'pretty', + ...options, + }); +} +export const defaultLogger = createLogger('DefaultLogger', { + minLevel: 1 +}); +import { MODULE_NAME } from './constants.js'; +export { MODULE_NAME } from './constants.js'; +export const logger = createLogger(MODULE_NAME, {}); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2xvZ2dlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW1CLE1BQU0sRUFBRSxNQUFNLE9BQU8sQ0FBQTtBQUUvQyxNQUFNLFVBQVUsWUFBWSxDQUFDLElBQVksRUFBRSxPQUFhO0lBQ3BELE9BQU8sSUFBSSxNQUFNLENBQUM7UUFDZCxJQUFJO1FBQ0osSUFBSSxFQUFFLFFBQVE7UUFDZCxHQUFHLE9BQU87S0FDYixDQUFDLENBQUE7QUFDTixDQUFDO0FBQ0QsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLFlBQVksQ0FBQyxlQUFlLEVBQUU7SUFDdkQsUUFBUSxFQUFFLENBQUM7Q0FDZCxDQUFDLENBQUE7QUFFRixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDNUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBRTVDLE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBRyxZQUFZLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFBIn0= \ No newline at end of file diff --git a/packages/commons/dist/logger.js.map b/packages/commons/dist/logger.js.map index bec77130..3d2882ad 100644 --- a/packages/commons/dist/logger.js.map +++ b/packages/commons/dist/logger.js.map @@ -1 +1 @@ -{"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,MAAM,EAAE,MAAM,OAAO,CAAA;AAE/C,MAAM,UAAU,YAAY,CAAC,IAAY,EAAE,OAAa;IACpD,OAAO,IAAI,MAAM,CAAC;QACd,IAAI;QACJ,IAAI,EAAE,QAAQ;QACd,GAAG,OAAO;KACb,CAAC,CAAA;AACN,CAAC;AACD,MAAM,CAAC,MAAM,aAAa,GAAG,YAAY,CAAC,eAAe,EAAE;IACvD,QAAQ,EAAE,CAAC;CACd,CAAC,CAAA;AAEF,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAE5C,MAAM,CAAC,MAAM,MAAM,GAAG,YAAY,CAAC,WAAW,EAAE,EAAE,CAAC,CAAA"} \ No newline at end of file +{"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,SAA0B,cAAc;AAEjC,SAAS,aAAa,MAAc,SAAe;AACtD,SAAO,IAAI,OAAO;AAAA,IACd;AAAA,IACA,MAAM;AAAA,IACN,GAAG;AAAA,EACP,CAAC;AACL;AACO,MAAM,gBAAgB,aAAa,iBAAiB;AAAA,EACvD,UAAU;AACd,CAAC;AAED,SAAS,mBAAmB;AAC5B,SAAS,eAAAA,oBAAmB;AAErB,MAAM,SAAS,aAAa,aAAa,CAAC,CAAC;","names":["MODULE_NAME"]} \ No newline at end of file diff --git a/packages/commons/dist/os.d.ts b/packages/commons/dist/os.d.ts index aee17e11..c8089e38 100644 --- a/packages/commons/dist/os.d.ts +++ b/packages/commons/dist/os.d.ts @@ -1,10 +1,10 @@ -export declare enum EPlatform { - Linux = "linux", - Windows = "win32", - OSX = "darwin" -} -export declare enum EArch { - x64 = "64", - x32 = "32" -} -export declare const is_windows: () => boolean; +export declare enum EPlatform { + Linux = "linux", + Windows = "win32", + OSX = "darwin" +} +export declare enum EArch { + x64 = "64", + x32 = "32" +} +export declare const is_windows: () => boolean; diff --git a/packages/commons/dist/os.js b/packages/commons/dist/os.js index d65f83e8..fcc17499 100644 --- a/packages/commons/dist/os.js +++ b/packages/commons/dist/os.js @@ -1,13 +1,13 @@ -export var EPlatform; -(function (EPlatform) { - EPlatform["Linux"] = "linux"; - EPlatform["Windows"] = "win32"; - EPlatform["OSX"] = "darwin"; -})(EPlatform = EPlatform || (EPlatform = {})); -export var EArch; -(function (EArch) { - EArch["x64"] = "64"; - EArch["x32"] = "32"; -})(EArch = EArch || (EArch = {})); -export const is_windows = () => process && (process.platform === 'win32'); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvb3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFOLElBQVksU0FJWDtBQUpELFdBQVksU0FBUztJQUNwQiw0QkFBZSxDQUFBO0lBQ2YsOEJBQWlCLENBQUE7SUFDakIsMkJBQWMsQ0FBQTtBQUNmLENBQUMsRUFKVyxTQUFTLEdBQVQsU0FBUyxLQUFULFNBQVMsUUFJcEI7QUFDRCxNQUFNLENBQU4sSUFBWSxLQUdYO0FBSEQsV0FBWSxLQUFLO0lBQ2hCLG1CQUFVLENBQUE7SUFDVixtQkFBVSxDQUFBO0FBQ1gsQ0FBQyxFQUhXLEtBQUssR0FBTCxLQUFLLEtBQUwsS0FBSyxRQUdoQjtBQUNELE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxLQUFLLE9BQU8sQ0FBQyxDQUFBIn0= \ No newline at end of file +export var EPlatform; +(function (EPlatform) { + EPlatform["Linux"] = "linux"; + EPlatform["Windows"] = "win32"; + EPlatform["OSX"] = "darwin"; +})(EPlatform || (EPlatform = {})); +export var EArch; +(function (EArch) { + EArch["x64"] = "64"; + EArch["x32"] = "32"; +})(EArch || (EArch = {})); +export const is_windows = () => process && (process.platform === 'win32'); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvb3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFOLElBQVksU0FJWDtBQUpELFdBQVksU0FBUztJQUNwQiw0QkFBZSxDQUFBO0lBQ2YsOEJBQWlCLENBQUE7SUFDakIsMkJBQWMsQ0FBQTtBQUNmLENBQUMsRUFKVyxTQUFTLEtBQVQsU0FBUyxRQUlwQjtBQUNELE1BQU0sQ0FBTixJQUFZLEtBR1g7QUFIRCxXQUFZLEtBQUs7SUFDaEIsbUJBQVUsQ0FBQTtJQUNWLG1CQUFVLENBQUE7QUFDWCxDQUFDLEVBSFcsS0FBSyxLQUFMLEtBQUssUUFHaEI7QUFDRCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsR0FBRyxFQUFFLENBQUMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsS0FBSyxPQUFPLENBQUMsQ0FBQSJ9 \ No newline at end of file diff --git a/packages/commons/dist/os.js.map b/packages/commons/dist/os.js.map index bd002ee5..4a2b6fa7 100644 --- a/packages/commons/dist/os.js.map +++ b/packages/commons/dist/os.js.map @@ -1 +1 @@ -{"version":3,"file":"os.js","sourceRoot":"","sources":["../src/os.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,SAIX;AAJD,WAAY,SAAS;IACpB,4BAAe,CAAA;IACf,8BAAiB,CAAA;IACjB,2BAAc,CAAA;AACf,CAAC,EAJW,SAAS,GAAT,SAAS,KAAT,SAAS,QAIpB;AACD,MAAM,CAAN,IAAY,KAGX;AAHD,WAAY,KAAK;IAChB,mBAAU,CAAA;IACV,mBAAU,CAAA;AACX,CAAC,EAHW,KAAK,GAAL,KAAK,KAAL,KAAK,QAGhB;AACD,MAAM,CAAC,MAAM,UAAU,GAAG,GAAG,EAAE,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAA"} \ No newline at end of file +{"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":"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/paths.d.ts b/packages/commons/dist/paths.d.ts index 509db186..cb0ff5c3 100644 --- a/packages/commons/dist/paths.d.ts +++ b/packages/commons/dist/paths.d.ts @@ -1 +1 @@ -export {}; +export {}; diff --git a/packages/commons/dist/paths.js b/packages/commons/dist/paths.js index 982e4518..2755cddd 100644 --- a/packages/commons/dist/paths.js +++ b/packages/commons/dist/paths.js @@ -1,2 +1,2 @@ -export {}; +export {}; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF0aHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcGF0aHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9 \ No newline at end of file diff --git a/packages/commons/dist/paths.js.map b/packages/commons/dist/paths.js.map index 8cc16045..84c51b28 100644 --- a/packages/commons/dist/paths.js.map +++ b/packages/commons/dist/paths.js.map @@ -1 +1 @@ -{"version":3,"file":"paths.js","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":""} \ No newline at end of file +{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]} \ No newline at end of file diff --git a/packages/commons/dist/profile.d.ts b/packages/commons/dist/profile.d.ts index e4e84103..66d36157 100644 --- a/packages/commons/dist/profile.d.ts +++ b/packages/commons/dist/profile.d.ts @@ -1,19 +1,19 @@ -interface EnvVariables { - [key: string]: string; -} -interface EnvConfig { - includes: string[]; - variables: EnvVariables; -} -export interface IProfile { - includes: string[]; - variables: EnvVariables; - env?: { - [key: string]: EnvConfig; - }; -} -export declare const resolveConfig: (config: any) => any; -export declare const parse: (profilePath: string, profile: IProfile, options?: { - env: string; -}, rel?: string) => IProfile; -export {}; +interface EnvVariables { + [key: string]: string; +} +interface EnvConfig { + includes: string[]; + variables: EnvVariables; +} +export interface IProfile { + includes: string[]; + variables: EnvVariables; + env?: { + [key: string]: EnvConfig; + }; +} +export declare const resolveConfig: (config: any) => any; +export declare const parse: (profilePath: string, profile: IProfile, options?: { + env: string; +}, rel?: string) => IProfile; +export {}; diff --git a/packages/commons/dist/profile.js b/packages/commons/dist/profile.js index e9e7be07..dc006609 100644 --- a/packages/commons/dist/profile.js +++ b/packages/commons/dist/profile.js @@ -1,77 +1,77 @@ -import * as path from 'path'; -import { REGEX_VAR } from "@polymech/core/constants"; -import { sync as read } from '@polymech/fs/read'; -import { sync as exists } from '@polymech/fs/exists'; -import { isString } from '@polymech/core/types'; -import { resolve, substitute } from './variables.js'; -const _resolve = (config) => { - for (const key in config) { - if (config[key] && typeof config[key] == 'string') { - const resolved = substitute(false, config[key], config); - config[key] = resolved; - } - } - return config; -}; -// @todo: Implement the function `resolveConfig` -export const resolveConfig = (config) => { - config = _resolve(config); - config = _resolve(config); - return config; -}; -export const parse = (profilePath, profile, options = { env: 'default' }, rel) => { - profilePath = path.resolve(resolve(profilePath, false, profile.variables)); - if (!exists(profilePath)) { - return; - } - const _profile = read(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 (isString(_profile.variables[k])) { - _profile.variables[k] = 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 (isString(profile.variables[k])) { - profile.variables[k] = 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(REGEX_VAR)) { - return path.resolve(`${rel}/${i}`); - } - let ret = resolve(i, false, profile.variables); - ret = path.resolve(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; -}; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZmlsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9wcm9maWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFBO0FBQzVCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTtBQUNwRCxPQUFPLEVBQUUsSUFBSSxJQUFJLElBQUksRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQ2hELE9BQU8sRUFBRSxJQUFJLElBQUksTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDcEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBRS9DLE9BQU8sRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFvQnBELE1BQU0sUUFBUSxHQUFHLENBQUMsTUFBTSxFQUFFLEVBQUU7SUFDeEIsS0FBSyxNQUFNLEdBQUcsSUFBSSxNQUFNLEVBQUU7UUFDdEIsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksUUFBUSxFQUFFO1lBQy9DLE1BQU0sUUFBUSxHQUFHLFVBQVUsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFBO1lBQ3ZELE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxRQUFRLENBQUE7U0FDekI7S0FDSjtJQUNELE9BQU8sTUFBTSxDQUFDO0FBQ2xCLENBQUMsQ0FBQTtBQUNELGdEQUFnRDtBQUNoRCxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsQ0FBQyxNQUFNLEVBQUUsRUFBRTtJQUNwQyxNQUFNLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQ3pCLE1BQU0sR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDekIsT0FBTyxNQUFNLENBQUE7QUFDakIsQ0FBQyxDQUFBO0FBRUQsTUFBTSxD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 \ No newline at end of file +import * as path from 'path'; +import { REGEX_VAR } from "@polymech/core/constants"; +import { sync as read } from '@polymech/fs/read'; +import { sync as exists } from '@polymech/fs/exists'; +import { isString } from '@polymech/core/types'; +import { resolve, substitute } from './variables.js'; +const _resolve = (config) => { + for (const key in config) { + if (config[key] && typeof config[key] == 'string') { + const resolved = substitute(false, config[key], config); + config[key] = resolved; + } + } + return config; +}; +// @todo: Implement the function `resolveConfig` +export const resolveConfig = (config) => { + config = _resolve(config); + config = _resolve(config); + return config; +}; +export const parse = (profilePath, profile, options = { env: 'default' }, rel) => { + profilePath = path.resolve(resolve(profilePath, false, profile.variables)); + if (!exists(profilePath)) { + return; + } + const _profile = read(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 (isString(_profile.variables[k])) { + _profile.variables[k] = 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 (isString(profile.variables[k])) { + profile.variables[k] = 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(REGEX_VAR)) { + return path.resolve(`${rel}/${i}`); + } + let ret = resolve(i, false, profile.variables); + ret = path.resolve(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; +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZmlsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9wcm9maWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFBO0FBQzVCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTtBQUNwRCxPQUFPLEVBQUUsSUFBSSxJQUFJLElBQUksRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQ2hELE9BQU8sRUFBRSxJQUFJLElBQUksTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDcEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBRS9DLE9BQU8sRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFvQnBELE1BQU0sUUFBUSxHQUFHLENBQUMsTUFBTSxFQUFFLEVBQUU7SUFDeEIsS0FBSyxNQUFNLEdBQUcsSUFBSSxNQUFNLEVBQUUsQ0FBQztRQUN2QixJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNoRCxNQUFNLFFBQVEsR0FBRyxVQUFVLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQTtZQUN2RCxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsUUFBUSxDQUFBO1FBQzFCLENBQUM7SUFDTCxDQUFDO0lBQ0QsT0FBTyxNQUFNLENBQUM7QUFDbEIsQ0FBQyxDQUFBO0FBQ0QsZ0RBQWdEO0FBQ2hELE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxDQUFDLE1BQU0sRUFBRSxFQUFFO0lBQ3BDLE1BQU0sR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDekIsTUFBTSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUN6QixPQUFPLE1BQU0sQ0FBQTtBQUNqQixD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 \ No newline at end of file diff --git a/packages/commons/dist/profile.js.map b/packages/commons/dist/profile.js.map index bdc2ce2f..d5b23b09 100644 --- a/packages/commons/dist/profile.js.map +++ b/packages/commons/dist/profile.js.map @@ -1 +1 @@ -{"version":3,"file":"profile.js","sourceRoot":"","sources":["../src/profile.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"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":[]} \ No newline at end of file diff --git a/packages/commons/dist/shemas/index.d.ts b/packages/commons/dist/shemas/index.d.ts index bf265d65..6775674b 100644 --- a/packages/commons/dist/shemas/index.d.ts +++ b/packages/commons/dist/shemas/index.d.ts @@ -1,23 +1,23 @@ -import * as CLI from 'yargs'; -import { z, ZodTypeAny, ZodObject } from 'zod'; -export * from './path.js'; -export * from './zod_map.js'; -export declare const generate_interfaces: (schemas: ZodObject[], dst: string) => void; -export declare const enumerateHelpStrings: (schema: ZodTypeAny, path: string[], logger: any) => void; -export declare const yargsDefaults: (yargs: CLI.Argv) => any; -export declare const getInnerSchema: (schema: ZodTypeAny) => ZodTypeAny; -export declare const getInnerType: (type: ZodTypeAny) => any; -export declare const getDefaultValue: (schema: ZodTypeAny) => any; -export declare const getFieldDefaultValue: (schema: ZodTypeAny) => any | undefined; -export declare const getDescription: (schema: ZodTypeAny) => string | undefined; -export declare const toYargs: (yargs: CLI.Argv, zodSchema: ZodObject, options?: { - onKey?: (yargs: CLI.Argv, key: string, options: any) => any; -}) => CLI.Argv; -export declare const WRITERS: { - '.json': (data: any, file: string, name: string, options: {}) => void; -}; -export declare const writer: (file: string) => any; -export declare const write: (schemas: ZodObject[], file: string, name: string, options: {}) => void; -export declare const combineValidatorsOr: (validators: z.ZodTypeAny[]) => z.ZodEffects; -export declare const combineValidatorsOrUsingZod: (validators: z.ZodTypeAny[]) => z.ZodTypeAny; -export declare const combineValidatorsOrUsingZod2: (validators: z.ZodTypeAny[]) => z.ZodTypeAny; +import * as CLI from 'yargs'; +import { z, ZodTypeAny, ZodObject } from 'zod'; +export * from './path.js'; +export * from './zod_map.js'; +export declare const generate_interfaces: (schemas: ZodObject[], dst: string) => void; +export declare const enumerateHelpStrings: (schema: ZodTypeAny, path: string[], logger: any) => void; +export declare const yargsDefaults: (yargs: CLI.Argv) => any; +export declare const getInnerSchema: (schema: ZodTypeAny) => ZodTypeAny; +export declare const getInnerType: (type: ZodTypeAny) => any; +export declare const getDefaultValue: (schema: ZodTypeAny) => any; +export declare const getFieldDefaultValue: (schema: ZodTypeAny) => any | undefined; +export declare const getDescription: (schema: ZodTypeAny) => string | undefined; +export declare const toYargs: (yargs: CLI.Argv, zodSchema: ZodObject, options?: { + onKey?: (yargs: CLI.Argv, key: string, options: any) => any; +}) => CLI.Argv; +export declare const WRITERS: { + '.json': (data: any, file: string, name: string, options: {}) => void; +}; +export declare const writer: (file: string) => any; +export declare const write: (schemas: ZodObject[], file: string, name: string, options: {}) => void; +export declare const combineValidatorsOr: (validators: z.ZodTypeAny[]) => z.ZodEffects; +export declare const combineValidatorsOrUsingZod: (validators: z.ZodTypeAny[]) => z.ZodTypeAny; +export declare const combineValidatorsOrUsingZod2: (validators: z.ZodTypeAny[]) => z.ZodTypeAny; diff --git a/packages/commons/dist/shemas/index.js b/packages/commons/dist/shemas/index.js index f71114ad..f724e5f8 100644 --- a/packages/commons/dist/shemas/index.js +++ b/packages/commons/dist/shemas/index.js @@ -1,204 +1,204 @@ -import * as path from 'path'; -import { z, ZodObject, ZodEffects, ZodOptional, ZodDefault } from 'zod'; -import { sync as writeFS } from '@polymech/fs/write'; -import { zodToTs, printNode } from 'zod-to-ts'; -import { zodToJsonSchema } from "zod-to-json-schema"; -import { logger } from '@/logger.js'; -export * from './path.js'; -export * from './zod_map.js'; -export const generate_interfaces = (schemas, dst) => { - const types = schemas.map(schema => `export interface ${schema.description || 'IOptions'} ${printNode(zodToTs(schema).node)}`); - writeFS(dst, types.join('\n')); -}; -export const enumerateHelpStrings = (schema, path = [], logger) => { - if (schema instanceof ZodObject) { - for (const key in schema.shape) { - const nestedSchema = schema.shape[key]; - enumerateHelpStrings(nestedSchema, [...path, key], logger); - } - } - else { - const description = schema._def.description; - if (description) { - logger.debug(`\t ${path.join('.')}: ${description}`); - } - } -}; -export const yargsDefaults = (yargs) => yargs.parserConfiguration({ "camel-case-expansion": false }); -export const getInnerSchema = (schema) => { - while (schema instanceof ZodEffects) { - schema = schema._def.schema; - } - return schema; -}; -export const getInnerType = (type) => { - while (type instanceof ZodOptional) { - type = type._def.innerType; - } - while (type._def.typeName === 'ZodDefault' || type._def.typeName === 'ZodOptional') { - type = type._def.innerType; - } - return type._def.typeName; -}; -export const getDefaultValue = (schema) => { - if (schema instanceof ZodDefault) { - return schema._def.defaultValue(); - } - return undefined; -}; -export const getFieldDefaultValue = (schema) => { - if (!schema) { - return undefined; - } - if (schema._def.typeName === 'ZodDefault') { - return schema._def.defaultValue(); - } - if (schema instanceof ZodOptional) { - return getFieldDefaultValue(schema.unwrap()); - } - if (schema instanceof ZodEffects) { - return getFieldDefaultValue(schema._def.schema); - } - if (typeof schema._def) { - return getFieldDefaultValue(schema._def.schema); - } - return undefined; -}; -export const getDescription = (schema) => { - if (!schema) { - return undefined; - } - if (schema._def.description) { - return schema._def.description; - } - if (schema instanceof ZodOptional) { - return getDescription(schema.unwrap()); - } - if (schema instanceof ZodEffects) { - return getDescription(schema._def.schema); - } - if (typeof schema._def) { - return getDescription(schema._def.schema); - } - return undefined; -}; -export const toYargs = (yargs, zodSchema, options) => { - yargsDefaults(yargs); - try { - const shape = zodSchema.shape; - for (const key in shape) { - const zodField = shape[key]; - const innerDef = getInnerSchema(zodField); - if (!innerDef) { - continue; - } - let type; - const inner_type = getInnerType(innerDef); - let descriptionExtra = ''; - switch (inner_type) { - case 'ZodString': - type = 'string'; - break; - case 'ZodBoolean': - type = 'boolean'; - break; - case 'ZodNumber': - type = 'number'; - break; - case 'ZodOptional': - case 'ZodEnum': - type = getInnerType(innerDef); - if (innerDef._def.typeName === 'ZodEnum') { - descriptionExtra = `\n\t ${innerDef._def.values.join(' \n\t ')}`; - } - break; - } - const defaultValue = getFieldDefaultValue(zodField); - let handled = false; - const args = { - type, - default: defaultValue, - describe: `${zodField._def.description || ''} ${descriptionExtra}`.trim() - }; - if (options?.onKey) { - handled = options.onKey(yargs, key, args); - } - if (!handled) { - yargs.option(key, args); - } - } - return yargs; - } - catch (error) { - logger.error('Error processing schema:', error); - return yargs; - } -}; -///////////////////////////////////////////////////////// -// -// Schema Writers -// -const extension = (file) => path.parse(file).ext; -const json = (data, file, name, options) => writeFS(file, data.map((s) => zodToJsonSchema(s, name))); -export const WRITERS = { - '.json': json -}; -export const writer = (file) => WRITERS[extension(file)]; -export const write = (schemas, file, name, options) => { - if (!WRITERS[extension(file)]) { - logger.error(`No writer found for file extension: ${extension(file)} : file: ${file}`); - return; - } - logger.debug(`Writing schema to ${file} : ${name}`); - try { - writer(file)(schemas, file, name, options); - } - catch (e) { - logger.trace(`Error writing schema to ${file} : ${name}`, e, e.stack, e.message); - } -}; -//////////////////////////////////////////////////////////////////// -// -// Schema Combinators -export const combineValidatorsOr = (validators) => { - return z.string().refine((value) => { - const errors = []; - const isValid = validators.some((validator) => { - try { - validator.parse(value); - return true; - } - catch (err) { - errors.push(err.errors); - return false; - } - }); - if (!isValid) { - throw new z.ZodError(errors.flat()); - } - return true; - }, 'Invalid value for all provided validators'); -}; -export const combineValidatorsOrUsingZod = (validators) => { - return validators.reduce((acc, validator) => acc.or(validator)); -}; -export const combineValidatorsOrUsingZod2 = (validators) => { - return validators.reduce((acc, validator) => { - return acc.or(validator).refine((value) => { - try { - acc.parse(value); - return true; - } - catch (errAcc) { - try { - validator.parse(value); - return true; - } - catch (errValidator) { - throw new z.ZodError([...errAcc.errors, ...errValidator.errors]); - } - } - }); - }); -}; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2hlbWFzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFBO0FBRTVCLE9BQU8sRUFBRSxDQUFDLEVBQWMsU0FBUyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLE1BQU0sS0FBSyxDQUFBO0FBQ25GLE9BQU8sRUFBRSxJQUFJLElBQUksT0FBTyxFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFDcEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFDOUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBRXBELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFFcEMsY0FBYyxXQUFXLENBQUE7QUFDekIsY0FBYyxjQUFjLENBQUE7QUFXNUIsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxPQUF5QixFQUFFLEdBQVcsRUFBRSxFQUFFO0lBQzFFLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxvQkFBb0IsTUFBTSxDQUFDLFdBQVcsSUFBSSxVQUFVLElBQUksU0FBUyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUE7SUFDOUgsT0FBTyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7QUFDbEMsQ0FBQyxDQUFBO0FBQ0QsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxNQUFrQixFQUFFLE9BQWlCLEVBQUUsRUFBRSxNQUFXLEVBQVEsRUFBRTtJQUMvRixJQUFJLE1BQU0sWUFBWSxTQUFTLEVBQUU7UUFDN0IsS0FBSyxNQUFNLEdBQUcsSUFBSSxNQUFN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 \ No newline at end of file +import * as path from 'path'; +import { z, ZodObject, ZodEffects, ZodOptional, ZodDefault } from 'zod'; +import { sync as writeFS } from '@polymech/fs/write'; +import { zodToTs, printNode } from 'zod-to-ts'; +import { zodToJsonSchema } from "zod-to-json-schema"; +import { logger } from '@/logger.js'; +export * from './path.js'; +export * from './zod_map.js'; +export const generate_interfaces = (schemas, dst) => { + const types = schemas.map(schema => `export interface ${schema.description || 'IOptions'} ${printNode(zodToTs(schema).node)}`); + writeFS(dst, types.join('\n')); +}; +export const enumerateHelpStrings = (schema, path = [], logger) => { + if (schema instanceof ZodObject) { + for (const key in schema.shape) { + const nestedSchema = schema.shape[key]; + enumerateHelpStrings(nestedSchema, [...path, key], logger); + } + } + else { + const description = schema._def.description; + if (description) { + logger.debug(`\t ${path.join('.')}: ${description}`); + } + } +}; +export const yargsDefaults = (yargs) => yargs.parserConfiguration({ "camel-case-expansion": false }); +export const getInnerSchema = (schema) => { + while (schema instanceof ZodEffects) { + schema = schema._def.schema; + } + return schema; +}; +export const getInnerType = (type) => { + while (type instanceof ZodOptional) { + type = type._def.innerType; + } + while (type._def.typeName === 'ZodDefault' || type._def.typeName === 'ZodOptional') { + type = type._def.innerType; + } + return type._def.typeName; +}; +export const getDefaultValue = (schema) => { + if (schema instanceof ZodDefault) { + return schema._def.defaultValue(); + } + return undefined; +}; +export const getFieldDefaultValue = (schema) => { + if (!schema) { + return undefined; + } + if (schema._def.typeName === 'ZodDefault') { + return schema._def.defaultValue(); + } + if (schema instanceof ZodOptional) { + return getFieldDefaultValue(schema.unwrap()); + } + if (schema instanceof ZodEffects) { + return getFieldDefaultValue(schema._def.schema); + } + if (typeof schema._def) { + return getFieldDefaultValue(schema._def.schema); + } + return undefined; +}; +export const getDescription = (schema) => { + if (!schema) { + return undefined; + } + if (schema._def.description) { + return schema._def.description; + } + if (schema instanceof ZodOptional) { + return getDescription(schema.unwrap()); + } + if (schema instanceof ZodEffects) { + return getDescription(schema._def.schema); + } + if (typeof schema._def) { + return getDescription(schema._def.schema); + } + return undefined; +}; +export const toYargs = (yargs, zodSchema, options) => { + yargsDefaults(yargs); + try { + const shape = zodSchema.shape; + for (const key in shape) { + const zodField = shape[key]; + const innerDef = getInnerSchema(zodField); + if (!innerDef) { + continue; + } + let type; + const inner_type = getInnerType(innerDef); + let descriptionExtra = ''; + switch (inner_type) { + case 'ZodString': + type = 'string'; + break; + case 'ZodBoolean': + type = 'boolean'; + break; + case 'ZodNumber': + type = 'number'; + break; + case 'ZodOptional': + case 'ZodEnum': + type = getInnerType(innerDef); + if (innerDef._def.typeName === 'ZodEnum') { + descriptionExtra = `\n\t ${innerDef._def.values.join(' \n\t ')}`; + } + break; + } + const defaultValue = getFieldDefaultValue(zodField); + let handled = false; + const args = { + type, + default: defaultValue, + describe: `${zodField._def.description || ''} ${descriptionExtra}`.trim() + }; + if (options?.onKey) { + handled = options.onKey(yargs, key, args); + } + if (!handled) { + yargs.option(key, args); + } + } + return yargs; + } + catch (error) { + logger.error('Error processing schema:', error); + return yargs; + } +}; +///////////////////////////////////////////////////////// +// +// Schema Writers +// +const extension = (file) => path.parse(file).ext; +const json = (data, file, name, options) => writeFS(file, data.map((s) => zodToJsonSchema(s, name))); +export const WRITERS = { + '.json': json +}; +export const writer = (file) => WRITERS[extension(file)]; +export const write = (schemas, file, name, options) => { + if (!WRITERS[extension(file)]) { + logger.error(`No writer found for file extension: ${extension(file)} : file: ${file}`); + return; + } + logger.debug(`Writing schema to ${file} : ${name}`); + try { + writer(file)(schemas, file, name, options); + } + catch (e) { + logger.trace(`Error writing schema to ${file} : ${name}`, e, e.stack, e.message); + } +}; +//////////////////////////////////////////////////////////////////// +// +// Schema Combinators +export const combineValidatorsOr = (validators) => { + return z.string().refine((value) => { + const errors = []; + const isValid = validators.some((validator) => { + try { + validator.parse(value); + return true; + } + catch (err) { + errors.push(err.errors); + return false; + } + }); + if (!isValid) { + throw new z.ZodError(errors.flat()); + } + return true; + }, 'Invalid value for all provided validators'); +}; +export const combineValidatorsOrUsingZod = (validators) => { + return validators.reduce((acc, validator) => acc.or(validator)); +}; +export const combineValidatorsOrUsingZod2 = (validators) => { + return validators.reduce((acc, validator) => { + return acc.or(validator).refine((value) => { + try { + acc.parse(value); + return true; + } + catch (errAcc) { + try { + validator.parse(value); + return true; + } + catch (errValidator) { + throw new z.ZodError([...errAcc.errors, ...errValidator.errors]); + } + } + }); + }); +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2hlbWFzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFBO0FBRTVCLE9BQU8sRUFBRSxDQUFDLEVBQWMsU0FBUyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLE1BQU0sS0FBSyxDQUFBO0FBQ25GLE9BQU8sRUFBRSxJQUFJLElBQUksT0FBTyxFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFDcEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFDOUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBRXBELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFFcEMsY0FBYyxXQUFXLENBQUE7QUFDekIsY0FBYyxjQUFjLENBQUE7QUFXNUIsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxPQUF5QixFQUFFLEdBQVcsRUFBRSxFQUFFO0lBQzFFLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxvQkFBb0IsTUFBTSxDQUFDLFdBQVcsSUFBSSxVQUFVLElBQUksU0FBUyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUE7SUFDOUgsT0FBTyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7QUFDbEMsQ0FBQyxDQUFBO0FBQ0QsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxNQUFrQixFQUFFLE9BQWlCLEVBQUUsRUFBRSxNQUFXLEVBQVEsRUFBRTtJQUMvRixJQUFJLE1BQU0sWUFBWSxTQUFTLEVBQUUsQ0FBQztRQUM5QixLQUFLLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUM3QixNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3ZDLG9CQUFvQixDQUFDLFlBQVksRUFBRSxDQUFDLEdBQUcsSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFBO1FBQzlELENBQUM7SUFDTCxDQUFDO1NBQU0sQ0FBQztRQUNKLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBQzVDLElBQUksV0FBVyxFQUFFLENBQUM7WUFDZCxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxXQUFXLEVBQUUsQ0FBQyxDQUFBO1FBQ3hELENBQUM7SUFDTCxDQUFDO0FBQ0wsQ0FBQyxDQUFBO0FBQ0QsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLENBQUMsS0FBZSxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsbUJBQW1CLENBQUMsRUFBRSxzQkFBc0IsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFBO0FBRTlHLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxDQUFDLE1BQWtCLEVBQWMsRUFBRTtJQUM3RCxPQUFPLE1BQU0sWUFBWSxVQUFVLEVBQUUsQ0FBQztRQUNsQyxNQUFNLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUE7SUFDL0IsQ0FBQztJQUNELE9BQU8sTUFBTSxDQUFBO0FBQ2pCLENBQUMsQ0FBQTtBQUNELE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxDQUFDLElBQWdCLEVBQUUsRUFBRTtJQUM3QyxPQUFPLElBQUksWUFBWSxXQUFXLEVBQUUsQ0FBQztRQUNqQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUE7SUFDOUIsQ0FBQztJQUNELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEtBQUssWUFBWSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxLQUFLLGFBQWEsRUFBRSxDQUFDO1FBQ2pGLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUMvQixDQUFDO0lBQ0QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQTtBQUM3QixDQUFDLENBQUE7QUFDRCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsQ0FBQyxNQUFrQixFQUFFLEVBQUU7SUFDbEQsSUFBSSxNQUFNLFlBQVksVUFBVSxFQUFFLENBQUM7UUFDL0IsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFDRCxPQUFPLFNBQVMsQ0FBQztBQUNyQixDQUFDLENBQUE7QUFDRCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLE1BQWtCLEVBQW1CLEVBQUU7SUFDeEUsSUFBRyxDQUFDLE1BQU0sRUFBQyxDQUFDO1FBQ1IsT0FBTyxTQUFTLENBQUE7SUFDcEIsQ0FBQztJQUNELElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLEtBQUssWUFBWSxFQUFFLENBQUM7UUFDeEMsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFDRCxJQUFJLE1BQU0sWUFBWSxXQUFXLEVBQUUsQ0FBQztRQUNsQyxPQUFPLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFDRCxJQUFJLE1BQU0sWUFBWSxVQUFVLEVBQUUsQ0FBQztRQUNqQyxPQUFPLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUNELElBQUcsT0FBTyxNQUFNLENBQUMsSUFBSSxFQUFDLENBQUM7UUFDbkIsT0FBTyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQ25ELENBQUM7SUFDRCxPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDLENBQUE7QUFDSCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxNQUFrQixFQUFzQixFQUFFO0lBQ3JFLElBQUcsQ0FBQyxNQUFNLEVBQUMsQ0FBQztRQUNSLE9BQU8sU0FBUyxDQUFBO0lBQ3BCLENBQUM7SUFDRCxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDNUIsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUNqQyxDQUFDO0lBQ0QsSUFBSSxNQUFNLFlBQVksV0FBVyxFQUFFLENBQUM7UUFDbEMsT0FBTyxjQUFjLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVELElBQUksTUFBTSxZQUFZLFVBQVUsRUFBRSxDQUFDO1FBQ2pDLE9BQU8sY0FBYyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVELElBQUcsT0FBTyxNQUFNLENBQUMsSUFBSSxFQUFDLENBQUM7UUFDbkIsT0FBTyxjQUFjLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUM3QyxDQUFDO0lBQ0QsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQyxDQUFBO0FBQ0gsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLENBQUMsS0FBZSxFQUFFLFNBQXlCLEVBQUUsT0FFbkUsRUFBRSxFQUFFO0lBQ0QsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ3BCLElBQUksQ0FBQztRQUNELE1BQU0sS0FBSyxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUE7UUFDN0IsS0FBSyxNQUFNLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUN0QixNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFlLENBQUE7WUFDekMsTUFBTSxRQUFRLEdBQUcsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFBO1lBQ3pDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDWixTQUFRO1lBQ1osQ0FBQztZQUNELElBQUksSUFBaUQsQ0FBQztZQUN0RCxNQUFNLFVBQVUsR0FBRyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUE7WUFDekMsSUFBSSxnQkFBZ0IsR0FBRyxFQUFFLENBQUE7WUFDekIsUUFBUSxVQUFVLEVBQUUsQ0FBQztnQkFDakIsS0FBSyxXQUFXO29CQUNaLElBQUksR0FBRyxRQUFRLENBQUE7b0JBQ2YsTUFBSztnQkFDVCxLQUFLLFlBQVk7b0JBQ2IsSUFBSSxHQUFHLFNBQVMsQ0FBQTtvQkFDaEIsTUFBSztnQkFDVCxLQUFLLFdBQVc7b0JBQ1osSUFBSSxHQUFHLFFBQVEsQ0FBQTtvQkFDZixNQUFLO2dCQUNULEtBQUssYUFBYSxDQUFDO2dCQUNuQixLQUFLLFNBQVM7b0JBQ1YsSUFBSSxHQUFHLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQTtvQkFDN0IsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsS0FBSyxTQUFTLEVBQUUsQ0FBQzt3QkFDdkMsZ0JBQWdCLEdBQUcsUUFBUSxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQTtvQkFDcEUsQ0FBQztvQkFDRCxNQUFLO1lBQ2IsQ0FBQztZQUNELE1BQU0sWUFBWSxHQUFHLG9CQUFvQixDQUFDLFFBQVEsQ0FBQyxDQUFBO1lBQ25ELElBQUksT0FBTyxHQUFHLEtBQUssQ0FBQTtZQUNuQixNQUFNLElBQUksR0FBRztnQkFDVCxJQUFJO2dCQUNKLE9BQU8sRUFBRSxZQUFZO2dCQUNyQixRQUFRLEVBQUUsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsSUFBSSxFQUFFLElBQUksZ0JBQWdCLEVBQUUsQ0FBQyxJQUFJLEVBQUU7YUFDNUUsQ0FBQTtZQUNELElBQUcsT0FBTyxFQUFFLEtBQUssRUFBQyxDQUFDO2dCQUNmLE9BQU8sR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUE7WUFDN0MsQ0FBQztZQUNELElBQUcsQ0FBQyxPQUFPLEVBQUMsQ0FBQztnQkFDVCxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBQyxJQUFJLENBQUMsQ0FBQTtZQUMxQixDQUFDO1FBQ0wsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFBO0lBQ2hCLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2IsTUFBTSxDQUFDLEtBQUssQ0FBQywwQkFBMEIsRUFBRSxLQUFLLENBQUMsQ0FBQTtRQUMvQyxPQUFPLEtBQUssQ0FBQTtJQUNoQixDQUFDO0FBQ0wsQ0FBQyxDQUFBO0FBQ0QseURBQXlEO0FBQ3pELEVBQUU7QUFDRixrQkFBa0I7QUFDbEIsRUFBRTtBQUNGLE1BQU0sU0FBUyxHQUFHLENBQUMsSUFBWSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQTtBQUN4RCxNQUFNLElBQUksR0FBRyxDQUFDLElBQVMsRUFBRSxJQUFZLEVBQUUsSUFBWSxFQUFFLE9BQVcsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxlQUFlLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQTtBQUU3SCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQ3BCO0lBQ0ksT0FBTyxFQUFFLElBQUk7Q0FDaEIsQ0FBQTtBQUVELE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBRyxDQUFDLElBQVksRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO0FBRWhFLE1BQU0sQ0FBQyxNQUFNLEtBQUssR0FBRyxDQUFDLE9BQXlCLEVBQUUsSUFBWSxFQUFFLElBQVksRUFBRSxPQUFXLEVBQUUsRUFBRTtJQUN4RixJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDNUIsTUFBTSxDQUFDLEtBQUssQ0FBQyx1Q0FBdUMsU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLElBQUksRUFBRSxDQUFDLENBQUE7UUFDdEYsT0FBTTtJQUNWLENBQUM7SUFDRCxNQUFNLENBQUMsS0FBSyxDQUFDLHFCQUFxQixJQUFJLE1BQU0sSUFBSSxFQUFFLENBQUMsQ0FBQTtJQUNuRCxJQUFJLENBQUM7UUFDRCxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUE7SUFDOUMsQ0FBQztJQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDVCxNQUFNLENBQUMsS0FBSyxDQUFDLDJCQUEyQixJQUFJLE1BQU0sSUFBSSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQ3BGLENBQUM7QUFDTCxDQUFDLENBQUE7QUFDRCxvRUFBb0U7QUFDcEUsRUFBRTtBQUNGLHNCQUFzQjtBQUN0QixNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLFVBQTBCLEVBQUUsRUFBRTtJQUM5RCxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtRQUMvQixNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDbEIsTUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFO1lBQzFDLElBQUksQ0FBQztnQkFDRCxTQUFTLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFBO2dCQUN0QixPQUFPLElBQUksQ0FBQztZQUNoQixDQUFDO1lBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztnQkFDWCxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQTtnQkFDdkIsT0FBTyxLQUFLLENBQUM7WUFDakIsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ1gsTUFBTSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUE7UUFDdkMsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUMsRUFBRSwyQ0FBMkMsQ0FBQyxDQUFBO0FBQ25ELENBQUMsQ0FBQTtBQUVELE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUFHLENBQUMsVUFBMEIsRUFBRSxFQUFFO0lBQ3RFLE9BQU8sVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztBQUNwRSxDQUFDLENBQUM7QUFDRixNQUFNLENBQUMsTUFBTSw0QkFBNEIsR0FBRyxDQUFDLFVBQTBCLEVBQUUsRUFBRTtJQUN2RSxPQUFPLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsU0FBUyxFQUFFLEVBQUU7UUFDeEMsT0FBTyxHQUFHLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ3RDLElBQUksQ0FBQztnQkFDRCxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNqQixPQUFPLElBQUksQ0FBQztZQUNoQixDQUFDO1lBQUMsT0FBTyxNQUFNLEVBQUUsQ0FBQztnQkFDZCxJQUFJLENBQUM7b0JBQ0QsU0FBUyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDdkIsT0FBTyxJQUFJLENBQUM7Z0JBQ2hCLENBQUM7Z0JBQUMsT0FBTyxZQUFZLEVBQUUsQ0FBQztvQkFDcEIsTUFBTSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztnQkFDckUsQ0FBQztZQUNMLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQTtJQUNOLENBQUMsQ0FBQyxDQUFBO0FBQ04sQ0FBQyxDQUFBIn0= \ No newline at end of file diff --git a/packages/commons/dist/shemas/openapi.d.ts b/packages/commons/dist/shemas/openapi.d.ts index 509db186..cb0ff5c3 100644 --- a/packages/commons/dist/shemas/openapi.d.ts +++ b/packages/commons/dist/shemas/openapi.d.ts @@ -1 +1 @@ -export {}; +export {}; diff --git a/packages/commons/dist/shemas/openapi.js b/packages/commons/dist/shemas/openapi.js index 6f200e43..ad268fda 100644 --- a/packages/commons/dist/shemas/openapi.js +++ b/packages/commons/dist/shemas/openapi.js @@ -1,22 +1,22 @@ -export {}; -/* -export const openapi = (data: ZodObject[], file: string, name: string, options: {}) => { - const registry = new OpenAPIRegistry() - data.forEach((s) => registry.register(s.description, s)) - const generator = new OpenApiGeneratorV3(registry.definitions) - const component = generator.generateComponents() - // const content = stringifyYAML(component) - return component -} -*/ -/* -const yaml = (data: ZodObject[], file: string, name: string, options: {}) => { - const registry = new OpenAPIRegistry() - data.forEach((s) => registry.register(s.description, s)) - const generator = new OpenApiGeneratorV3(registry.definitions) - const component = generator.generateComponents() - logger.debug(`Writing schema to ${file} : ${name}`,component) - writeFS(file,stringifyYAML(component)) -} -*/ +export {}; +/* +export const openapi = (data: ZodObject[], file: string, name: string, options: {}) => { + const registry = new OpenAPIRegistry() + data.forEach((s) => registry.register(s.description, s)) + const generator = new OpenApiGeneratorV3(registry.definitions) + const component = generator.generateComponents() + // const content = stringifyYAML(component) + return component +} +*/ +/* +const yaml = (data: ZodObject[], file: string, name: string, options: {}) => { + const registry = new OpenAPIRegistry() + data.forEach((s) => registry.register(s.description, s)) + const generator = new OpenApiGeneratorV3(registry.definitions) + const component = generator.generateComponents() + logger.debug(`Writing schema to ${file} : ${name}`,component) + writeFS(file,stringifyYAML(component)) +} +*/ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlbmFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zaGVtYXMvb3BlbmFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7OztFQVNFO0FBQ0Y7Ozs7Ozs7OztFQVNFIn0= \ No newline at end of file diff --git a/packages/commons/dist/shemas/path.d.ts b/packages/commons/dist/shemas/path.d.ts index a7c00e9f..2092e35a 100644 --- a/packages/commons/dist/shemas/path.d.ts +++ b/packages/commons/dist/shemas/path.d.ts @@ -1,30 +1,30 @@ -import { z, ZodTypeAny } from 'zod'; -export declare enum E_PATH { - ENSURE_PATH_EXISTS = 1, - INVALID_INPUT = 2, - ENSURE_DIRECTORY_WRITABLE = 3, - ENSURE_FILE_IS_JSON = 4, - ENSURE_PATH_IS_ABSOLUTE = 5, - ENSURE_PATH_IS_RELATIVE = 6, - GET_PATH_INFO = 7 -} -export declare const Transformers: Record; -export declare const TransformersDescription: { - description: string; - fn: any; -}[]; -export declare const extendSchema: (baseSchema: z.ZodObject, extend: Record) => z.ZodObject, "strip", z.ZodTypeAny, { - [x: string]: any; -}, { - [x: string]: any; -}>; -export declare const ENSURE_DIRECTORY_WRITABLE: (inputPath: string, ctx: any, variables: Record) => string; -export declare const IS_VALID_STRING: (inputPath: string) => boolean; -export declare const ENSURE_PATH_EXISTS: (inputPath: string, ctx: any, variables: Record) => string; -export declare const test: () => z.ZodObject, "strip", z.ZodTypeAny, { - [x: string]: any; -}, { - [x: string]: any; -}>; -export declare const Templates: Record; -export declare const extend: (baseSchema: ZodTypeAny, template: any, variables?: Record) => z.ZodTypeAny; +import { z, ZodTypeAny } from 'zod'; +export declare enum E_PATH { + ENSURE_PATH_EXISTS = 1, + INVALID_INPUT = 2, + ENSURE_DIRECTORY_WRITABLE = 3, + ENSURE_FILE_IS_JSON = 4, + ENSURE_PATH_IS_ABSOLUTE = 5, + ENSURE_PATH_IS_RELATIVE = 6, + GET_PATH_INFO = 7 +} +export declare const Transformers: Record; +export declare const TransformersDescription: { + description: string; + fn: any; +}[]; +export declare const extendSchema: (baseSchema: z.ZodObject, extend: Record) => z.ZodObject, "strip", z.ZodTypeAny, { + [x: string]: any; +}, { + [x: string]: any; +}>; +export declare const ENSURE_DIRECTORY_WRITABLE: (inputPath: string, ctx: any, variables: Record) => string; +export declare const IS_VALID_STRING: (inputPath: string) => boolean; +export declare const ENSURE_PATH_EXISTS: (inputPath: string, ctx: any, variables: Record) => string; +export declare const test: () => z.ZodObject, "strip", z.ZodTypeAny, { + [x: string]: any; +}, { + [x: string]: any; +}>; +export declare const Templates: Record; +export declare const extend: (baseSchema: ZodTypeAny, template: any, variables?: Record) => z.ZodTypeAny; diff --git a/packages/commons/dist/shemas/path.js b/packages/commons/dist/shemas/path.js index 3b085916..71344c20 100644 --- a/packages/commons/dist/shemas/path.js +++ b/packages/commons/dist/shemas/path.js @@ -1,239 +1,239 @@ -import { z } from 'zod'; -import * as path from 'path'; -import { accessSync, constants, lstatSync, existsSync } from 'fs'; -import { isString } from '@polymech/core/primitives'; -import { logger } from '@/logger.js'; -import { sync as exists } from '@polymech/fs/exists'; -import { sync as read } from '@polymech/fs/read'; -import { DEFAULT_VARS, resolve, resolveVariables } from '@/variables.js'; -import { getDescription } from '@/shemas/index.js'; -import { isFile } from '@/lib/fs.js'; -const DefaultPathSchemaBase = z.string().describe('Path to a file or directory'); -const PathErrorMessages = { - INVALID_INPUT: 'INVALID_INPUT: ${inputPath}', - PATH_DOES_NOT_EXIST: 'Path does not exist ${inputPath} = ${resolvedPath}', - DIRECTORY_NOT_WRITABLE: 'Directory is not writable ${inputPath} = ${resolvedPath}', - NOT_A_DIRECTORY: 'Path is not a directory or does not exist ${inputPath} = ${resolvedPath}', - NOT_A_JSON_FILE: 'File is not a JSON file or does not exist ${inputPath} = ${resolvedPath}', - PATH_NOT_ABSOLUTE: 'Path is not absolute ${inputPath} = ${resolvedPath}', - PATH_NOT_RELATIVE: 'Path is not relative ${inputPath} = ${resolvedPath}', -}; -export var E_PATH; -(function (E_PATH) { - E_PATH[E_PATH["ENSURE_PATH_EXISTS"] = 1] = "ENSURE_PATH_EXISTS"; - E_PATH[E_PATH["INVALID_INPUT"] = 2] = "INVALID_INPUT"; - E_PATH[E_PATH["ENSURE_DIRECTORY_WRITABLE"] = 3] = "ENSURE_DIRECTORY_WRITABLE"; - E_PATH[E_PATH["ENSURE_FILE_IS_JSON"] = 4] = "ENSURE_FILE_IS_JSON"; - E_PATH[E_PATH["ENSURE_PATH_IS_ABSOLUTE"] = 5] = "ENSURE_PATH_IS_ABSOLUTE"; - E_PATH[E_PATH["ENSURE_PATH_IS_RELATIVE"] = 6] = "ENSURE_PATH_IS_RELATIVE"; - E_PATH[E_PATH["GET_PATH_INFO"] = 7] = "GET_PATH_INFO"; -})(E_PATH = E_PATH || (E_PATH = {})); -export const Transformers = { - resolve: (val, variables = {}) => { - if (!val) { - return null; - } - return { - resolved: path.resolve(resolve(val, false, variables)), - source: val - }; - }, - json: (val, variables = {}) => { - if (!val) { - return null; - } - const resolved = path.resolve(resolve(isString(val) ? val : val.source, false, variables)); - return { - resolved, - source: val, - value: read(resolved, 'json') - }; - }, - string: (val, variables = {}) => { - if (!val) { - return null; - } - let src = isString(val) ? val : val.source; - src = resolve(src, false, variables); - const resolved = path.resolve(src); - if (!exists(resolved) || !isFile(resolved)) { - return { - resolved, - source: val, - value: null - }; - } - else { - let value = null; - try { - value = read(resolved, 'string'); - } - catch (e) { - logger.error('Failed to read file', { resolved, source: val, error: e.message }); - } - return { - resolved, - source: val, - value - }; - } - } -}; -export const TransformersDescription = [ - { - description: 'RESOLVE_PATH', - fn: Transformers.resolve - }, - { - description: 'READ_JSON', - fn: Transformers.json - }, - { - description: 'READ_STRING', - fn: Transformers.string - } -]; -const extendType = (type, extend, variables = {}) => { - if (Array.isArray(extend.refine)) { - for (const refine of extend.refine) { - type = type.refine(refine); - } - } - else { - type = type.refine(extend.refine); - } - if (Array.isArray(extend.transform)) { - for (const transform of extend.transform) { - type = type.transform((val) => transform(val, variables)); - } - } - else { - type = type.transform(extend.transform); - } - return type; -}; -const extendTypeDescription = (type, extension, variables = {}) => { - const description = getDescription(type) || ''; - let transformerDescriptions = 'Transformers:\n'; - if (Array.isArray(extension.transform)) { - for (const transform of extension.transform) { - transformerDescriptions += transformerDescription(transform) + '\n'; - } - } - else { - transformerDescriptions += transformerDescription(extension.transform) + '\n'; - } - type = type.describe(description + '\n' + transformerDescriptions); - return type; -}; -const transformerDescription = (fn) => { - const description = TransformersDescription.find((t) => t.fn === fn); - return description ? description.description : 'Unknown'; -}; -export const extendSchema = (baseSchema, extend) => { - const baseShape = baseSchema.shape; - const extendedShape = { ...baseShape }; - for (const [key, refines] of Object.entries(extend)) { - if (!baseShape[key]) - continue; - let fieldSchema = baseShape[key]; - if (Array.isArray(refines.refine)) { - for (const refine of refines.refine) { - fieldSchema = fieldSchema.superRefine(refine); - } - } - else { - fieldSchema = fieldSchema.superRefine(refines); - } - if (Array.isArray(refines.transform)) { - for (const transform of refines.transform) { - fieldSchema = fieldSchema.transform((val) => transform(val)); - } - } - else { - fieldSchema = fieldSchema.transform(refines.transform); - } - extendedShape[key] = fieldSchema; - } - return z.object(extendedShape); -}; -export const ENSURE_DIRECTORY_WRITABLE = (inputPath, ctx, variables) => { - const resolvedPath = path.resolve(resolve(inputPath, false, variables)); - const parts = path.parse(resolvedPath); - if (resolvedPath && existsSync(parts.dir) && lstatSync(parts.dir).isDirectory()) { - try { - accessSync(resolvedPath, constants.W_OK); - return resolvedPath; - } - catch (e) { - ctx.addIssue({ - code: E_PATH.ENSURE_DIRECTORY_WRITABLE, - message: resolveVariables(PathErrorMessages.DIRECTORY_NOT_WRITABLE, false, { inputPath, resolvedPath }) - }); - return z.NEVER; - } - } - else { - ctx.addIssue({ - code: E_PATH.ENSURE_DIRECTORY_WRITABLE, - message: resolveVariables(PathErrorMessages.NOT_A_DIRECTORY, false, { inputPath, resolvedPath }) - }); - return z.NEVER; - } -}; -export const IS_VALID_STRING = (inputPath) => { - return isString(inputPath); -}; -export const ENSURE_PATH_EXISTS = (inputPath, ctx, variables) => { - if (!inputPath || !ctx) { - return z.NEVER; - } - if (!isString(inputPath)) { - ctx.addIssue({ - code: E_PATH.INVALID_INPUT, - message: resolveVariables(PathErrorMessages.INVALID_INPUT, false, {}) - }); - return z.NEVER; - } - const resolvedPath = path.resolve(resolve(inputPath, false, variables)); - if (!exists(resolvedPath)) { - ctx.addIssue({ - code: E_PATH.ENSURE_PATH_EXISTS, - message: resolveVariables(PathErrorMessages.PATH_DOES_NOT_EXIST, false, { inputPath, resolvedPath }) - }); - return z.NEVER; - } - return resolvedPath; -}; -export const test = () => { - const BaseCompilerOptions = () => z.object({ - root: DefaultPathSchemaBase.default(`${process.cwd()}`) - }); - const ret = extendSchema(BaseCompilerOptions(), { - root: { - refine: [ - (val, ctx) => ENSURE_DIRECTORY_WRITABLE(val, ctx, DEFAULT_VARS({ exampleVar: 'exampleValue' })), - (val, ctx) => ENSURE_PATH_EXISTS(val, ctx, DEFAULT_VARS({ exampleVar: 'exampleValue' })) - ], - transform: [ - (val) => path.resolve(resolve(val, false, DEFAULT_VARS({ exampleVar: 'exampleValue' }))) - ] - } - }); - return ret; -}; -export const Templates = { - json: { - refine: [IS_VALID_STRING, ENSURE_PATH_EXISTS], - transform: [Transformers.resolve, Transformers.json] - }, - string: { - refine: [ENSURE_PATH_EXISTS], - transform: [Transformers.resolve, Transformers.string] - } -}; -export const extend = (baseSchema, template, variables = {}) => { - const type = extendType(baseSchema, template, variables); - return extendTypeDescription(type, template, variables); -}; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF0aC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zaGVtYXMvcGF0aC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsQ0FBQyxFQUFjLE1BQU0sS0FBSyxDQUFBO0FBQ25DLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFBO0FBQzVCLE9BQU8sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxJQUFJLENBQUE7QUFFakUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDJCQUEyQixDQUFBO0FBRXBELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFFcEMsT0FBTyxFQUFFLElBQUksSUFBSSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUNwRCxPQUFPLEVBQUUsSUFBSSxJQUFJLElBQUksRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBRWhELE9BQU8sRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFFeEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQ2xELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFPcEMsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLDZCQUE2QixDQUFDLENBQUE7QUFFaEYsTUFBTSxpQkFBaUIsR0FBRztJQUN0QixhQUFhLEVBQUUsNkJBQTZCO0lBQzVDLG1CQUFtQixFQUFFLG9EQUFvRDtJQUN6RSxzQkFBc0IsRUFBRSwwREFBMEQ7SUFDbEYsZUFBZSxFQUFFLDBFQUEwRTtJQUMzRixlQUFlLEVBQUUsMEVBQTBFO0lBQzNGLGlCQUFpQixFQUFFLHFEQUFxRDtJQUN4RSxpQkFBaUIsRUFBRSxxREFBcUQ7Q0FDbEUsQ0FBQTtBQUVWLE1BQU0sQ0FBTixJQUFZLE1BUVg7QUFS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 \ No newline at end of file +import { z } from 'zod'; +import * as path from 'path'; +import { accessSync, constants, lstatSync, existsSync } from 'fs'; +import { isString } from '@polymech/core/primitives'; +import { logger } from '@/logger.js'; +import { sync as exists } from '@polymech/fs/exists'; +import { sync as read } from '@polymech/fs/read'; +import { DEFAULT_VARS, resolve, resolveVariables } from '@/variables.js'; +import { getDescription } from '@/shemas/index.js'; +import { isFile } from '@/lib/fs.js'; +const DefaultPathSchemaBase = z.string().describe('Path to a file or directory'); +const PathErrorMessages = { + INVALID_INPUT: 'INVALID_INPUT: ${inputPath}', + PATH_DOES_NOT_EXIST: 'Path does not exist ${inputPath} = ${resolvedPath}', + DIRECTORY_NOT_WRITABLE: 'Directory is not writable ${inputPath} = ${resolvedPath}', + NOT_A_DIRECTORY: 'Path is not a directory or does not exist ${inputPath} = ${resolvedPath}', + NOT_A_JSON_FILE: 'File is not a JSON file or does not exist ${inputPath} = ${resolvedPath}', + PATH_NOT_ABSOLUTE: 'Path is not absolute ${inputPath} = ${resolvedPath}', + PATH_NOT_RELATIVE: 'Path is not relative ${inputPath} = ${resolvedPath}', +}; +export var E_PATH; +(function (E_PATH) { + E_PATH[E_PATH["ENSURE_PATH_EXISTS"] = 1] = "ENSURE_PATH_EXISTS"; + E_PATH[E_PATH["INVALID_INPUT"] = 2] = "INVALID_INPUT"; + E_PATH[E_PATH["ENSURE_DIRECTORY_WRITABLE"] = 3] = "ENSURE_DIRECTORY_WRITABLE"; + E_PATH[E_PATH["ENSURE_FILE_IS_JSON"] = 4] = "ENSURE_FILE_IS_JSON"; + E_PATH[E_PATH["ENSURE_PATH_IS_ABSOLUTE"] = 5] = "ENSURE_PATH_IS_ABSOLUTE"; + E_PATH[E_PATH["ENSURE_PATH_IS_RELATIVE"] = 6] = "ENSURE_PATH_IS_RELATIVE"; + E_PATH[E_PATH["GET_PATH_INFO"] = 7] = "GET_PATH_INFO"; +})(E_PATH || (E_PATH = {})); +export const Transformers = { + resolve: (val, variables = {}) => { + if (!val) { + return null; + } + return { + resolved: path.resolve(resolve(val, false, variables)), + source: val + }; + }, + json: (val, variables = {}) => { + if (!val) { + return null; + } + const resolved = path.resolve(resolve(isString(val) ? val : val.source, false, variables)); + return { + resolved, + source: val, + value: read(resolved, 'json') + }; + }, + string: (val, variables = {}) => { + if (!val) { + return null; + } + let src = isString(val) ? val : val.source; + src = resolve(src, false, variables); + const resolved = path.resolve(src); + if (!exists(resolved) || !isFile(resolved)) { + return { + resolved, + source: val, + value: null + }; + } + else { + let value = null; + try { + value = read(resolved, 'string'); + } + catch (e) { + logger.error('Failed to read file', { resolved, source: val, error: e.message }); + } + return { + resolved, + source: val, + value + }; + } + } +}; +export const TransformersDescription = [ + { + description: 'RESOLVE_PATH', + fn: Transformers.resolve + }, + { + description: 'READ_JSON', + fn: Transformers.json + }, + { + description: 'READ_STRING', + fn: Transformers.string + } +]; +const extendType = (type, extend, variables = {}) => { + if (Array.isArray(extend.refine)) { + for (const refine of extend.refine) { + type = type.refine(refine); + } + } + else { + type = type.refine(extend.refine); + } + if (Array.isArray(extend.transform)) { + for (const transform of extend.transform) { + type = type.transform((val) => transform(val, variables)); + } + } + else { + type = type.transform(extend.transform); + } + return type; +}; +const extendTypeDescription = (type, extension, variables = {}) => { + const description = getDescription(type) || ''; + let transformerDescriptions = 'Transformers:\n'; + if (Array.isArray(extension.transform)) { + for (const transform of extension.transform) { + transformerDescriptions += transformerDescription(transform) + '\n'; + } + } + else { + transformerDescriptions += transformerDescription(extension.transform) + '\n'; + } + type = type.describe(description + '\n' + transformerDescriptions); + return type; +}; +const transformerDescription = (fn) => { + const description = TransformersDescription.find((t) => t.fn === fn); + return description ? description.description : 'Unknown'; +}; +export const extendSchema = (baseSchema, extend) => { + const baseShape = baseSchema.shape; + const extendedShape = { ...baseShape }; + for (const [key, refines] of Object.entries(extend)) { + if (!baseShape[key]) + continue; + let fieldSchema = baseShape[key]; + if (Array.isArray(refines.refine)) { + for (const refine of refines.refine) { + fieldSchema = fieldSchema.superRefine(refine); + } + } + else { + fieldSchema = fieldSchema.superRefine(refines); + } + if (Array.isArray(refines.transform)) { + for (const transform of refines.transform) { + fieldSchema = fieldSchema.transform((val) => transform(val)); + } + } + else { + fieldSchema = fieldSchema.transform(refines.transform); + } + extendedShape[key] = fieldSchema; + } + return z.object(extendedShape); +}; +export const ENSURE_DIRECTORY_WRITABLE = (inputPath, ctx, variables) => { + const resolvedPath = path.resolve(resolve(inputPath, false, variables)); + const parts = path.parse(resolvedPath); + if (resolvedPath && existsSync(parts.dir) && lstatSync(parts.dir).isDirectory()) { + try { + accessSync(resolvedPath, constants.W_OK); + return resolvedPath; + } + catch (e) { + ctx.addIssue({ + code: E_PATH.ENSURE_DIRECTORY_WRITABLE, + message: resolveVariables(PathErrorMessages.DIRECTORY_NOT_WRITABLE, false, { inputPath, resolvedPath }) + }); + return z.NEVER; + } + } + else { + ctx.addIssue({ + code: E_PATH.ENSURE_DIRECTORY_WRITABLE, + message: resolveVariables(PathErrorMessages.NOT_A_DIRECTORY, false, { inputPath, resolvedPath }) + }); + return z.NEVER; + } +}; +export const IS_VALID_STRING = (inputPath) => { + return isString(inputPath); +}; +export const ENSURE_PATH_EXISTS = (inputPath, ctx, variables) => { + if (!inputPath || !ctx) { + return z.NEVER; + } + if (!isString(inputPath)) { + ctx.addIssue({ + code: E_PATH.INVALID_INPUT, + message: resolveVariables(PathErrorMessages.INVALID_INPUT, false, {}) + }); + return z.NEVER; + } + const resolvedPath = path.resolve(resolve(inputPath, false, variables)); + if (!exists(resolvedPath)) { + ctx.addIssue({ + code: E_PATH.ENSURE_PATH_EXISTS, + message: resolveVariables(PathErrorMessages.PATH_DOES_NOT_EXIST, false, { inputPath, resolvedPath }) + }); + return z.NEVER; + } + return resolvedPath; +}; +export const test = () => { + const BaseCompilerOptions = () => z.object({ + root: DefaultPathSchemaBase.default(`${process.cwd()}`) + }); + const ret = extendSchema(BaseCompilerOptions(), { + root: { + refine: [ + (val, ctx) => ENSURE_DIRECTORY_WRITABLE(val, ctx, DEFAULT_VARS({ exampleVar: 'exampleValue' })), + (val, ctx) => ENSURE_PATH_EXISTS(val, ctx, DEFAULT_VARS({ exampleVar: 'exampleValue' })) + ], + transform: [ + (val) => path.resolve(resolve(val, false, DEFAULT_VARS({ exampleVar: 'exampleValue' }))) + ] + } + }); + return ret; +}; +export const Templates = { + json: { + refine: [IS_VALID_STRING, ENSURE_PATH_EXISTS], + transform: [Transformers.resolve, Transformers.json] + }, + string: { + refine: [ENSURE_PATH_EXISTS], + transform: [Transformers.resolve, Transformers.string] + } +}; +export const extend = (baseSchema, template, variables = {}) => { + const type = extendType(baseSchema, template, variables); + return extendTypeDescription(type, template, variables); +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF0aC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zaGVtYXMvcGF0aC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsQ0FBQyxFQUFjLE1BQU0sS0FBSyxDQUFBO0FBQ25DLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFBO0FBQzVCLE9BQU8sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxJQUFJLENBQUE7QUFFakUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDJCQUEyQixDQUFBO0FBRXBELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFFcEMsT0FBTyxFQUFFLElBQUksSUFBSSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUNwRCxPQUFPLEVBQUUsSUFBSSxJQUFJLElBQUksRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBRWhELE9BQU8sRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFFeEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQ2xELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFPcEMsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLDZCQUE2QixDQUFDLENBQUE7QUFFaEYsTUFBTSxpQkFBaUIsR0FBRztJQUN0QixhQUFhLEVBQUUsNkJBQTZCO0lBQzVDLG1CQUFtQixFQUFFLG9EQUFvRDtJQUN6RSxzQkFBc0IsRUFBRSwwREFBMEQ7SUFDbEYsZUFBZSxFQUFFLDBFQUEwRTtJQUMzRixlQUFlLEVBQUUsMEVBQTBFO0lBQzNGLGlCQUFpQixFQUFFLHFEQUFxRDtJQUN4RSxpQkFBaUIsRUFBRSxxREFBcUQ7Q0FDbEUsQ0FBQTtBQUVWLE1BQU0sQ0FBTixJQUFZLE1BUVg7QUFS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 \ No newline at end of file diff --git a/packages/commons/dist/shemas/types.d.ts b/packages/commons/dist/shemas/types.d.ts index 7268497a..7126d7e8 100644 --- a/packages/commons/dist/shemas/types.d.ts +++ b/packages/commons/dist/shemas/types.d.ts @@ -1,194 +1,194 @@ -export declare enum FLAG { - /** - * 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 declare enum EType { - Number = "Number", - String = "String", - Boolean = "Boolean", - Date = "Date", - TimeStamp = "TimeStamp", - Duration = "Duration", - Url = "Url", - UrlScheme = "Url-Scheme", - Asset = "Asset", - Symbol = "Symbol", - Value = "Value", - Values = "Values", - Attribute = "Attribute", - Parameter = "Parameter", - Operation = "Operation", - ParameterOperation = "ParameterOperation", - Template = "Template", - Arguments = "Arguments" -} -export type TVector2D = [number, number]; -export type TVector3D = [number, number, number]; -export type TBBox = [TVector3D, TVector3D]; -export type TQuaternion = [number, number, number, number]; -export type TFlags = Record; -export type TExpression = string | [string | RegExp, { - [key: string]: any; -}]; -export type TOptions = { - flags?: TFlags | { - [key: string]: any; - }; -}; -export interface IUrlScheme { - url: string; - options?: { - [key: string]: any; - }; -} -export interface IAsset { - urlScheme: IUrlScheme; - options?: { - [key: string]: any; - }; -} -export type TSelector = TExpression | [TExpression, { - [key: string]: any; -}]; -export interface ITypeInfo { - type: string; - symbol: bigint; -} -export interface IRef { - key: string | string; - struct: { - [key: string]: any; - }; -} -export interface IAttribute { - type: ITypeInfo; - value: bigint; -} -export interface IParameter { - type: ITypeInfo; - value: bigint; -} -export interface IParameterOperation { - param1: bigint; - param2: bigint; - operation: bigint; -} -export type TTemplate = string | [ITypeInfo | TSelector, { - [key: string]: any; -}]; -export type TArguments = { - [key: string]: any; -} | any[]; +export declare enum FLAG { + /** + * 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 declare enum EType { + Number = "Number", + String = "String", + Boolean = "Boolean", + Date = "Date", + TimeStamp = "TimeStamp", + Duration = "Duration", + Url = "Url", + UrlScheme = "Url-Scheme", + Asset = "Asset", + Symbol = "Symbol", + Value = "Value", + Values = "Values", + Attribute = "Attribute", + Parameter = "Parameter", + Operation = "Operation", + ParameterOperation = "ParameterOperation", + Template = "Template", + Arguments = "Arguments" +} +export type TVector2D = [number, number]; +export type TVector3D = [number, number, number]; +export type TBBox = [TVector3D, TVector3D]; +export type TQuaternion = [number, number, number, number]; +export type TFlags = Record; +export type TExpression = string | [string | RegExp, { + [key: string]: any; +}]; +export type TOptions = { + flags?: TFlags | { + [key: string]: any; + }; +}; +export interface IUrlScheme { + url: string; + options?: { + [key: string]: any; + }; +} +export interface IAsset { + urlScheme: IUrlScheme; + options?: { + [key: string]: any; + }; +} +export type TSelector = TExpression | [TExpression, { + [key: string]: any; +}]; +export interface ITypeInfo { + type: string; + symbol: bigint; +} +export interface IRef { + key: string | string; + struct: { + [key: string]: any; + }; +} +export interface IAttribute { + type: ITypeInfo; + value: bigint; +} +export interface IParameter { + type: ITypeInfo; + value: bigint; +} +export interface IParameterOperation { + param1: bigint; + param2: bigint; + operation: bigint; +} +export type TTemplate = string | [ITypeInfo | TSelector, { + [key: string]: any; +}]; +export type TArguments = { + [key: string]: any; +} | any[]; diff --git a/packages/commons/dist/shemas/types.js b/packages/commons/dist/shemas/types.js index 3eeb7169..61ec645e 100644 --- a/packages/commons/dist/shemas/types.js +++ b/packages/commons/dist/shemas/types.js @@ -1,140 +1,140 @@ -export var FLAG; -(function (FLAG) { - /** - * Instruct for no additional extra processing - * @constant - * @type int - */ - FLAG[FLAG["NONE"] = 0] = "NONE"; - /** - * Will instruct the pre/post processor to base-64 decode or encode - * @constant - * @type int - */ - FLAG[FLAG["BASE_64"] = 1] = "BASE_64"; - /** - * Post/Pre process the value with a user function - * @constant - * @type int - */ - FLAG[FLAG["USE_FUNCTION"] = 2] = "USE_FUNCTION"; - /** - * Replace variables with local scope's variables during the post/pre process - * @constant - * @type int - */ - FLAG[FLAG["REPLACE_VARIABLES"] = 4] = "REPLACE_VARIABLES"; - /** - * Replace variables with local scope's variables during the post/pre process but evaluate the whole string - * as Javascript - * @constant - * @type int - */ - FLAG[FLAG["REPLACE_VARIABLES_EVALUATED"] = 8] = "REPLACE_VARIABLES_EVALUATED"; - /** - * Will instruct the pre/post processor to escpape evaluated or replaced variables or expressions - * @constant - * @type int - */ - FLAG[FLAG["ESCAPE"] = 16] = "ESCAPE"; - /** - * Will instruct the pre/post processor to replace block calls with oridinary vanilla script - * @constant - * @type int - */ - FLAG[FLAG["REPLACE_BLOCK_CALLS"] = 32] = "REPLACE_BLOCK_CALLS"; - /** - * Will instruct the pre/post processor to remove variable delimitters/placeholders from the final string - * @constant - * @type int - */ - FLAG[FLAG["REMOVE_DELIMTTERS"] = 64] = "REMOVE_DELIMTTERS"; - /** - * Will instruct the pre/post processor to remove "[" ,"]" , "(" , ")" , "{", "}" , "*" , "+" , "." - * @constant - * @type int - */ - FLAG[FLAG["ESCAPE_SPECIAL_CHARS"] = 128] = "ESCAPE_SPECIAL_CHARS"; - /** - * Will instruct the pre/post processor to use regular expressions over string substitution - * @constant - * @type int - */ - FLAG[FLAG["USE_REGEX"] = 256] = "USE_REGEX"; - /** - * Will instruct the pre/post processor to use Filtrex (custom bison parser, needs xexpression) over string substitution - * @constant - * @type int - */ - FLAG[FLAG["USE_FILTREX"] = 512] = "USE_FILTREX"; - /** - * Cascade entry. There are cases where #USE_FUNCTION is not enough or we'd like to avoid further type checking. - * @constant - * @type int - */ - FLAG[FLAG["CASCADE"] = 1024] = "CASCADE"; - /** - * Cascade entry. There are cases where #USE_FUNCTION is not enough or we'd like to avoid further type checking. - * @constant - * @type int - */ - FLAG[FLAG["EXPRESSION"] = 2048] = "EXPRESSION"; - /** - * Dont parse anything - * @constant - * @type int - */ - FLAG[FLAG["DONT_PARSE"] = 4096] = "DONT_PARSE"; - /** - * Convert to hex - * @constant - * @type int - */ - FLAG[FLAG["TO_HEX"] = 8192] = "TO_HEX"; - /** - * Convert to hex - * @constant - * @type int - */ - FLAG[FLAG["REPLACE_HEX"] = 16384] = "REPLACE_HEX"; - /** - * Wait for finish - * @constant - * @type int - */ - FLAG[FLAG["WAIT"] = 32768] = "WAIT"; - /** - * Wait for finish - * @constant - * @type int - */ - FLAG[FLAG["DONT_ESCAPE"] = 65536] = "DONT_ESCAPE"; - /** - * Flag to mark the maximum core bit mask, after here its user land - * @constant - * @type int - */ - FLAG[FLAG["END"] = 131072] = "END"; -})(FLAG = FLAG || (FLAG = {})); -export var EType; -(function (EType) { - EType["Number"] = "Number"; - EType["String"] = "String"; - EType["Boolean"] = "Boolean"; - EType["Date"] = "Date"; - EType["TimeStamp"] = "TimeStamp"; - EType["Duration"] = "Duration"; - EType["Url"] = "Url"; - EType["UrlScheme"] = "Url-Scheme"; - EType["Asset"] = "Asset"; - EType["Symbol"] = "Symbol"; - EType["Value"] = "Value"; - EType["Values"] = "Values"; - EType["Attribute"] = "Attribute"; - EType["Parameter"] = "Parameter"; - EType["Operation"] = "Operation"; - EType["ParameterOperation"] = "ParameterOperation"; - EType["Template"] = "Template"; - EType["Arguments"] = "Arguments"; -})(EType = EType || (EType = {})); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2hlbWFzL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBTixJQUFZLElBb0hYO0FBcEhELFdBQVksSUFBSTtJQUNmOzs7O09BSUc7SUFDSCwrQkFBaUIsQ0FBQTtJQUNqQjs7OztPQUlHO0lBQ0gscUNBQW9CLENBQUE7SUFDcEI7Ozs7T0FJRztJQUNILCtDQUF5QixDQUFBO0lBQ3pCOzs7O09BSUc7SUFDSCx5REFBOEIsQ0FBQTtJQUM5Qjs7Ozs7T0FLRztJQUNILDZFQUF3QyxDQUFBO0lBQ3hDOzs7O09BSUc7SUFDSCxvQ0FBbUIsQ0FBQTtJQUNuQjs7OztPQUlHO0lBQ0gsOERBQWdDLENBQUE7SUFDaEM7Ozs7T0FJRztJQUNILDBEQUE4QixDQUFBO0lBQzlCOzs7O09BSUc7SUFDSCxpRUFBaUMsQ0FBQTtJQUNqQzs7OztPQUlHO0lBQ0gsMkNBQXNCLENBQUE7SUFDdEI7Ozs7T0FJRztJQUNILCtDQUF3QixDQUFBO0lBQ3hCOzs7O09BSUc7SUFDSCx3Q0FBb0IsQ0FBQTtJQUNwQjs7OztPQUlHO0lBQ0gsOENBQXVCLENBQUE7SUFDdkI7Ozs7T0FJRztJQUNILDhDQUF3QixDQUFBO0lBQ3hCOzs7O09BSUc7SUFDSCxzQ0FBb0IsQ0FBQTtJQUNwQjs7OztPQUlHO0lBQ0gsaURBQXlCLENBQUE7SUFDekI7Ozs7T0FJRztJQUNILG1DQUFrQixDQUFBO0lBQ2xCOzs7O09BSUc7SUFDSCxpREFBeUIsQ0FBQTtJQUN6Qjs7OztPQUlHO0lBQ0gsa0NBQWlCLENBQUE7QUFDbEIsQ0FBQyxFQXBIVyxJQUFJLEdBQUosSUFBSSxLQUFKLElBQUksUUFvSGY7QUFFRCxNQUFNLENBQU4sSUFBWSxLQW9CWDtBQXBCRCxXQUFZLEtBQUs7SUFFYiwwQkFBaUIsQ0FBQTtJQUNqQiwwQkFBaUIsQ0FBQTtJQUNqQiw0QkFBbUIsQ0FBQTtJQUNuQixzQkFBYSxDQUFBO0lBQ2IsZ0NBQXVCLENBQUE7SUFDdkIsOEJBQXFCLENBQUE7SUFDckIsb0JBQVcsQ0FBQTtJQUNYLGlDQUF3QixDQUFBO0lBQ3hCLHdCQUFlLENBQUE7SUFDZiwwQkFBaUIsQ0FBQTtJQUNqQix3QkFBZSxDQUFBO0lBQ2YsMEJBQWlCLENBQUE7SUFDakIsZ0NBQXVCLENBQUE7SUFDdkIsZ0NBQXVCLENBQUE7SUFDdkIsZ0NBQXVCLENBQUE7SUFDdkIsa0RBQXlDLENBQUE7SUFDekMsOEJBQXFCLENBQUE7SUFDckIsZ0NBQXVCLENBQUE7QUFDM0IsQ0FBQyxFQXBCVyxLQUFLLEdBQUwsS0FBSyxLQUFMLEtBQUssUUFvQmhCIn0= \ No newline at end of file +export var FLAG; +(function (FLAG) { + /** + * Instruct for no additional extra processing + * @constant + * @type int + */ + FLAG[FLAG["NONE"] = 0] = "NONE"; + /** + * Will instruct the pre/post processor to base-64 decode or encode + * @constant + * @type int + */ + FLAG[FLAG["BASE_64"] = 1] = "BASE_64"; + /** + * Post/Pre process the value with a user function + * @constant + * @type int + */ + FLAG[FLAG["USE_FUNCTION"] = 2] = "USE_FUNCTION"; + /** + * Replace variables with local scope's variables during the post/pre process + * @constant + * @type int + */ + FLAG[FLAG["REPLACE_VARIABLES"] = 4] = "REPLACE_VARIABLES"; + /** + * Replace variables with local scope's variables during the post/pre process but evaluate the whole string + * as Javascript + * @constant + * @type int + */ + FLAG[FLAG["REPLACE_VARIABLES_EVALUATED"] = 8] = "REPLACE_VARIABLES_EVALUATED"; + /** + * Will instruct the pre/post processor to escpape evaluated or replaced variables or expressions + * @constant + * @type int + */ + FLAG[FLAG["ESCAPE"] = 16] = "ESCAPE"; + /** + * Will instruct the pre/post processor to replace block calls with oridinary vanilla script + * @constant + * @type int + */ + FLAG[FLAG["REPLACE_BLOCK_CALLS"] = 32] = "REPLACE_BLOCK_CALLS"; + /** + * Will instruct the pre/post processor to remove variable delimitters/placeholders from the final string + * @constant + * @type int + */ + FLAG[FLAG["REMOVE_DELIMTTERS"] = 64] = "REMOVE_DELIMTTERS"; + /** + * Will instruct the pre/post processor to remove "[" ,"]" , "(" , ")" , "{", "}" , "*" , "+" , "." + * @constant + * @type int + */ + FLAG[FLAG["ESCAPE_SPECIAL_CHARS"] = 128] = "ESCAPE_SPECIAL_CHARS"; + /** + * Will instruct the pre/post processor to use regular expressions over string substitution + * @constant + * @type int + */ + FLAG[FLAG["USE_REGEX"] = 256] = "USE_REGEX"; + /** + * Will instruct the pre/post processor to use Filtrex (custom bison parser, needs xexpression) over string substitution + * @constant + * @type int + */ + FLAG[FLAG["USE_FILTREX"] = 512] = "USE_FILTREX"; + /** + * Cascade entry. There are cases where #USE_FUNCTION is not enough or we'd like to avoid further type checking. + * @constant + * @type int + */ + FLAG[FLAG["CASCADE"] = 1024] = "CASCADE"; + /** + * Cascade entry. There are cases where #USE_FUNCTION is not enough or we'd like to avoid further type checking. + * @constant + * @type int + */ + FLAG[FLAG["EXPRESSION"] = 2048] = "EXPRESSION"; + /** + * Dont parse anything + * @constant + * @type int + */ + FLAG[FLAG["DONT_PARSE"] = 4096] = "DONT_PARSE"; + /** + * Convert to hex + * @constant + * @type int + */ + FLAG[FLAG["TO_HEX"] = 8192] = "TO_HEX"; + /** + * Convert to hex + * @constant + * @type int + */ + FLAG[FLAG["REPLACE_HEX"] = 16384] = "REPLACE_HEX"; + /** + * Wait for finish + * @constant + * @type int + */ + FLAG[FLAG["WAIT"] = 32768] = "WAIT"; + /** + * Wait for finish + * @constant + * @type int + */ + FLAG[FLAG["DONT_ESCAPE"] = 65536] = "DONT_ESCAPE"; + /** + * Flag to mark the maximum core bit mask, after here its user land + * @constant + * @type int + */ + FLAG[FLAG["END"] = 131072] = "END"; +})(FLAG || (FLAG = {})); +export var EType; +(function (EType) { + EType["Number"] = "Number"; + EType["String"] = "String"; + EType["Boolean"] = "Boolean"; + EType["Date"] = "Date"; + EType["TimeStamp"] = "TimeStamp"; + EType["Duration"] = "Duration"; + EType["Url"] = "Url"; + EType["UrlScheme"] = "Url-Scheme"; + EType["Asset"] = "Asset"; + EType["Symbol"] = "Symbol"; + EType["Value"] = "Value"; + EType["Values"] = "Values"; + EType["Attribute"] = "Attribute"; + EType["Parameter"] = "Parameter"; + EType["Operation"] = "Operation"; + EType["ParameterOperation"] = "ParameterOperation"; + EType["Template"] = "Template"; + EType["Arguments"] = "Arguments"; +})(EType || (EType = {})); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2hlbWFzL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBTixJQUFZLElBb0hYO0FBcEhELFdBQVksSUFBSTtJQUNmOzs7O09BSUc7SUFDSCwrQkFBaUIsQ0FBQTtJQUNqQjs7OztPQUlHO0lBQ0gscUNBQW9CLENBQUE7SUFDcEI7Ozs7T0FJRztJQUNILCtDQUF5QixDQUFBO0lBQ3pCOzs7O09BSUc7SUFDSCx5REFBOEIsQ0FBQTtJQUM5Qjs7Ozs7T0FLRztJQUNILDZFQUF3QyxDQUFBO0lBQ3hDOzs7O09BSUc7SUFDSCxvQ0FBbUIsQ0FBQTtJQUNuQjs7OztPQUlHO0lBQ0gsOERBQWdDLENBQUE7SUFDaEM7Ozs7T0FJRztJQUNILDBEQUE4QixDQUFBO0lBQzlCOzs7O09BSUc7SUFDSCxpRUFBaUMsQ0FBQTtJQUNqQzs7OztPQUlHO0lBQ0gsMkNBQXNCLENBQUE7SUFDdEI7Ozs7T0FJRztJQUNILCtDQUF3QixDQUFBO0lBQ3hCOzs7O09BSUc7SUFDSCx3Q0FBb0IsQ0FBQTtJQUNwQjs7OztPQUlHO0lBQ0gsOENBQXVCLENBQUE7SUFDdkI7Ozs7T0FJRztJQUNILDhDQUF3QixDQUFBO0lBQ3hCOzs7O09BSUc7SUFDSCxzQ0FBb0IsQ0FBQTtJQUNwQjs7OztPQUlHO0lBQ0gsaURBQXlCLENBQUE7SUFDekI7Ozs7T0FJRztJQUNILG1DQUFrQixDQUFBO0lBQ2xCOzs7O09BSUc7SUFDSCxpREFBeUIsQ0FBQTtJQUN6Qjs7OztPQUlHO0lBQ0gsa0NBQWlCLENBQUE7QUFDbEIsQ0FBQyxFQXBIVyxJQUFJLEtBQUosSUFBSSxRQW9IZjtBQUVELE1BQU0sQ0FBTixJQUFZLEtBb0JYO0FBcEJELFdBQVksS0FBSztJQUViLDBCQUFpQixDQUFBO0lBQ2pCLDBCQUFpQixDQUFBO0lBQ2pCLDRCQUFtQixDQUFBO0lBQ25CLHNCQUFhLENBQUE7SUFDYixnQ0FBdUIsQ0FBQTtJQUN2Qiw4QkFBcUIsQ0FBQTtJQUNyQixvQkFBVyxDQUFBO0lBQ1gsaUNBQXdCLENBQUE7SUFDeEIsd0JBQWUsQ0FBQTtJQUNmLDBCQUFpQixDQUFBO0lBQ2pCLHdCQUFlLENBQUE7SUFDZiwwQkFBaUIsQ0FBQTtJQUNqQixnQ0FBdUIsQ0FBQTtJQUN2QixnQ0FBdUIsQ0FBQTtJQUN2QixnQ0FBdUIsQ0FBQTtJQUN2QixrREFBeUMsQ0FBQTtJQUN6Qyw4QkFBcUIsQ0FBQTtJQUNyQixnQ0FBdUIsQ0FBQTtBQUMzQixDQUFDLEVBcEJXLEtBQUssS0FBTCxLQUFLLFFBb0JoQiJ9 \ No newline at end of file diff --git a/packages/commons/dist/shemas/vfs.d.ts b/packages/commons/dist/shemas/vfs.d.ts index 509db186..cb0ff5c3 100644 --- a/packages/commons/dist/shemas/vfs.d.ts +++ b/packages/commons/dist/shemas/vfs.d.ts @@ -1 +1 @@ -export {}; +export {}; diff --git a/packages/commons/dist/shemas/vfs.js b/packages/commons/dist/shemas/vfs.js index e9c93450..3ac243ba 100644 --- a/packages/commons/dist/shemas/vfs.js +++ b/packages/commons/dist/shemas/vfs.js @@ -1,3 +1,3 @@ -export {}; -//import { zodToJsonSchema } from "zod-to-json-schema" +export {}; +//import { zodToJsonSchema } from "zod-to-json-schema" //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmZzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NoZW1hcy92ZnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLHNEQUFzRCJ9 \ No newline at end of file diff --git a/packages/commons/dist/shemas/zod_map.d.ts b/packages/commons/dist/shemas/zod_map.d.ts index ab947947..d6b6127a 100644 --- a/packages/commons/dist/shemas/zod_map.d.ts +++ b/packages/commons/dist/shemas/zod_map.d.ts @@ -1,46 +1,46 @@ -import { ZodObject, ZodTypeAny } from 'zod'; -/** - * Manages a collection of Zod schema properties - * and combines them into a single Zod object schema. - * - * @template MetaType The type of metadata you want to store for each field. - * Defaults to Record if not provided. - */ -export declare class ZodMetaMap> { - private fieldMap; - /** - * Adds a Zod schema under a specific key (property name), - * optionally attaching typed metadata. - * - * @param key - The name of the property in the root object. - * @param schema - The Zod schema for that property. - * @param metadata - Optional metadata object (type MetaType). - */ - add(key: string, schema: T, metadata?: MetaType): this; - /** - * Builds and returns a root Zod object - * that combines all properties which were added. - */ - root(): ZodObject>; - /** - * Retrieves the metadata for a specific key, if any. - */ - getMetadata(key: string): MetaType | undefined; - /** - * Static factory method: creates a SchemaMetaManager - * while letting you optionally specify the MetaType. - * - * Usage: - * const manager = SchemaMetaManager.create(); - */ - static create>(): ZodMetaMap; - /** - * Returns a basic UiSchema object that RJSF can use to render form controls. - * - * - Adds a top-level "ui:submitButtonOptions" (example). - * - For each field, we set `ui:title` (uppercase key), - * `ui:description` (from Zod's .describe() if available), - * and a naive placeholder from the default value (if parse(undefined) succeeds). - */ - getUISchema(): Record; -} +import { ZodObject, ZodTypeAny } from 'zod'; +/** + * Manages a collection of Zod schema properties + * and combines them into a single Zod object schema. + * + * @template MetaType The type of metadata you want to store for each field. + * Defaults to Record if not provided. + */ +export declare class ZodMetaMap> { + private fieldMap; + /** + * Adds a Zod schema under a specific key (property name), + * optionally attaching typed metadata. + * + * @param key - The name of the property in the root object. + * @param schema - The Zod schema for that property. + * @param metadata - Optional metadata object (type MetaType). + */ + add(key: string, schema: T, metadata?: MetaType): this; + /** + * Builds and returns a root Zod object + * that combines all properties which were added. + */ + root(): ZodObject>; + /** + * Retrieves the metadata for a specific key, if any. + */ + getMetadata(key: string): MetaType | undefined; + /** + * Static factory method: creates a SchemaMetaManager + * while letting you optionally specify the MetaType. + * + * Usage: + * const manager = SchemaMetaManager.create(); + */ + static create>(): ZodMetaMap; + /** + * Returns a basic UiSchema object that RJSF can use to render form controls. + * + * - Adds a top-level "ui:submitButtonOptions" (example). + * - For each field, we set `ui:title` (uppercase key), + * `ui:description` (from Zod's .describe() if available), + * and a naive placeholder from the default value (if parse(undefined) succeeds). + */ + getUISchema(): Record; +} diff --git a/packages/commons/dist/shemas/zod_map.js b/packages/commons/dist/shemas/zod_map.js index d295124c..a21b2125 100644 --- a/packages/commons/dist/shemas/zod_map.js +++ b/packages/commons/dist/shemas/zod_map.js @@ -1,99 +1,99 @@ -import { z } from 'zod'; -/** - * Manages a collection of Zod schema properties - * and combines them into a single Zod object schema. - * - * @template MetaType The type of metadata you want to store for each field. - * Defaults to Record if not provided. - */ -export class ZodMetaMap { - fieldMap = new Map(); - /** - * Adds a Zod schema under a specific key (property name), - * optionally attaching typed metadata. - * - * @param key - The name of the property in the root object. - * @param schema - The Zod schema for that property. - * @param metadata - Optional metadata object (type MetaType). - */ - add(key, schema, metadata) { - this.fieldMap.set(key, { schema, metadata }); - return this; - } - /** - * Builds and returns a root Zod object - * that combines all properties which were added. - */ - root() { - const shape = {}; - for (const [key, { schema }] of this.fieldMap.entries()) { - shape[key] = schema; - } - return z.object(shape); - } - /** - * Retrieves the metadata for a specific key, if any. - */ - getMetadata(key) { - return this.fieldMap.get(key)?.metadata; - } - /** - * Static factory method: creates a SchemaMetaManager - * while letting you optionally specify the MetaType. - * - * Usage: - * const manager = SchemaMetaManager.create(); - */ - static create() { - return new ZodMetaMap(); - } - /** - * Returns a basic UiSchema object that RJSF can use to render form controls. - * - * - Adds a top-level "ui:submitButtonOptions" (example). - * - For each field, we set `ui:title` (uppercase key), - * `ui:description` (from Zod's .describe() if available), - * and a naive placeholder from the default value (if parse(undefined) succeeds). - */ - getUISchema() { - // Start with some top-level UI schema config (optional) - const uiSchema = { - 'ui:submitButtonOptions': { - props: { - disabled: false, - className: 'btn btn-info', - }, - norender: false, - submitText: 'Submit', - }, - }; - for (const [key, { schema }] of this.fieldMap.entries()) { - let fieldUi = {}; - // Use the Zod description if available - // (Accessing `._def.description` is private/hacky, but commonly done.) - const sAny = schema; - if (sAny?._def?.description) { - fieldUi['ui:description'] = sAny._def.description; - } - // RJSF usually reads 'title' from JSON schema. But if you want - // to override it in UI schema, you can do so: - fieldUi['ui:title'] = key[0].toUpperCase() + key.substr(1).toLowerCase(); - // If the Zod schema allows a default, we can parse(undefined) to get it. - try { - const defaultVal = schema.parse(undefined); - // There's no official 'ui:default' in RJSF, but you could do a placeholder: - fieldUi['ui:placeholder'] = defaultVal; - } - catch { - // no default - } - fieldUi = { - ...fieldUi, - ...this.getMetadata(key), - }; - uiSchema[key] = fieldUi; - } - return uiSchema; - } -} -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiem9kX21hcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zaGVtYXMvem9kX21hcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsQ0FBQyxFQUF5QixNQUFNLEtBQUssQ0FBQztBQUUvQzs7Ozs7O0dBTUc7QUFDSCxNQUFNLE9BQU8sVUFBVTtJQUNYLFFBQVEsR0FBRyxJQUFJLEdBQUcsRUFHdkIsQ0FBQztJQUVKOzs7Ozs7O09BT0c7SUFDSCxHQUFHLENBQXVCLEdBQVcsRUFBRSxNQUFTLEVBQUUsUUFBbUI7UUFDakUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDN0MsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVEOzs7T0FHRztJQUNILElBQUk7UUFDQSxNQUFNLEtBQUssR0FBK0IsRUFBRSxDQUFDO1FBQzdDLEtBQUssTUFBTSxDQUFDLEdBQUcsRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUNyRCxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDO1NBQ3ZCO1FBQ0QsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFRDs7T0FFRztJQUNILFdBQVcsQ0FBQyxHQUFXO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsUUFBUSxDQUFDO0lBQzVDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxNQUFNLENBQUMsTUFBTTtRQUNULE9BQU8sSUFBSSxVQUFVLEVBQU0sQ0FBQztJQUNoQyxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILFdBQVc7UUFDUCx3REFBd0Q7UUFDeEQsTUFBTSxRQUFRLEdBQTRCO1lBQ3RDLHdCQUF3QixFQUFFO2dCQUN0QixLQUFLLEVBQUU7b0JBQ0gsUUFBUSxFQUFFLEtBQUs7b0JBQ2YsU0FBUyxFQUFFLGNBQWM7aUJBQzVCO2dCQUNELFFBQVEsRUFBRSxLQUFLO2dCQUNmLFVBQVUsRUFBRSxRQUFRO2FBQ3ZCO1NBQ0osQ0FBQztRQUVGLEtBQUssTUFBTSxDQUFDLEdBQUcsRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUNyRCxJQUFJLE9BQU8sR0FBNEIsRUFBRyxDQUFDO1lBQzNDLHVDQUF1QztZQUN2Qyx1RUFBdUU7WUFDdkUsTUFBTSxJQUFJLEdBQUcsTUFBYSxDQUFDO1lBQzNCLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7Z0JBQ3pCLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO2FBQ3JEO1lBRUQsK0RBQStEO1lBQy9ELDhDQUE4QztZQUM5QyxPQUFPLENBQUMsVUFBVSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUE7WUFFeEUseUVBQXlFO1lBQ3pFLElBQUk7Z0JBQ0EsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDM0MsNEVBQTRFO2dCQUM1RSxPQUFPLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxVQUFVLENBQUM7YUFDMUM7WUFBQyxNQUFNO2dCQUNKLGFBQWE7YUFDaEI7WUFDRCxPQUFPLEdBQUc7Z0JBQ04sR0FBRyxPQUFPO2dCQUNWLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUM7YUFDM0IsQ0FBQTtZQUNELFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxPQUFPLENBQUM7U0FDM0I7UUFDRCxPQUFPLFFBQVEsQ0FBQztJQUNwQixDQUFDO0NBQ0oifQ== \ No newline at end of file +import { z } from 'zod'; +/** + * Manages a collection of Zod schema properties + * and combines them into a single Zod object schema. + * + * @template MetaType The type of metadata you want to store for each field. + * Defaults to Record if not provided. + */ +export class ZodMetaMap { + fieldMap = new Map(); + /** + * Adds a Zod schema under a specific key (property name), + * optionally attaching typed metadata. + * + * @param key - The name of the property in the root object. + * @param schema - The Zod schema for that property. + * @param metadata - Optional metadata object (type MetaType). + */ + add(key, schema, metadata) { + this.fieldMap.set(key, { schema, metadata }); + return this; + } + /** + * Builds and returns a root Zod object + * that combines all properties which were added. + */ + root() { + const shape = {}; + for (const [key, { schema }] of this.fieldMap.entries()) { + shape[key] = schema; + } + return z.object(shape); + } + /** + * Retrieves the metadata for a specific key, if any. + */ + getMetadata(key) { + return this.fieldMap.get(key)?.metadata; + } + /** + * Static factory method: creates a SchemaMetaManager + * while letting you optionally specify the MetaType. + * + * Usage: + * const manager = SchemaMetaManager.create(); + */ + static create() { + return new ZodMetaMap(); + } + /** + * Returns a basic UiSchema object that RJSF can use to render form controls. + * + * - Adds a top-level "ui:submitButtonOptions" (example). + * - For each field, we set `ui:title` (uppercase key), + * `ui:description` (from Zod's .describe() if available), + * and a naive placeholder from the default value (if parse(undefined) succeeds). + */ + getUISchema() { + // Start with some top-level UI schema config (optional) + const uiSchema = { + 'ui:submitButtonOptions': { + props: { + disabled: false, + className: 'btn btn-info', + }, + norender: false, + submitText: 'Submit', + }, + }; + for (const [key, { schema }] of this.fieldMap.entries()) { + let fieldUi = {}; + // Use the Zod description if available + // (Accessing `._def.description` is private/hacky, but commonly done.) + const sAny = schema; + if (sAny?._def?.description) { + fieldUi['ui:description'] = sAny._def.description; + } + // RJSF usually reads 'title' from JSON schema. But if you want + // to override it in UI schema, you can do so: + fieldUi['ui:title'] = key[0].toUpperCase() + key.substr(1).toLowerCase(); + // If the Zod schema allows a default, we can parse(undefined) to get it. + try { + const defaultVal = schema.parse(undefined); + // There's no official 'ui:default' in RJSF, but you could do a placeholder: + fieldUi['ui:placeholder'] = defaultVal; + } + catch { + // no default + } + fieldUi = { + ...fieldUi, + ...this.getMetadata(key), + }; + uiSchema[key] = fieldUi; + } + return uiSchema; + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiem9kX21hcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zaGVtYXMvem9kX21hcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsQ0FBQyxFQUF5QixNQUFNLEtBQUssQ0FBQztBQUUvQzs7Ozs7O0dBTUc7QUFDSCxNQUFNLE9BQU8sVUFBVTtJQUNYLFFBQVEsR0FBRyxJQUFJLEdBQUcsRUFHdkIsQ0FBQztJQUVKOzs7Ozs7O09BT0c7SUFDSCxHQUFHLENBQXVCLEdBQVcsRUFBRSxNQUFTLEVBQUUsUUFBbUI7UUFDakUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDN0MsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVEOzs7T0FHRztJQUNILElBQUk7UUFDQSxNQUFNLEtBQUssR0FBK0IsRUFBRSxDQUFDO1FBQzdDLEtBQUssTUFBTSxDQUFDLEdBQUcsRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO1lBQ3RELEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUM7UUFDeEIsQ0FBQztRQUNELE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxXQUFXLENBQUMsR0FBVztRQUNuQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLFFBQVEsQ0FBQztJQUM1QyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsTUFBTSxDQUFDLE1BQU07UUFDVCxPQUFPLElBQUksVUFBVSxFQUFNLENBQUM7SUFDaEMsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxXQUFXO1FBQ1Asd0RBQXdEO1FBQ3hELE1BQU0sUUFBUSxHQUE0QjtZQUN0Qyx3QkFBd0IsRUFBRTtnQkFDdEIsS0FBSyxFQUFFO29CQUNILFFBQVEsRUFBRSxLQUFLO29CQUNmLFNBQVMsRUFBRSxjQUFjO2lCQUM1QjtnQkFDRCxRQUFRLEVBQUUsS0FBSztnQkFDZixVQUFVLEVBQUUsUUFBUTthQUN2QjtTQUNKLENBQUM7UUFFRixLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztZQUN0RCxJQUFJLE9BQU8sR0FBNEIsRUFBRyxDQUFDO1lBQzNDLHVDQUF1QztZQUN2Qyx1RUFBdUU7WUFDdkUsTUFBTSxJQUFJLEdBQUcsTUFBYSxDQUFDO1lBQzNCLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsQ0FBQztnQkFDMUIsT0FBTyxDQUFDLGdCQUFnQixDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7WUFDdEQsQ0FBQztZQUVELCtEQUErRDtZQUMvRCw4Q0FBOEM7WUFDOUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFBO1lBRXhFLHlFQUF5RTtZQUN6RSxJQUFJLENBQUM7Z0JBQ0QsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDM0MsNEVBQTRFO2dCQUM1RSxPQUFPLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxVQUFVLENBQUM7WUFDM0MsQ0FBQztZQUFDLE1BQU0sQ0FBQztnQkFDTCxhQUFhO1lBQ2pCLENBQUM7WUFDRCxPQUFPLEdBQUc7Z0JBQ04sR0FBRyxPQUFPO2dCQUNWLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUM7YUFDM0IsQ0FBQTtZQUNELFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxPQUFPLENBQUM7UUFDNUIsQ0FBQztRQUNELE9BQU8sUUFBUSxDQUFDO0lBQ3BCLENBQUM7Q0FDSiJ9 \ No newline at end of file diff --git a/packages/commons/dist/types.d.ts b/packages/commons/dist/types.d.ts index c041fb23..7262a8e9 100644 --- a/packages/commons/dist/types.d.ts +++ b/packages/commons/dist/types.d.ts @@ -1,264 +1,264 @@ -export interface IConvertedFileMeta { - photoData: Blob; - objectUrl: string; - name: string; - type: string; -} -export interface IUploadedFileMeta { - downloadUrl: string; - contentType?: string | null; - fullPath: string; - name: string; - type: string; - size: number; - timeCreated: string; - updated: string; - data: any; -} -export type IModerationStatus = 'draft' | 'awaiting-moderation' | 'rejected' | 'accepted'; -export interface IModerable { - moderation: IModerationStatus; - _createdBy?: string; - _id?: string; -} -export type ISODateString = string; -export interface IUserState { - user?: IUser; -} -export 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; - }; -} -export type IUserDB = IUser; -export interface INotification { - _id: string; - _created: string; - triggeredBy: { - displayName: string; - userId: string; - }; - relevantUrl?: string; - type: NotificationType; - read: boolean; -} -export type NotificationType = 'new_comment' | 'howto_useful' | 'new_comment_research' | 'research_useful'; -export type PlasticTypeLabel = 'pet' | 'hdpe' | 'pvc' | 'ldpe' | 'pp' | 'ps' | 'other'; -export type MachineBuilderXpLabel = 'electronics' | 'machining' | 'welding' | 'assembling' | 'mould-making' | 'development'; -export type WorkspaceType = 'shredder' | 'sheetpress' | 'extrusion' | 'injection' | 'mix' | 'machine shop' | 'service' | 'educational' | 'supplier' | '3dprint'; -export type TOSR_User_Type = 'Precious Plastic' | 'OSR-Plastic' | 'Unknown' | 'User Contact' | 'Crawler' | 'Fablab' | 'OSE' | 'Meetup'; -export interface IPlasticType { - label: PlasticTypeLabel; - number: string; - imageSrc?: string; -} -export interface IProfileType { - label: string; - imageSrc?: string; - cleanImageSrc?: string; - cleanImageVerifiedSrc?: string; - textLabel?: string; -} -export interface IWorkspaceType { - label: WorkspaceType; - imageSrc?: string; - textLabel?: string; - subText?: string; -} -export interface IMAchineBuilderXp { - label: MachineBuilderXpLabel; -} -export interface IOpeningHours { - day: string; - openFrom: string; - openTo: string; -} -/** - * PP users can have a bunch of custom meta fields depending on profile type - */ -export 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; -} -export type IUserPPDB = IUserPP; -export interface IGeoLocation { - lng: number; - lat: number; -} -export interface IOA_UserDetail { - lastActive: Date; - profilePicUrl: string; - shortDescription: string; - heroImageUrl: string; - name: string; - profileUrl: string; -} -export interface IGeo_Administrative { - name: string; - description: string; - isoName: string; - order: number; - adminLevel: number; - isoCode: string; - wikidataId: string; - geonameId: number; -} -export interface IGeo_Informative { - name: string; - description: string; - order: number; - isoCode: string; - wikidataId: string; - geonameId: number; -} -export interface IGeo_LocalityInfo { - administrative: IGeo_Administrative[]; - informative: IGeo_Informative[]; -} -export 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; -} -export interface IUrl { - name: string; - url: string; -} -export interface IOA_Service { - welding: boolean; - assembling: boolean; - machining: boolean; - electronics: boolean; - molds: boolean; -} -export interface IImage { - url: string; -} -export interface IOSRUserData { - urls: IUrl[]; - description: string; - services: IOA_Service[]; - title: string; - images: IImage[]; - jsError?: boolean; -} -export 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; -} -export interface I_USER_SHORT { - name: string; - email: string; - bazar: string; - web: string; - social: string; - censored: string; - lastActive: Date; - ig: string; -} -export type IProduct = { - slug: string; - name: string; - category: string; - code: string; - forum?: string; - forumCategory?: string; - version?: string; - cart_id?: string; -}; -export 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 * from './types_kbot.js'; -export * from './types_common.js'; +export interface IConvertedFileMeta { + photoData: Blob; + objectUrl: string; + name: string; + type: string; +} +export interface IUploadedFileMeta { + downloadUrl: string; + contentType?: string | null; + fullPath: string; + name: string; + type: string; + size: number; + timeCreated: string; + updated: string; + data: any; +} +export type IModerationStatus = 'draft' | 'awaiting-moderation' | 'rejected' | 'accepted'; +export interface IModerable { + moderation: IModerationStatus; + _createdBy?: string; + _id?: string; +} +export type ISODateString = string; +export interface IUserState { + user?: IUser; +} +export 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; + }; +} +export type IUserDB = IUser; +export interface INotification { + _id: string; + _created: string; + triggeredBy: { + displayName: string; + userId: string; + }; + relevantUrl?: string; + type: NotificationType; + read: boolean; +} +export type NotificationType = 'new_comment' | 'howto_useful' | 'new_comment_research' | 'research_useful'; +export type PlasticTypeLabel = 'pet' | 'hdpe' | 'pvc' | 'ldpe' | 'pp' | 'ps' | 'other'; +export type MachineBuilderXpLabel = 'electronics' | 'machining' | 'welding' | 'assembling' | 'mould-making' | 'development'; +export type WorkspaceType = 'shredder' | 'sheetpress' | 'extrusion' | 'injection' | 'mix' | 'machine shop' | 'service' | 'educational' | 'supplier' | '3dprint'; +export type TOSR_User_Type = 'Precious Plastic' | 'OSR-Plastic' | 'Unknown' | 'User Contact' | 'Crawler' | 'Fablab' | 'OSE' | 'Meetup'; +export interface IPlasticType { + label: PlasticTypeLabel; + number: string; + imageSrc?: string; +} +export interface IProfileType { + label: string; + imageSrc?: string; + cleanImageSrc?: string; + cleanImageVerifiedSrc?: string; + textLabel?: string; +} +export interface IWorkspaceType { + label: WorkspaceType; + imageSrc?: string; + textLabel?: string; + subText?: string; +} +export interface IMAchineBuilderXp { + label: MachineBuilderXpLabel; +} +export interface IOpeningHours { + day: string; + openFrom: string; + openTo: string; +} +/** + * PP users can have a bunch of custom meta fields depending on profile type + */ +export 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; +} +export type IUserPPDB = IUserPP; +export interface IGeoLocation { + lng: number; + lat: number; +} +export interface IOA_UserDetail { + lastActive: Date; + profilePicUrl: string; + shortDescription: string; + heroImageUrl: string; + name: string; + profileUrl: string; +} +export interface IGeo_Administrative { + name: string; + description: string; + isoName: string; + order: number; + adminLevel: number; + isoCode: string; + wikidataId: string; + geonameId: number; +} +export interface IGeo_Informative { + name: string; + description: string; + order: number; + isoCode: string; + wikidataId: string; + geonameId: number; +} +export interface IGeo_LocalityInfo { + administrative: IGeo_Administrative[]; + informative: IGeo_Informative[]; +} +export 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; +} +export interface IUrl { + name: string; + url: string; +} +export interface IOA_Service { + welding: boolean; + assembling: boolean; + machining: boolean; + electronics: boolean; + molds: boolean; +} +export interface IImage { + url: string; +} +export interface IOSRUserData { + urls: IUrl[]; + description: string; + services: IOA_Service[]; + title: string; + images: IImage[]; + jsError?: boolean; +} +export 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; +} +export interface I_USER_SHORT { + name: string; + email: string; + bazar: string; + web: string; + social: string; + censored: string; + lastActive: Date; + ig: string; +} +export type IProduct = { + slug: string; + name: string; + category: string; + code: string; + forum?: string; + forumCategory?: string; + version?: string; + cart_id?: string; +}; +export 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 * from './types_kbot.js'; +export * from './types_common.js'; diff --git a/packages/commons/dist/types.js b/packages/commons/dist/types.js index 6bbea026..f2b2e90b 100644 --- a/packages/commons/dist/types.js +++ b/packages/commons/dist/types.js @@ -1,3 +1,3 @@ -export * from './types_kbot.js'; -export * from './types_common.js'; +export * from './types_kbot.js'; +export * from './types_common.js'; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBeVdJLGNBQWMsaUJBQWlCLENBQUE7QUFDL0IsY0FBYyxtQkFBbUIsQ0FBQSJ9 \ No newline at end of file diff --git a/packages/commons/dist/types.js.map b/packages/commons/dist/types.js.map index 7024aec5..80704f36 100644 --- a/packages/commons/dist/types.js.map +++ b/packages/commons/dist/types.js.map @@ -1 +1 @@ -{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAyWI,cAAc,iBAAiB,CAAA"} \ No newline at end of file +{"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":"AAyWI,cAAc;AACd,cAAc;","names":[]} \ No newline at end of file diff --git a/packages/commons/dist/types_cache.d.ts b/packages/commons/dist/types_cache.d.ts index 6d45e813..0b4aa400 100644 --- a/packages/commons/dist/types_cache.d.ts +++ b/packages/commons/dist/types_cache.d.ts @@ -1,6 +1,6 @@ -export interface IOptionsCache { - skip?: boolean; - clear?: boolean; - namespace?: string; - cacheRoot?: string; -} +export interface IOptionsCache { + skip?: boolean; + clear?: boolean; + namespace?: string; + cacheRoot?: string; +} diff --git a/packages/commons/dist/types_cache.js b/packages/commons/dist/types_cache.js index 4d97b87a..ab4d258f 100644 --- a/packages/commons/dist/types_cache.js +++ b/packages/commons/dist/types_cache.js @@ -1,2 +1,2 @@ -export {}; +export {}; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXNfY2FjaGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZXNfY2FjaGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9 \ No newline at end of file diff --git a/packages/commons/dist/types_cache.js.map b/packages/commons/dist/types_cache.js.map index 9afd1ef1..84c51b28 100644 --- a/packages/commons/dist/types_cache.js.map +++ b/packages/commons/dist/types_cache.js.map @@ -1 +1 @@ -{"version":3,"file":"types_cache.js","sourceRoot":"","sources":["../src/types_cache.ts"],"names":[],"mappings":""} \ No newline at end of file +{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]} \ No newline at end of file diff --git a/packages/commons/dist/types_common.d.ts b/packages/commons/dist/types_common.d.ts index c2b7a042..10d0dcca 100644 --- a/packages/commons/dist/types_common.d.ts +++ b/packages/commons/dist/types_common.d.ts @@ -1,114 +1,114 @@ -export interface GeoPos { - lon: number; - lat: number; -} -export 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[]; -} -export interface IDeeplConfig { - auth_key: string; - free_api: boolean; -} -export interface IIgConfig { - username: string; - password: string; -} -export interface ICsCartConfigMySQL { - host: string; - user: string; - database: string; - password: string; -} -export interface ICsCartConfig { - token: string; - url: string; - username: string; - siteUrl?: string; - timeout?: number; - language?: string; - userToken?: string; - mysql?: ICsCartConfigMySQL; -} -export interface IGiteaConfig { - token: string; - url: string; -} -export interface IDiscourseConfig { - host: string; - key: string; - username: string; - rateLimitConcurrency: number; -} -export interface IScaleserp { - key: string; -} -export interface IOSRConfig { - deepl: IDeeplConfig; - ig: IIgConfig; - cscart: ICsCartConfig; - discourse: IDiscourseConfig; - discourse_admin: IDiscourseConfig; - instagram: IIgConfig; - urls: any; - scaleserp?: IScaleserp; - gitea?: IGiteaConfig; -} -export 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[]; -} -export 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[]; -} -export type PATH_VARIABLES = SRC_VARIABLES & DST_VARIABLES; -export interface IOptionsBase { - variables: PATH_VARIABLES; -} -export 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 interface GeoPos { + lon: number; + lat: number; +} +export 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[]; +} +export interface IDeeplConfig { + auth_key: string; + free_api: boolean; +} +export interface IIgConfig { + username: string; + password: string; +} +export interface ICsCartConfigMySQL { + host: string; + user: string; + database: string; + password: string; +} +export interface ICsCartConfig { + token: string; + url: string; + username: string; + siteUrl?: string; + timeout?: number; + language?: string; + userToken?: string; + mysql?: ICsCartConfigMySQL; +} +export interface IGiteaConfig { + token: string; + url: string; +} +export interface IDiscourseConfig { + host: string; + key: string; + username: string; + rateLimitConcurrency: number; +} +export interface IScaleserp { + key: string; +} +export interface IOSRConfig { + deepl: IDeeplConfig; + ig: IIgConfig; + cscart: ICsCartConfig; + discourse: IDiscourseConfig; + discourse_admin: IDiscourseConfig; + instagram: IIgConfig; + urls: any; + scaleserp?: IScaleserp; + gitea?: IGiteaConfig; +} +export 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[]; +} +export 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[]; +} +export type PATH_VARIABLES = SRC_VARIABLES & DST_VARIABLES; +export interface IOptionsBase { + variables: PATH_VARIABLES; +} +export 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; +} diff --git a/packages/commons/dist/types_common.js b/packages/commons/dist/types_common.js index e94e1f14..7a21080d 100644 --- a/packages/commons/dist/types_common.js +++ b/packages/commons/dist/types_common.js @@ -1,2 +1,2 @@ -export {}; +export {}; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXNfY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3R5cGVzX2NvbW1vbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIn0= \ No newline at end of file diff --git a/packages/commons/dist/types_common.js.map b/packages/commons/dist/types_common.js.map index d9e6110f..84c51b28 100644 --- a/packages/commons/dist/types_common.js.map +++ b/packages/commons/dist/types_common.js.map @@ -1 +1 @@ -{"version":3,"file":"types_common.js","sourceRoot":"","sources":["../src/types_common.ts"],"names":[],"mappings":""} \ No newline at end of file +{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]} \ No newline at end of file diff --git a/packages/commons/dist/types_gui.d.ts b/packages/commons/dist/types_gui.d.ts index e76f1e94..3fff2313 100644 --- a/packages/commons/dist/types_gui.d.ts +++ b/packages/commons/dist/types_gui.d.ts @@ -1,296 +1,296 @@ -/** - * Flags to describe a block's execution behavior. - * - * @enum {integer} module=xide/types/RUN_FLAGS - * @memberOf module=xide/types - */ -export 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 - */ -export 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 -} -export 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 - */ -export declare enum BLOCK_OUTLET { - NONE = 0, - PROGRESS = 1, - ERROR = 2, - PAUSED = 4, - FINISH = 8, - STOPPED = 16 -} -export 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" -} -export 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 - */ -export declare enum VARIABLE_FLAGS { - PUBLISH = 2, - PUBLISH_IF_SERVER = 4 -} -export declare enum BLOCK_GROUPS { - VARIABLE = "DriverVariable", - BASIC_COMMAND = "DriverBasicCommand", - CONDITIONAL_COMMAND = "DriverConditionalCommand", - RESPONSE_VARIABLE = "DriverResponseVariable", - RESPONSE_BLOCKS = "conditionalProcess", - RESPONSE_VARIABLES = "processVariables", - BASIC_VARIABLES = "basicVariables" -} -export declare enum COMMAND_TYPES { - BASIC_COMMAND = "basic", - CONDITIONAL_COMMAND = "conditional", - INIT_COMMAND = "init" -} -export 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 -} +/** + * Flags to describe a block's execution behavior. + * + * @enum {integer} module=xide/types/RUN_FLAGS + * @memberOf module=xide/types + */ +export 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 + */ +export 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 +} +export 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 + */ +export declare enum BLOCK_OUTLET { + NONE = 0, + PROGRESS = 1, + ERROR = 2, + PAUSED = 4, + FINISH = 8, + STOPPED = 16 +} +export 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" +} +export 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 + */ +export declare enum VARIABLE_FLAGS { + PUBLISH = 2, + PUBLISH_IF_SERVER = 4 +} +export declare enum BLOCK_GROUPS { + VARIABLE = "DriverVariable", + BASIC_COMMAND = "DriverBasicCommand", + CONDITIONAL_COMMAND = "DriverConditionalCommand", + RESPONSE_VARIABLE = "DriverResponseVariable", + RESPONSE_BLOCKS = "conditionalProcess", + RESPONSE_VARIABLES = "processVariables", + BASIC_VARIABLES = "basicVariables" +} +export declare enum COMMAND_TYPES { + BASIC_COMMAND = "basic", + CONDITIONAL_COMMAND = "conditional", + INIT_COMMAND = "init" +} +export 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 +} diff --git a/packages/commons/dist/types_gui.js b/packages/commons/dist/types_gui.js index 649a0a46..e89b177e 100644 --- a/packages/commons/dist/types_gui.js +++ b/packages/commons/dist/types_gui.js @@ -1,314 +1,314 @@ -/** - * Flags to describe a block's execution behavior. - * - * @enum {integer} module=xide/types/RUN_FLAGS - * @memberOf module=xide/types - */ -export var RUN_FLAGS; -(function (RUN_FLAGS) { - /** - * The block can execute child blocks. - * @constant - * @type int - */ - RUN_FLAGS[RUN_FLAGS["CHILDREN"] = 32] = "CHILDREN"; - /** - * Block is waiting for a message => EXECUTION_STATE==RUNNING - * @constant - * @type int - */ - RUN_FLAGS[RUN_FLAGS["WAIT"] = 32768] = "WAIT"; -})(RUN_FLAGS = RUN_FLAGS || (RUN_FLAGS = {})); -; -/** - * Flags to describe a block's execution state. - * - * @enum {integer} module=xide/types/EXECUTION_STATE - * @memberOf module=xide/types - */ -export var EXECUTION_STATE; -(function (EXECUTION_STATE) { - /** - * The block is doing nothing and also has done nothing. The is the default state - * @constant - * @type int - */ - EXECUTION_STATE[EXECUTION_STATE["NONE"] = 0] = "NONE"; - /** - * The block is running. - * @constant - * @type int - */ - EXECUTION_STATE[EXECUTION_STATE["RUNNING"] = 1] = "RUNNING"; - /** - * The block is an error state. - * @constant - * @type int - */ - EXECUTION_STATE[EXECUTION_STATE["ERROR"] = 2] = "ERROR"; - /** - * The block is in an paused state. - * @constant - * @type int - */ - EXECUTION_STATE[EXECUTION_STATE["PAUSED"] = 4] = "PAUSED"; - /** - * The block is an finished state, ready to be cleared to "NONE" at the next frame. - * @constant - * @type int - */ - EXECUTION_STATE[EXECUTION_STATE["FINISH"] = 8] = "FINISH"; - /** - * The block is an stopped state, ready to be cleared to "NONE" at the next frame. - * @constant - * @type int - */ - EXECUTION_STATE[EXECUTION_STATE["STOPPED"] = 16] = "STOPPED"; - /** - * The block has been launched once... - * @constant - * @type int - */ - EXECUTION_STATE[EXECUTION_STATE["ONCE"] = 2147483648] = "ONCE"; - /** - * Block will be reseted next frame - * @constant - * @type int - */ - EXECUTION_STATE[EXECUTION_STATE["RESET_NEXT_FRAME"] = 8388608] = "RESET_NEXT_FRAME"; - /** - * Block is locked and so no further inputs can be activated. - * @constant - * @type int - */ - EXECUTION_STATE[EXECUTION_STATE["LOCKED"] = 536870912] = "LOCKED"; // Block is locked for utilisation in xblox -})(EXECUTION_STATE = EXECUTION_STATE || (EXECUTION_STATE = {})); -export var BLOCK_MODE; -(function (BLOCK_MODE) { - BLOCK_MODE[BLOCK_MODE["NORMAL"] = 0] = "NORMAL"; - BLOCK_MODE[BLOCK_MODE["UPDATE_WIDGET_PROPERTY"] = 1] = "UPDATE_WIDGET_PROPERTY"; -})(BLOCK_MODE = BLOCK_MODE || (BLOCK_MODE = {})); -; -/** - * Flags to describe a block's belonging to a standard signal. - * @enum {integer} module=xblox/types/BLOCK_OUTLET - * @memberOf module=xblox/types - */ -export var BLOCK_OUTLET; -(function (BLOCK_OUTLET) { - BLOCK_OUTLET[BLOCK_OUTLET["NONE"] = 0] = "NONE"; - BLOCK_OUTLET[BLOCK_OUTLET["PROGRESS"] = 1] = "PROGRESS"; - BLOCK_OUTLET[BLOCK_OUTLET["ERROR"] = 2] = "ERROR"; - BLOCK_OUTLET[BLOCK_OUTLET["PAUSED"] = 4] = "PAUSED"; - BLOCK_OUTLET[BLOCK_OUTLET["FINISH"] = 8] = "FINISH"; - BLOCK_OUTLET[BLOCK_OUTLET["STOPPED"] = 16] = "STOPPED"; -})(BLOCK_OUTLET = BLOCK_OUTLET || (BLOCK_OUTLET = {})); -; -export var EVENTS; -(function (EVENTS) { - EVENTS["ON_RUN_BLOCK"] = "onRunBlock"; - EVENTS["ON_RUN_BLOCK_FAILED"] = "onRunBlockFailed"; - EVENTS["ON_RUN_BLOCK_SUCCESS"] = "onRunBlockSuccess"; - EVENTS["ON_BLOCK_SELECTED"] = "onItemSelected"; - EVENTS["ON_BLOCK_UNSELECTED"] = "onBlockUnSelected"; - EVENTS["ON_BLOCK_EXPRESSION_FAILED"] = "onExpressionFailed"; - EVENTS["ON_BUILD_BLOCK_INFO_LIST"] = "onBuildBlockInfoList"; - EVENTS["ON_BUILD_BLOCK_INFO_LIST_END"] = "onBuildBlockInfoListEnd"; - EVENTS["ON_BLOCK_PROPERTY_CHANGED"] = "onBlockPropertyChanged"; - EVENTS["ON_SCOPE_CREATED"] = "onScopeCreated"; - EVENTS["ON_VARIABLE_CHANGED"] = "onVariableChanged"; - EVENTS["ON_CREATE_VARIABLE_CI"] = "onCreateVariableCI"; -})(EVENTS = EVENTS || (EVENTS = {})); -export var BlockType; -(function (BlockType) { - BlockType["AssignmentExpression"] = "AssignmentExpression"; - BlockType["ArrayExpression"] = "ArrayExpression"; - BlockType["BlockStatement"] = "BlockStatement"; - BlockType["BinaryExpression"] = "BinaryExpression"; - BlockType["BreakStatement"] = "BreakStatement"; - BlockType["CallExpression"] = "CallExpression"; - BlockType["CatchClause"] = "CatchClause"; - BlockType["ConditionalExpression"] = "ConditionalExpression"; - BlockType["ContinueStatement"] = "ContinueStatement"; - BlockType["DoWhileStatement"] = "DoWhileStatement"; - BlockType["DebuggerStatement"] = "DebuggerStatement"; - BlockType["EmptyStatement"] = "EmptyStatement"; - BlockType["ExpressionStatement"] = "ExpressionStatement"; - BlockType["ForStatement"] = "ForStatement"; - BlockType["ForInStatement"] = "ForInStatement"; - BlockType["FunctionDeclaration"] = "FunctionDeclaration"; - BlockType["FunctionExpression"] = "FunctionExpression"; - BlockType["Identifier"] = "Identifier"; - BlockType["IfStatement"] = "IfStatement"; - BlockType["Literal"] = "Literal"; - BlockType["LabeledStatement"] = "LabeledStatement"; - BlockType["LogicalExpression"] = "LogicalExpression"; - BlockType["MemberExpression"] = "MemberExpression"; - BlockType["NewExpression"] = "NewExpression"; - BlockType["ObjectExpression"] = "ObjectExpression"; - BlockType["Program"] = "Program"; - BlockType["Property"] = "Property"; - BlockType["ReturnStatement"] = "ReturnStatement"; - BlockType["SequenceExpression"] = "SequenceExpression"; - BlockType["SwitchStatement"] = "SwitchStatement"; - BlockType["SwitchCase"] = "SwitchCase"; - BlockType["ThisExpression"] = "ThisExpression"; - BlockType["ThrowStatement"] = "ThrowStatement"; - BlockType["TryStatement"] = "TryStatement"; - BlockType["UnaryExpression"] = "UnaryExpression"; - BlockType["UpdateExpression"] = "UpdateExpression"; - BlockType["VariableDeclaration"] = "VariableDeclaration"; - BlockType["VariableDeclarator"] = "VariableDeclarator"; - BlockType["WhileStatement"] = "WhileStatement"; - BlockType["WithStatement"] = "WithStatement"; -})(BlockType = BlockType || (BlockType = {})); -; -/** - * Variable Flags - * - * @enum {int} VARIABLE_FLAGS - * @global - */ -export var VARIABLE_FLAGS; -(function (VARIABLE_FLAGS) { - VARIABLE_FLAGS[VARIABLE_FLAGS["PUBLISH"] = 2] = "PUBLISH"; - VARIABLE_FLAGS[VARIABLE_FLAGS["PUBLISH_IF_SERVER"] = 4] = "PUBLISH_IF_SERVER"; -})(VARIABLE_FLAGS = VARIABLE_FLAGS || (VARIABLE_FLAGS = {})); -; -export var BLOCK_GROUPS; -(function (BLOCK_GROUPS) { - BLOCK_GROUPS["VARIABLE"] = "DriverVariable"; - BLOCK_GROUPS["BASIC_COMMAND"] = "DriverBasicCommand"; - BLOCK_GROUPS["CONDITIONAL_COMMAND"] = "DriverConditionalCommand"; - BLOCK_GROUPS["RESPONSE_VARIABLE"] = "DriverResponseVariable"; - BLOCK_GROUPS["RESPONSE_BLOCKS"] = "conditionalProcess"; - BLOCK_GROUPS["RESPONSE_VARIABLES"] = "processVariables"; - BLOCK_GROUPS["BASIC_VARIABLES"] = "basicVariables"; -})(BLOCK_GROUPS = BLOCK_GROUPS || (BLOCK_GROUPS = {})); -; -export var COMMAND_TYPES; -(function (COMMAND_TYPES) { - COMMAND_TYPES["BASIC_COMMAND"] = "basic"; - COMMAND_TYPES["CONDITIONAL_COMMAND"] = "conditional"; - COMMAND_TYPES["INIT_COMMAND"] = "init"; -})(COMMAND_TYPES = COMMAND_TYPES || (COMMAND_TYPES = {})); -; -export var CIFLAG; -(function (CIFLAG) { - /** - * Instruct for no additional extra processing - * @constant - * @type int - */ - CIFLAG[CIFLAG["NONE"] = 0] = "NONE"; - /** - * Will instruct the pre/post processor to base-64 decode or encode - * @constant - * @type int - */ - CIFLAG[CIFLAG["BASE_64"] = 1] = "BASE_64"; - /** - * Post/Pre process the value with a user function - * @constant - * @type int - */ - CIFLAG[CIFLAG["USE_FUNCTION"] = 2] = "USE_FUNCTION"; - /** - * Replace variables with local scope's variables during the post/pre process - * @constant - * @type int - */ - CIFLAG[CIFLAG["REPLACE_VARIABLES"] = 4] = "REPLACE_VARIABLES"; - /** - * Replace variables with local scope's variables during the post/pre process but evaluate the whole string - * as Javascript - * @constant - * @type int - */ - CIFLAG[CIFLAG["REPLACE_VARIABLES_EVALUATED"] = 8] = "REPLACE_VARIABLES_EVALUATED"; - /** - * Will instruct the pre/post processor to escpape evaluated or replaced variables or expressions - * @constant - * @type int - */ - CIFLAG[CIFLAG["ESCAPE"] = 16] = "ESCAPE"; - /** - * Will instruct the pre/post processor to replace block calls with oridinary vanilla script - * @constant - * @type int - */ - CIFLAG[CIFLAG["REPLACE_BLOCK_CALLS"] = 32] = "REPLACE_BLOCK_CALLS"; - /** - * Will instruct the pre/post processor to remove variable delimitters/placeholders from the final string - * @constant - * @type int - */ - CIFLAG[CIFLAG["REMOVE_DELIMTTERS"] = 64] = "REMOVE_DELIMTTERS"; - /** - * Will instruct the pre/post processor to remove "[" ,"]" , "(" , ")" , "{", "}" , "*" , "+" , "." - * @constant - * @type int - */ - CIFLAG[CIFLAG["ESCAPE_SPECIAL_CHARS"] = 128] = "ESCAPE_SPECIAL_CHARS"; - /** - * Will instruct the pre/post processor to use regular expressions over string substitution - * @constant - * @type int - */ - CIFLAG[CIFLAG["USE_REGEX"] = 256] = "USE_REGEX"; - /** - * Will instruct the pre/post processor to use Filtrex (custom bison parser, needs xexpression) over string substitution - * @constant - * @type int - */ - CIFLAG[CIFLAG["USE_FILTREX"] = 512] = "USE_FILTREX"; - /** - * Cascade entry. There are cases where #USE_FUNCTION is not enough or we'd like to avoid further type checking. - * @constant - * @type int - */ - CIFLAG[CIFLAG["CASCADE"] = 1024] = "CASCADE"; - /** - * Cascade entry. There are cases where #USE_FUNCTION is not enough or we'd like to avoid further type checking. - * @constant - * @type int - */ - CIFLAG[CIFLAG["EXPRESSION"] = 2048] = "EXPRESSION"; - /** - * Dont parse anything - * @constant - * @type int - */ - CIFLAG[CIFLAG["DONT_PARSE"] = 4096] = "DONT_PARSE"; - /** - * Convert to hex - * @constant - * @type int - */ - CIFLAG[CIFLAG["TO_HEX"] = 8192] = "TO_HEX"; - /** - * Convert to hex - * @constant - * @type int - */ - CIFLAG[CIFLAG["REPLACE_HEX"] = 16384] = "REPLACE_HEX"; - /** - * Wait for finish - * @constant - * @type int - */ - CIFLAG[CIFLAG["WAIT"] = 32768] = "WAIT"; - /** - * Wait for finish - * @constant - * @type int - */ - CIFLAG[CIFLAG["DONT_ESCAPE"] = 65536] = "DONT_ESCAPE"; - /** - * Flag to mark the maximum core bit mask, after here its user land - * @constant - * @type int - */ - CIFLAG[CIFLAG["END"] = 131072] = "END"; -})(CIFLAG = CIFLAG || (CIFLAG = {})); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXNfZ3VpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3R5cGVzX2d1aS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBTixJQUFZLFNBYVg7QUFiRCxXQUFZLFNBQVM7SUFDakI7Ozs7T0FJRztJQUNILGtEQUFxQixDQUFBO0lBQ3JCOzs7O09BSUc7SUFDSCw2Q0FBa0IsQ0FBQTtBQUN0QixDQUFDLEVBYlcsU0FBUyxHQUFULFNBQVMsS0FBVCxTQUFTLFFBYXBCO0FBQUEsQ0FBQztBQUVGOzs7OztHQUtHO0FBQ0gsTUFBTSxDQUFOLElBQVksZUF1RFg7QUF2REQsV0FBWSxlQUFlO0lBQ3ZCOzs7O09BSUc7SUFDSCxxREFBaUIsQ0FBQTtJQUNqQjs7OztPQUlHO0lBQ0gsMkRBQW9CLENBQUE7SUFDcEI7Ozs7T0FJRztJQUNILHVEQUFrQixDQUFBO0lBQ2xCOzs7O09BSUc7SUFDSCx5REFBbUIsQ0FBQTtJQUNuQjs7OztPQUlHO0lBQ0gseURBQW1CLENBQUE7SUFDbkI7Ozs7T0FJRztJQUNILDREQUFvQixDQUFBO0lBQ3BCOzs7O09BSUc7SUFDSCw4REFBaUIsQ0FBQTtJQUNqQjs7OztPQUlHO0lBQ0gsbUZBQTZCLENBQUE7SUFDN0I7Ozs7T0FJRztJQUNILGlFQUFtQixDQUFBLENBQUMsMkNBQTJDO0FBQ25FLENBQUMsRUF2RFcsZUFBZSxHQUFmLGVBQWUsS0FBZixlQUFlLFFBdUQxQjtBQUVELE1BQU0sQ0FBTixJQUFZLFVBR1g7QUFIRCxXQUFZLFVBQVU7SUFDbEIsK0NBQVUsQ0FBQTtJQUNWLCtFQUEwQixDQUFBO0FBQzlCLENBQUMsRUFIVyxVQUFVLEdBQVYsVUFBVSxLQUFWLFVBQVUsUUFHckI7QUFBQSxDQUFDO0FBRUY7Ozs7R0FJRztBQUNILE1BQU0sQ0FBTixJQUFZLFlBT1g7QUFQRCxXQUFZLFlBQVk7SUFDcEIsK0NBQWlCLENBQUE7SUFDakIsdURBQXFCLENBQUE7SUFD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 \ No newline at end of file +/** + * Flags to describe a block's execution behavior. + * + * @enum {integer} module=xide/types/RUN_FLAGS + * @memberOf module=xide/types + */ +export var RUN_FLAGS; +(function (RUN_FLAGS) { + /** + * The block can execute child blocks. + * @constant + * @type int + */ + RUN_FLAGS[RUN_FLAGS["CHILDREN"] = 32] = "CHILDREN"; + /** + * Block is waiting for a message => EXECUTION_STATE==RUNNING + * @constant + * @type int + */ + RUN_FLAGS[RUN_FLAGS["WAIT"] = 32768] = "WAIT"; +})(RUN_FLAGS || (RUN_FLAGS = {})); +; +/** + * Flags to describe a block's execution state. + * + * @enum {integer} module=xide/types/EXECUTION_STATE + * @memberOf module=xide/types + */ +export var EXECUTION_STATE; +(function (EXECUTION_STATE) { + /** + * The block is doing nothing and also has done nothing. The is the default state + * @constant + * @type int + */ + EXECUTION_STATE[EXECUTION_STATE["NONE"] = 0] = "NONE"; + /** + * The block is running. + * @constant + * @type int + */ + EXECUTION_STATE[EXECUTION_STATE["RUNNING"] = 1] = "RUNNING"; + /** + * The block is an error state. + * @constant + * @type int + */ + EXECUTION_STATE[EXECUTION_STATE["ERROR"] = 2] = "ERROR"; + /** + * The block is in an paused state. + * @constant + * @type int + */ + EXECUTION_STATE[EXECUTION_STATE["PAUSED"] = 4] = "PAUSED"; + /** + * The block is an finished state, ready to be cleared to "NONE" at the next frame. + * @constant + * @type int + */ + EXECUTION_STATE[EXECUTION_STATE["FINISH"] = 8] = "FINISH"; + /** + * The block is an stopped state, ready to be cleared to "NONE" at the next frame. + * @constant + * @type int + */ + EXECUTION_STATE[EXECUTION_STATE["STOPPED"] = 16] = "STOPPED"; + /** + * The block has been launched once... + * @constant + * @type int + */ + EXECUTION_STATE[EXECUTION_STATE["ONCE"] = 2147483648] = "ONCE"; + /** + * Block will be reseted next frame + * @constant + * @type int + */ + EXECUTION_STATE[EXECUTION_STATE["RESET_NEXT_FRAME"] = 8388608] = "RESET_NEXT_FRAME"; + /** + * Block is locked and so no further inputs can be activated. + * @constant + * @type int + */ + EXECUTION_STATE[EXECUTION_STATE["LOCKED"] = 536870912] = "LOCKED"; // Block is locked for utilisation in xblox +})(EXECUTION_STATE || (EXECUTION_STATE = {})); +export var BLOCK_MODE; +(function (BLOCK_MODE) { + BLOCK_MODE[BLOCK_MODE["NORMAL"] = 0] = "NORMAL"; + BLOCK_MODE[BLOCK_MODE["UPDATE_WIDGET_PROPERTY"] = 1] = "UPDATE_WIDGET_PROPERTY"; +})(BLOCK_MODE || (BLOCK_MODE = {})); +; +/** + * Flags to describe a block's belonging to a standard signal. + * @enum {integer} module=xblox/types/BLOCK_OUTLET + * @memberOf module=xblox/types + */ +export var BLOCK_OUTLET; +(function (BLOCK_OUTLET) { + BLOCK_OUTLET[BLOCK_OUTLET["NONE"] = 0] = "NONE"; + BLOCK_OUTLET[BLOCK_OUTLET["PROGRESS"] = 1] = "PROGRESS"; + BLOCK_OUTLET[BLOCK_OUTLET["ERROR"] = 2] = "ERROR"; + BLOCK_OUTLET[BLOCK_OUTLET["PAUSED"] = 4] = "PAUSED"; + BLOCK_OUTLET[BLOCK_OUTLET["FINISH"] = 8] = "FINISH"; + BLOCK_OUTLET[BLOCK_OUTLET["STOPPED"] = 16] = "STOPPED"; +})(BLOCK_OUTLET || (BLOCK_OUTLET = {})); +; +export var EVENTS; +(function (EVENTS) { + EVENTS["ON_RUN_BLOCK"] = "onRunBlock"; + EVENTS["ON_RUN_BLOCK_FAILED"] = "onRunBlockFailed"; + EVENTS["ON_RUN_BLOCK_SUCCESS"] = "onRunBlockSuccess"; + EVENTS["ON_BLOCK_SELECTED"] = "onItemSelected"; + EVENTS["ON_BLOCK_UNSELECTED"] = "onBlockUnSelected"; + EVENTS["ON_BLOCK_EXPRESSION_FAILED"] = "onExpressionFailed"; + EVENTS["ON_BUILD_BLOCK_INFO_LIST"] = "onBuildBlockInfoList"; + EVENTS["ON_BUILD_BLOCK_INFO_LIST_END"] = "onBuildBlockInfoListEnd"; + EVENTS["ON_BLOCK_PROPERTY_CHANGED"] = "onBlockPropertyChanged"; + EVENTS["ON_SCOPE_CREATED"] = "onScopeCreated"; + EVENTS["ON_VARIABLE_CHANGED"] = "onVariableChanged"; + EVENTS["ON_CREATE_VARIABLE_CI"] = "onCreateVariableCI"; +})(EVENTS || (EVENTS = {})); +export var BlockType; +(function (BlockType) { + BlockType["AssignmentExpression"] = "AssignmentExpression"; + BlockType["ArrayExpression"] = "ArrayExpression"; + BlockType["BlockStatement"] = "BlockStatement"; + BlockType["BinaryExpression"] = "BinaryExpression"; + BlockType["BreakStatement"] = "BreakStatement"; + BlockType["CallExpression"] = "CallExpression"; + BlockType["CatchClause"] = "CatchClause"; + BlockType["ConditionalExpression"] = "ConditionalExpression"; + BlockType["ContinueStatement"] = "ContinueStatement"; + BlockType["DoWhileStatement"] = "DoWhileStatement"; + BlockType["DebuggerStatement"] = "DebuggerStatement"; + BlockType["EmptyStatement"] = "EmptyStatement"; + BlockType["ExpressionStatement"] = "ExpressionStatement"; + BlockType["ForStatement"] = "ForStatement"; + BlockType["ForInStatement"] = "ForInStatement"; + BlockType["FunctionDeclaration"] = "FunctionDeclaration"; + BlockType["FunctionExpression"] = "FunctionExpression"; + BlockType["Identifier"] = "Identifier"; + BlockType["IfStatement"] = "IfStatement"; + BlockType["Literal"] = "Literal"; + BlockType["LabeledStatement"] = "LabeledStatement"; + BlockType["LogicalExpression"] = "LogicalExpression"; + BlockType["MemberExpression"] = "MemberExpression"; + BlockType["NewExpression"] = "NewExpression"; + BlockType["ObjectExpression"] = "ObjectExpression"; + BlockType["Program"] = "Program"; + BlockType["Property"] = "Property"; + BlockType["ReturnStatement"] = "ReturnStatement"; + BlockType["SequenceExpression"] = "SequenceExpression"; + BlockType["SwitchStatement"] = "SwitchStatement"; + BlockType["SwitchCase"] = "SwitchCase"; + BlockType["ThisExpression"] = "ThisExpression"; + BlockType["ThrowStatement"] = "ThrowStatement"; + BlockType["TryStatement"] = "TryStatement"; + BlockType["UnaryExpression"] = "UnaryExpression"; + BlockType["UpdateExpression"] = "UpdateExpression"; + BlockType["VariableDeclaration"] = "VariableDeclaration"; + BlockType["VariableDeclarator"] = "VariableDeclarator"; + BlockType["WhileStatement"] = "WhileStatement"; + BlockType["WithStatement"] = "WithStatement"; +})(BlockType || (BlockType = {})); +; +/** + * Variable Flags + * + * @enum {int} VARIABLE_FLAGS + * @global + */ +export var VARIABLE_FLAGS; +(function (VARIABLE_FLAGS) { + VARIABLE_FLAGS[VARIABLE_FLAGS["PUBLISH"] = 2] = "PUBLISH"; + VARIABLE_FLAGS[VARIABLE_FLAGS["PUBLISH_IF_SERVER"] = 4] = "PUBLISH_IF_SERVER"; +})(VARIABLE_FLAGS || (VARIABLE_FLAGS = {})); +; +export var BLOCK_GROUPS; +(function (BLOCK_GROUPS) { + BLOCK_GROUPS["VARIABLE"] = "DriverVariable"; + BLOCK_GROUPS["BASIC_COMMAND"] = "DriverBasicCommand"; + BLOCK_GROUPS["CONDITIONAL_COMMAND"] = "DriverConditionalCommand"; + BLOCK_GROUPS["RESPONSE_VARIABLE"] = "DriverResponseVariable"; + BLOCK_GROUPS["RESPONSE_BLOCKS"] = "conditionalProcess"; + BLOCK_GROUPS["RESPONSE_VARIABLES"] = "processVariables"; + BLOCK_GROUPS["BASIC_VARIABLES"] = "basicVariables"; +})(BLOCK_GROUPS || (BLOCK_GROUPS = {})); +; +export var COMMAND_TYPES; +(function (COMMAND_TYPES) { + COMMAND_TYPES["BASIC_COMMAND"] = "basic"; + COMMAND_TYPES["CONDITIONAL_COMMAND"] = "conditional"; + COMMAND_TYPES["INIT_COMMAND"] = "init"; +})(COMMAND_TYPES || (COMMAND_TYPES = {})); +; +export var CIFLAG; +(function (CIFLAG) { + /** + * Instruct for no additional extra processing + * @constant + * @type int + */ + CIFLAG[CIFLAG["NONE"] = 0] = "NONE"; + /** + * Will instruct the pre/post processor to base-64 decode or encode + * @constant + * @type int + */ + CIFLAG[CIFLAG["BASE_64"] = 1] = "BASE_64"; + /** + * Post/Pre process the value with a user function + * @constant + * @type int + */ + CIFLAG[CIFLAG["USE_FUNCTION"] = 2] = "USE_FUNCTION"; + /** + * Replace variables with local scope's variables during the post/pre process + * @constant + * @type int + */ + CIFLAG[CIFLAG["REPLACE_VARIABLES"] = 4] = "REPLACE_VARIABLES"; + /** + * Replace variables with local scope's variables during the post/pre process but evaluate the whole string + * as Javascript + * @constant + * @type int + */ + CIFLAG[CIFLAG["REPLACE_VARIABLES_EVALUATED"] = 8] = "REPLACE_VARIABLES_EVALUATED"; + /** + * Will instruct the pre/post processor to escpape evaluated or replaced variables or expressions + * @constant + * @type int + */ + CIFLAG[CIFLAG["ESCAPE"] = 16] = "ESCAPE"; + /** + * Will instruct the pre/post processor to replace block calls with oridinary vanilla script + * @constant + * @type int + */ + CIFLAG[CIFLAG["REPLACE_BLOCK_CALLS"] = 32] = "REPLACE_BLOCK_CALLS"; + /** + * Will instruct the pre/post processor to remove variable delimitters/placeholders from the final string + * @constant + * @type int + */ + CIFLAG[CIFLAG["REMOVE_DELIMTTERS"] = 64] = "REMOVE_DELIMTTERS"; + /** + * Will instruct the pre/post processor to remove "[" ,"]" , "(" , ")" , "{", "}" , "*" , "+" , "." + * @constant + * @type int + */ + CIFLAG[CIFLAG["ESCAPE_SPECIAL_CHARS"] = 128] = "ESCAPE_SPECIAL_CHARS"; + /** + * Will instruct the pre/post processor to use regular expressions over string substitution + * @constant + * @type int + */ + CIFLAG[CIFLAG["USE_REGEX"] = 256] = "USE_REGEX"; + /** + * Will instruct the pre/post processor to use Filtrex (custom bison parser, needs xexpression) over string substitution + * @constant + * @type int + */ + CIFLAG[CIFLAG["USE_FILTREX"] = 512] = "USE_FILTREX"; + /** + * Cascade entry. There are cases where #USE_FUNCTION is not enough or we'd like to avoid further type checking. + * @constant + * @type int + */ + CIFLAG[CIFLAG["CASCADE"] = 1024] = "CASCADE"; + /** + * Cascade entry. There are cases where #USE_FUNCTION is not enough or we'd like to avoid further type checking. + * @constant + * @type int + */ + CIFLAG[CIFLAG["EXPRESSION"] = 2048] = "EXPRESSION"; + /** + * Dont parse anything + * @constant + * @type int + */ + CIFLAG[CIFLAG["DONT_PARSE"] = 4096] = "DONT_PARSE"; + /** + * Convert to hex + * @constant + * @type int + */ + CIFLAG[CIFLAG["TO_HEX"] = 8192] = "TO_HEX"; + /** + * Convert to hex + * @constant + * @type int + */ + CIFLAG[CIFLAG["REPLACE_HEX"] = 16384] = "REPLACE_HEX"; + /** + * Wait for finish + * @constant + * @type int + */ + CIFLAG[CIFLAG["WAIT"] = 32768] = "WAIT"; + /** + * Wait for finish + * @constant + * @type int + */ + CIFLAG[CIFLAG["DONT_ESCAPE"] = 65536] = "DONT_ESCAPE"; + /** + * Flag to mark the maximum core bit mask, after here its user land + * @constant + * @type int + */ + CIFLAG[CIFLAG["END"] = 131072] = "END"; +})(CIFLAG || (CIFLAG = {})); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXNfZ3VpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3R5cGVzX2d1aS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBTixJQUFZLFNBYVg7QUFiRCxXQUFZLFNBQVM7SUFDakI7Ozs7T0FJRztJQUNILGtEQUFxQixDQUFBO0lBQ3JCOzs7O09BSUc7SUFDSCw2Q0FBa0IsQ0FBQTtBQUN0QixDQUFDLEVBYlcsU0FBUyxLQUFULFNBQVMsUUFhcEI7QUFBQSxDQUFDO0FBRUY7Ozs7O0dBS0c7QUFDSCxNQUFNLENBQU4sSUFBWSxlQXVEWDtBQXZERCxXQUFZLGVBQWU7SUFDdkI7Ozs7T0FJRztJQUNILHFEQUFpQixDQUFBO0lBQ2pCOzs7O09BSUc7SUFDSCwyREFBb0IsQ0FBQTtJQUNwQjs7OztPQUlHO0lBQ0gsdURBQWtCLENBQUE7SUFDbEI7Ozs7T0FJRztJQUNILHlEQUFtQixDQUFBO0lBQ25COzs7O09BSUc7SUFDSCx5REFBbUIsQ0FBQTtJQUNuQjs7OztPQUlHO0lBQ0gsNERBQW9CLENBQUE7SUFDcEI7Ozs7T0FJRztJQUNILDhEQUFpQixDQUFBO0lBQ2pCOzs7O09BSUc7SUFDSCxtRkFBNkIsQ0FBQTtJQUM3Qjs7OztPQUlHO0lBQ0gsaUVBQW1CLENBQUEsQ0FBQywyQ0FBMkM7QUFDbkUsQ0FBQyxFQXZEVyxlQUFlLEtBQWYsZUFBZSxRQXVEMUI7QUFFRCxNQUFNLENBQU4sSUFBWSxVQUdYO0FBSEQsV0FBWSxVQUFVO0lBQ2xCLCtDQUFVLENBQUE7SUFDViwrRUFBMEIsQ0FBQTtBQUM5QixDQUFDLEVBSFcsVUFBVSxLQUFWLFVBQVUsUUFHckI7QUFBQSxDQUFDO0FBRUY7Ozs7R0FJRztBQUNILE1BQU0sQ0FBTixJQUFZLFlBT1g7QUFQRCxXQUFZLFlBQVk7SUFDcEIsK0NBQWlCLENBQUE7SUFDakIsdURBQXFCLENBQUE7SUFDckIsaURBQWtCLENBQUE7SUFDbEIsbURBQW1CLENB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 \ No newline at end of file diff --git a/packages/commons/dist/types_gui.js.map b/packages/commons/dist/types_gui.js.map index 96545b78..ee1c77d3 100644 --- a/packages/commons/dist/types_gui.js.map +++ b/packages/commons/dist/types_gui.js.map @@ -1 +1 @@ -{"version":3,"file":"types_gui.js","sourceRoot":"","sources":["../src/types_gui.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"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_kbot.d.ts b/packages/commons/dist/types_kbot.d.ts index bdcf413c..93624266 100644 --- a/packages/commons/dist/types_kbot.d.ts +++ b/packages/commons/dist/types_kbot.d.ts @@ -1,192 +1,192 @@ -export 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 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; +} diff --git a/packages/commons/dist/types_kbot.js b/packages/commons/dist/types_kbot.js index 3f960835..d3bae8ed 100644 --- a/packages/commons/dist/types_kbot.js +++ b/packages/commons/dist/types_kbot.js @@ -1,2 +1,2 @@ -export {}; +export {}; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXNfa2JvdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy90eXBlc19rYm90LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIifQ== \ No newline at end of file diff --git a/packages/commons/dist/types_kbot.js.map b/packages/commons/dist/types_kbot.js.map index a347f85c..84c51b28 100644 --- a/packages/commons/dist/types_kbot.js.map +++ b/packages/commons/dist/types_kbot.js.map @@ -1 +1 @@ -{"version":3,"file":"types_kbot.js","sourceRoot":"","sources":["../src/types_kbot.ts"],"names":[],"mappings":""} \ No newline at end of file +{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]} \ No newline at end of file diff --git a/packages/commons/dist/uri.d.ts b/packages/commons/dist/uri.d.ts index 5cb5db6e..82bde68a 100644 --- a/packages/commons/dist/uri.d.ts +++ b/packages/commons/dist/uri.d.ts @@ -1,11 +1,10 @@ -/// -import { URL } from 'url'; -import * as path from 'path'; -export interface IDownloadUrl { - urlParts: URL; - pathParts: path.ParsedPath; - filename: string; - path: string; - url: string; -} -export declare const parseForDownload: (url: string, dst: string) => IDownloadUrl; +import { URL } from 'url'; +import * as path from 'path'; +export interface IDownloadUrl { + urlParts: URL; + pathParts: path.ParsedPath; + filename: string; + path: string; + url: string; +} +export declare const parseForDownload: (url: string, dst: string) => IDownloadUrl; diff --git a/packages/commons/dist/uri.js b/packages/commons/dist/uri.js index efdd1328..6b708d30 100644 --- a/packages/commons/dist/uri.js +++ b/packages/commons/dist/uri.js @@ -1,23 +1,23 @@ -import { URL } from 'url'; -import * as path from 'path'; -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; -}; -export const parseForDownload = (url, dst) => { - const parsed = new 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: filename, - path: downloadPath, - url: downloadUrl - }; -}; +import { URL } from 'url'; +import * as path from 'path'; +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; +}; +export const parseForDownload = (url, dst) => { + const parsed = new 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: filename, + path: downloadPath, + url: downloadUrl + }; +}; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXJpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3VyaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sS0FBSyxDQUFBO0FBQ3pCLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFBO0FBRTVCLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQTtBQUN4QyxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsbUJBQW1CLENBQUMsQ0FBQTtBQUU5QyxNQUFNLFdBQVcsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFO0lBQ3RCLElBQUksR0FBRyxHQUFXLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsZUFBZSxFQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDekYsT0FBTyxHQUFHLENBQUM7QUFDZixDQUFDLENBQUE7QUFVRCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLEdBQVcsRUFBRSxHQUFXLEVBQWlCLEVBQUU7SUFFeEUsTUFBTSxNQUFNLEdBQUcsSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDNUIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUE7SUFFekMsTUFBTSxRQUFRLEdBQUcsV0FBVyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtJQUNuRCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsR0FBRyxJQUFJLFFBQVEsRUFBRSxDQUFDLENBQUE7SUFDdkQsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFBO0lBRW5ELE9BQU87UUFDSCxRQUFRLEVBQUMsTUFBTTtRQUNmLFNBQVMsRUFBRSxLQUFLO1FBQ2hCLFFBQVEsRUFBRSxRQUFRO1FBQ2xCLElBQUksRUFBRSxZQUFZO1FBQ2xCLEdBQUcsRUFBRSxXQUFXO0tBQ25CLENBQUE7QUFDTCxDQUFDLENBQUEifQ== \ No newline at end of file diff --git a/packages/commons/dist/uri.js.map b/packages/commons/dist/uri.js.map index dc107377..4fe32cd9 100644 --- a/packages/commons/dist/uri.js.map +++ b/packages/commons/dist/uri.js.map @@ -1 +1 @@ -{"version":3,"file":"uri.js","sourceRoot":"","sources":["../src/uri.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAA;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAE5B,MAAM,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC,CAAA;AACxC,MAAM,SAAS,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAA;AAE9C,MAAM,WAAW,GAAG,CAAC,CAAC,EAAE,EAAE;IACtB,IAAI,GAAG,GAAW,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACzF,OAAO,GAAG,CAAC;AACf,CAAC,CAAA;AAUD,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,GAAW,EAAE,GAAW,EAAiB,EAAE;IAExE,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;IAEzC,MAAM,QAAQ,GAAG,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAA;IACnD,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,GAAG,IAAI,QAAQ,EAAE,CAAC,CAAA;IACvD,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAA;IAEnD,OAAO;QACH,QAAQ,EAAC,MAAM;QACf,SAAS,EAAE,KAAK;QAChB,QAAQ,EAAE,QAAQ;QAClB,IAAI,EAAE,YAAY;QAClB,GAAG,EAAE,WAAW;KACnB,CAAA;AACL,CAAC,CAAA"} \ No newline at end of file +{"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,SAAS,WAAW;AACpB,YAAY,UAAU;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,IAAI,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/variables.d.ts b/packages/commons/dist/variables.d.ts index e9769baf..e551a21e 100644 --- a/packages/commons/dist/variables.d.ts +++ b/packages/commons/dist/variables.d.ts @@ -1,12 +1,12 @@ -export declare const DATE_VARS: () => { - YYYY: number; - MM: number; - DD: number; - HH: number; - SS: number; -}; -export declare const _substitute: (template: any, map: Record, keep?: boolean, alt?: boolean) => any; -export declare const substitute: (alt: boolean, template: string, vars?: Record, keep?: boolean) => any; -export declare const DEFAULT_VARS: (vars: any) => any; -export declare const resolveVariables: (_path: string, alt?: boolean, vars?: Record) => any; -export declare const resolve: (_path: string, alt?: boolean, vars?: Record) => any; +export declare const DATE_VARS: () => { + YYYY: number; + MM: number; + DD: number; + HH: number; + SS: number; +}; +export declare const _substitute: (template: any, map: Record, keep?: boolean, alt?: boolean) => any; +export declare const substitute: (alt: boolean, template: string, vars?: Record, keep?: boolean) => any; +export declare const DEFAULT_VARS: (vars: any) => any; +export declare const resolveVariables: (_path: string, alt?: boolean, vars?: Record) => any; +export declare const resolve: (_path: string, alt?: boolean, vars?: Record) => any; diff --git a/packages/commons/dist/variables.js b/packages/commons/dist/variables.js index 01769fc8..6f80bff6 100644 --- a/packages/commons/dist/variables.js +++ b/packages/commons/dist/variables.js @@ -1,39 +1,39 @@ -import { REGEX_VAR, REGEX_VAR_ALT } from "@polymech/core/constants"; -import { DEFAULT_ROOTS } from './config.js'; -export 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() - }; -}; -export const _substitute = (template, map, keep = true, alt = false) => { - const transform = (k) => k || ''; - return template.replace(alt ? REGEX_VAR_ALT : 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 ""; - } - }); -}; -export const substitute = (alt, template, vars = {}, keep = true) => alt ? _substitute(template, vars, keep, alt) : _substitute(template, vars, keep, alt); -export const DEFAULT_VARS = (vars) => { - return { - ...DEFAULT_ROOTS, - ...DATE_VARS(), - ...vars - }; -}; -export const resolveVariables = (_path, alt = false, vars = {}) => substitute(alt, _path, DEFAULT_VARS(vars)); -export const resolve = (_path, alt = false, vars = {}) => resolveVariables(_path, alt, vars); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFyaWFibGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3ZhcmlhYmxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFBO0FBRW5FLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFFM0MsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLEdBQUcsRUFBRTtJQUMxQixPQUFPO1FBQ0gsSUFBSSxFQUFFLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRTtRQUN4QyxFQUFFLEVBQUUsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQztRQUN2QyxFQUFFLEVBQUUsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFO1FBQ2xDLEVBQUUsRUFBRSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUU7UUFDbkMsRUFBRSxFQUFFLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLFVBQVUsRUFBRTtLQUN4QyxDQUFBO0FBQ0wsQ0FBQyxDQUFBO0FBRUQsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLENBQUMsUUFBUSxFQUFFLEdBQXdCLEVBQUUsT0FBZ0IsSUFBSSxFQUFFLE1BQWUsS0FBSyxFQUFFLEVBQUU7SUFDMUcsTUFBTSxTQUFTLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUE7SUFDaEMsT0FBTyxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFO1FBQzVFLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ1YsT0FBTyxTQUFTLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUE7U0FDeEM7YUFBTSxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFO1lBQ3BDLE9BQU8sU0FBUyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUE7U0FDM0Q7YUFBTSxJQUFJLElBQUksRUFBRTtZQUNiLE9BQU8sSUFBSSxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUE7U0FDMUI7YUFBTTtZQUNILE9BQU8sRUFBRSxDQUFBO1NBQ1o7SUFDTCxDQUFDLENBQUMsQ0FBQTtBQUNOLENBQUMsQ0FBQTtBQUNELE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxDQUFDLEdBQVksRUFBRSxRQUFnQixFQUFFLE9BQTRCLEVBQUUsRUFBRSxPQUFnQixJQUFJLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUE7QUFDek0sTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLENBQUMsSUFBUyxFQUFFLEVBQUU7SUFDdEMsT0FBTztRQUNILEdBQUcsYUFBYTtRQUNoQixHQUFHLFNBQVMsRUFBRTtRQUNkLEdBQUcsSUFBSTtLQUNWLENBQUE7QUFDTCxDQUFDLENBQUE7QUFDRCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLEtBQWEsRUFBRSxNQUFlLEtBQUssRUFBRSxPQUErQixFQUFFLEVBQUUsRUFBRSxDQUN2RyxVQUFVLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtBQUU5QyxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsQ0FBQyxLQUFhLEVBQUUsTUFBZSxLQUFLLEVBQUUsT0FBK0IsRUFBRSxFQUFFLEVBQUUsQ0FDOUYsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQSJ9 \ No newline at end of file +import { REGEX_VAR, REGEX_VAR_ALT } from "@polymech/core/constants"; +import { DEFAULT_ROOTS } from './config.js'; +export 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() + }; +}; +export const _substitute = (template, map, keep = true, alt = false) => { + const transform = (k) => k || ''; + return template.replace(alt ? REGEX_VAR_ALT : 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 ""; + } + }); +}; +export const substitute = (alt, template, vars = {}, keep = true) => alt ? _substitute(template, vars, keep, alt) : _substitute(template, vars, keep, alt); +export const DEFAULT_VARS = (vars) => { + return { + ...DEFAULT_ROOTS, + ...DATE_VARS(), + ...vars + }; +}; +export const resolveVariables = (_path, alt = false, vars = {}) => substitute(alt, _path, DEFAULT_VARS(vars)); +export const resolve = (_path, alt = false, vars = {}) => resolveVariables(_path, alt, vars); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFyaWFibGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3ZhcmlhYmxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFBO0FBRW5FLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFFM0MsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLEdBQUcsRUFBRTtJQUMxQixPQUFPO1FBQ0gsSUFBSSxFQUFFLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRTtRQUN4QyxFQUFFLEVBQUUsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQztRQUN2QyxFQUFFLEVBQUUsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFO1FBQ2xDLEVBQUUsRUFBRSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUU7UUFDbkMsRUFBRSxFQUFFLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLFVBQVUsRUFBRTtLQUN4QyxDQUFBO0FBQ0wsQ0FBQyxDQUFBO0FBRUQsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLENBQUMsUUFBUSxFQUFFLEdBQXdCLEVBQUUsT0FBZ0IsSUFBSSxFQUFFLE1BQWUsS0FBSyxFQUFFLEVBQUU7SUFDMUcsTUFBTSxTQUFTLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUE7SUFDaEMsT0FBTyxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFO1FBQzVFLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDWCxPQUFPLFNBQVMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQTtRQUN6QyxDQUFDO2FBQU0sSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ3JDLE9BQU8sU0FBUyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUE7UUFDNUQsQ0FBQzthQUFNLElBQUksSUFBSSxFQUFFLENBQUM7WUFDZCxPQUFPLElBQUksR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFBO1FBQzNCLENBQUM7YUFBTSxDQUFDO1lBQ0osT0FBTyxFQUFFLENBQUE7UUFDYixDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUE7QUFDTixDQUFDLENBQUE7QUFDRCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsQ0FBQyxHQUFZLEVBQUUsUUFBZ0IsRUFBRSxPQUE0QixFQUFFLEVBQUUsT0FBZ0IsSUFBSSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFBO0FBQ3pNLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxDQUFDLElBQVMsRUFBRSxFQUFFO0lBQ3RDLE9BQU87UUFDSCxHQUFHLGFBQWE7UUFDaEIsR0FBRyxTQUFTLEVBQUU7UUFDZCxHQUFHLElBQUk7S0FDVixDQUFBO0FBQ0wsQ0FBQyxDQUFBO0FBQ0QsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxLQUFhLEVBQUUsTUFBZSxLQUFLLEVBQUUsT0FBK0IsRUFBRSxFQUFFLEVBQUUsQ0FDdkcsVUFBVSxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7QUFFOUMsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLENBQUMsS0FBYSxFQUFFLE1BQWUsS0FBSyxFQUFFLE9BQStCLEVBQUUsRUFBRSxFQUFFLENBQzlGLGdCQUFnQixDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUEifQ== \ No newline at end of file diff --git a/packages/commons/dist/variables.js.map b/packages/commons/dist/variables.js.map index 47a1a66b..e7fc9059 100644 --- a/packages/commons/dist/variables.js.map +++ b/packages/commons/dist/variables.js.map @@ -1 +1 @@ -{"version":3,"file":"variables.js","sourceRoot":"","sources":["../src/variables.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AAEnE,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAE3C,MAAM,CAAC,MAAM,SAAS,GAAG,GAAG,EAAE;IAC1B,OAAO;QACH,IAAI,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,WAAW,EAAE;QACxC,EAAE,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC;QACvC,EAAE,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,OAAO,EAAE;QAClC,EAAE,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE;QACnC,EAAE,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,UAAU,EAAE;KACxC,CAAA;AACL,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,QAAQ,EAAE,GAAwB,EAAE,OAAgB,IAAI,EAAE,MAAe,KAAK,EAAE,EAAE;IAC1G,MAAM,SAAS,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;IAChC,OAAO,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE;QAC5E,IAAI,GAAG,CAAC,GAAG,CAAC,EAAE;YACV,OAAO,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAA;SACxC;aAAM,IAAI,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,EAAE;YACpC,OAAO,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAA;SAC3D;aAAM,IAAI,IAAI,EAAE;YACb,OAAO,IAAI,GAAG,GAAG,GAAG,GAAG,CAAA;SAC1B;aAAM;YACH,OAAO,EAAE,CAAA;SACZ;IACL,CAAC,CAAC,CAAA;AACN,CAAC,CAAA;AACD,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,GAAY,EAAE,QAAgB,EAAE,OAA4B,EAAE,EAAE,OAAgB,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAA;AACzM,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,IAAS,EAAE,EAAE;IACtC,OAAO;QACH,GAAG,aAAa;QAChB,GAAG,SAAS,EAAE;QACd,GAAG,IAAI;KACV,CAAA;AACL,CAAC,CAAA;AACD,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,KAAa,EAAE,MAAe,KAAK,EAAE,OAA+B,EAAE,EAAE,EAAE,CACvG,UAAU,CAAC,GAAG,EAAE,KAAK,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC,CAAA;AAE9C,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,KAAa,EAAE,MAAe,KAAK,EAAE,OAA+B,EAAE,EAAE,EAAE,CAC9F,gBAAgB,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,CAAA"} \ No newline at end of file +{"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,SAAS,WAAW,qBAAqB;AAEzC,SAAS,qBAAqB;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,gBAAgB,WAAW,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/eslint.config.js b/packages/commons/eslint.config.js deleted file mode 100644 index 9dd72a92..00000000 --- a/packages/commons/eslint.config.js +++ /dev/null @@ -1,95 +0,0 @@ -import tseslint from 'typescript-eslint'; -import path from 'node:path'; -import { fileURLToPath } from 'node:url'; -// plugins -import regexpEslint from 'eslint-plugin-regexp'; -const typescriptEslint = tseslint.plugin; - -// parsers -const typescriptParser = tseslint.parser; - -const __filename = fileURLToPath(import.meta.url); -const __dirname = path.dirname(__filename); - - -/** @type {import('eslint').Linter.Config[]} */ -export default [ - { - files: ["src/*.{ts}"] -}, - - ...tseslint.configs.recommendedTypeChecked, - ...tseslint.configs.stylisticTypeChecked, - regexpEslint.configs['flat/recommended'], - { - languageOptions: { - parser: typescriptParser, - parserOptions: { - project: ['./packages/*/tsconfig.json', './tsconfig.eslint.json'], - tsconfigRootDir: __dirname, - }, - }, - plugins: { - '@typescript-eslint': typescriptEslint, - regexp: regexpEslint, - }, - rules: { - // These off/configured-differently-by-default rules fit well for us - '@typescript-eslint/switch-exhaustiveness-check': 'error', - '@typescript-eslint/no-shadow': 'off', - 'no-console': 'off', - '@typescript-eslint/no-unsafe-enum-comparison' : 'off', - '@typescript-eslint/no-empty-object-type': 'off', - // Todo: do we want these? - 'no-var': 'off', - - 'regexp/prefer-regexp-exec': 'off', - '@typescript-eslint/no-duplicate-enum-values': 'off', - '@typescript-eslint/no-unsafe-function-type': 'off', - '@typescript-eslint/prefer-for-of': 'off', - '@typescript-eslint/no-unused-vars': 'off', - '@typescript-eslint/array-type': 'off', - '@typescript-eslint/ban-ts-comment': 'off', - '@typescript-eslint/class-literal-property-style': 'off', - '@typescript-eslint/consistent-indexed-object-style': 'off', - '@typescript-eslint/consistent-type-definitions': 'off', - '@typescript-eslint/dot-notation': 'off', - '@typescript-eslint/no-base-to-string': 'off', - '@typescript-eslint/no-empty-function': 'off', - '@typescript-eslint/no-floating-promises': 'off', - '@typescript-eslint/no-misused-promises': 'off', - '@typescript-eslint/no-redundant-type-constituents': 'off', - '@typescript-eslint/no-this-alias': 'off', - '@typescript-eslint/no-unsafe-argument': 'off', - '@typescript-eslint/no-unsafe-assignment': 'off', - '@typescript-eslint/no-unsafe-call': 'off', - '@typescript-eslint/no-unsafe-member-access': 'off', - '@typescript-eslint/no-unused-expressions': 'off', - '@typescript-eslint/only-throw-error': 'off', - '@typescript-eslint/no-unsafe-return': 'off', - '@typescript-eslint/no-unnecessary-type-assertion': 'off', - '@typescript-eslint/prefer-nullish-coalescing': 'off', - '@typescript-eslint/prefer-optional-chain': 'off', - '@typescript-eslint/prefer-promise-reject-errors': 'off', - '@typescript-eslint/prefer-string-starts-ends-with': 'off', - '@typescript-eslint/require-await': 'off', - '@typescript-eslint/restrict-plus-operands': 'off', - '@typescript-eslint/restrict-template-expressions': 'off', - '@typescript-eslint/sort-type-constituents': 'off', - '@typescript-eslint/unbound-method': 'off', - '@typescript-eslint/no-explicit-any': 'off', - - // Used by Biome - '@typescript-eslint/consistent-type-imports': 'off', - // These rules enabled by the preset configs don't work well for us - '@typescript-eslint/await-thenable': 'off', - 'prefer-const': 'off', - - // In some cases, using explicit letter-casing is more performant than the `i` flag - 'regexp/use-ignore-case': 'off', - 'regexp/prefer-regexp-exec': 'warn', - 'regexp/prefer-regexp-test': 'warn', - 'no-control-regex': 'off' - } - } -] \ No newline at end of file diff --git a/packages/commons/package.json b/packages/commons/package.json index b8e9df64..95309c54 100644 --- a/packages/commons/package.json +++ b/packages/commons/package.json @@ -65,7 +65,7 @@ "@polymech/fs": "link:..\\fs", "@schemastore/package": "^0.0.10", "env-var": "^7.5.0", - "glob": "^10.4.1", + "glob": "^10.4.5", "js-yaml": "^4.1.0", "tslog": "^3.3.3", "tsup": "^8.3.5", @@ -75,17 +75,9 @@ "zod-to-ts": "^1.2.0" }, "devDependencies": { - "@eslint/js": "^9.18.0", - "@repo/eslint-config": "workspace:*", "@repo/typescript-config": "workspace:*", - "@types/node": "^8.10.66", - "eslint": "^8.57.1", - "eslint-plugin-import": "^2.31.0", - "eslint-plugin-regexp": "^2.7.0", - "globals": "^15.14.0", - "ts-node": "^10.9.1", - "typescript": "^4.9.5", - "typescript-eslint": "^8.20.0" + "@types/node": "^22.12.0", + "typescript": "^5.7.3" }, "scripts": { "test": "tsc && mocha build/test", diff --git a/packages/commons/src/fs/_glob.ts b/packages/commons/src/fs/_glob.ts index 0127b412..7e608590 100644 --- a/packages/commons/src/fs/_glob.ts +++ b/packages/commons/src/fs/_glob.ts @@ -7,7 +7,6 @@ import { sync as exists } from '@polymech/fs/exists' export const files = (cwd, glob, options?: any) => globSync(glob, { ...{ dot: true, cwd, absolute: true, caseSensitiveMatch: false }, ...options || {} }) as [] export const filesEx = (cwd, glob, options?: GlobOptions) => globSync(glob, { ...{ dot: true, cwd, absolute: true, caseSensitiveMatch: false }, ...options || {} }) as [] -import { substitute } from '../variables.js' import { isFile, isFolder } from '../fs.js' import { PATH_INFO } from '../types_common.js' @@ -18,8 +17,6 @@ export { globParent } from './glob-parent.js' const GLOB_GROUP_PATTERN = /[!*+?@]\(.*\)/ export const getExtensions = (glob: string) => { - //const parseGlob = require('parse-glob') - //https://github.com/micromatch/parse-glob/blob/master/index.js const match = glob.match(GLOB_GROUP_PATTERN); if (match) { return glob.substring((match.index || 0) + 2, glob.lastIndexOf(')')).split('|') diff --git a/packages/core/dist/arrays.d.ts b/packages/core/dist/arrays.d.ts index 6255ee48..a86173a8 100644 --- a/packages/core/dist/arrays.d.ts +++ b/packages/core/dist/arrays.d.ts @@ -1,287 +1,287 @@ -import { CancellationToken } from './cancellation.js'; -import { ISplice } from './sequence.js'; -/** - * Returns the last element of an array. - * @param array The array. - * @param n Which element from the end (default is zero). - */ -export declare function tail(array: ArrayLike, n?: number): T | undefined; -export declare function tail2(arr: T[]): [T[], T]; -export declare function equals(one: ReadonlyArray | undefined, other: ReadonlyArray | undefined, itemEquals?: (a: T, b: T) => boolean): boolean; -/** - * Remove the element at `index` by replacing it with the last element. This is faster than `splice` - * but changes the order of the array - */ -export declare function removeFastWithoutKeepingOrder(array: T[], index: number): void; -/** - * Performs a binary search algorithm over a sorted array. - * - * @param array The array being searched. - * @param key The value we search for. - * @param comparator A function that takes two array elements and returns zero - * if they are equal, a negative number if the first element precedes the - * second one in the sorting order, or a positive number if the second element - * precedes the first one. - * @return See {@link binarySearch2} - */ -export declare function binarySearch(array: ReadonlyArray, key: T, comparator: (op1: T, op2: T) => number): number; -/** - * Performs a binary search algorithm over a sorted collection. Useful for cases - * when we need to perform a binary search over something that isn't actually an - * array, and converting data to an array would defeat the use of binary search - * in the first place. - * - * @param length The collection length. - * @param compareToKey A function that takes an index of an element in the - * collection and returns zero if the value at this index is equal to the - * search key, a negative number if the value precedes the search key in the - * sorting order, or a positive number if the search key precedes the value. - * @return A non-negative index of an element, if found. If not found, the - * result is -(n+1) (or ~n, using bitwise notation), where n is the index - * where the key should be inserted to maintain the sorting order. - */ -export declare function binarySearch2(length: number, compareToKey: (index: number) => number): number; -type Compare = (a: T, b: T) => number; -export declare function quickSelect(nth: number, data: T[], compare: Compare): T; -export declare function groupBy(data: ReadonlyArray, compare: (a: T, b: T) => number): T[][]; -/** - * Splits the given items into a list of (non-empty) groups. - * `shouldBeGrouped` is used to decide if two consecutive items should be in the same group. - * The order of the items is preserved. - */ -export declare function groupAdjacentBy(items: Iterable, shouldBeGrouped: (item1: T, item2: T) => boolean): Iterable; -export declare function forEachAdjacent(arr: T[], f: (item1: T | undefined, item2: T | undefined) => void): void; -export declare function forEachWithNeighbors(arr: T[], f: (before: T | undefined, element: T, after: T | undefined) => void): void; -/** - * Diffs two *sorted* arrays and computes the splices which apply the diff. - */ -export declare function sortedDiff(before: ReadonlyArray, after: ReadonlyArray, compare: (a: T, b: T) => number): ISplice[]; -/** - * Takes two *sorted* arrays and computes their delta (removed, added elements). - * Finishes in `Math.min(before.length, after.length)` steps. - */ -export declare function delta(before: ReadonlyArray, after: ReadonlyArray, compare: (a: T, b: T) => number): { - removed: T[]; - added: T[]; -}; -/** - * Returns the top N elements from the array. - * - * Faster than sorting the entire array when the array is a lot larger than N. - * - * @param array The unsorted array. - * @param compare A sort function for the elements. - * @param n The number of elements to return. - * @return The first n elements from array when sorted with compare. - */ -export declare function top(array: ReadonlyArray, compare: (a: T, b: T) => number, n: number): T[]; -/** - * Asynchronous variant of `top()` allowing for splitting up work in batches between which the event loop can run. - * - * Returns the top N elements from the array. - * - * Faster than sorting the entire array when the array is a lot larger than N. - * - * @param array The unsorted array. - * @param compare A sort function for the elements. - * @param n The number of elements to return. - * @param batch The number of elements to examine before yielding to the event loop. - * @return The first n elements from array when sorted with compare. - */ -export declare function topAsync(array: T[], compare: (a: T, b: T) => number, n: number, batch: number, token?: CancellationToken): Promise; -/** - * @returns New array with all falsy values removed. The original array IS NOT modified. - */ -export declare function coalesce(array: ReadonlyArray): T[]; -/** - * Remove all falsy values from `array`. The original array IS modified. - */ -export declare function coalesceInPlace(array: Array): asserts array is Array; -/** - * @deprecated Use `Array.copyWithin` instead - */ -export declare function move(array: unknown[], from: number, to: number): void; -/** - * @returns false if the provided object is an array and not empty. - */ -export declare function isFalsyOrEmpty(obj: any): boolean; -/** - * @returns True if the provided object is an array and has at least one element. - */ -export declare function isNonEmptyArray(obj: T[] | undefined | null): obj is T[]; -export declare function isNonEmptyArray(obj: readonly T[] | undefined | null): obj is readonly T[]; -/** - * Removes duplicates from the given array. The optional keyFn allows to specify - * how elements are checked for equality by returning an alternate value for each. - */ -export declare function distinct(array: ReadonlyArray, keyFn?: (value: T) => unknown): T[]; -export declare function uniqueFilter(keyFn: (t: T) => R): (t: T) => boolean; -export declare function commonPrefixLength(one: ReadonlyArray, other: ReadonlyArray, equals?: (a: T, b: T) => boolean): number; -export declare function range(to: number): number[]; -export declare function range(from: number, to: number): number[]; -export declare function index(array: ReadonlyArray, indexer: (t: T) => string): { - [key: string]: T; -}; -export declare function index(array: ReadonlyArray, indexer: (t: T) => string, mapper: (t: T) => R): { - [key: string]: R; -}; -/** - * Inserts an element into an array. Returns a function which, when - * called, will remove that element from the array. - * - * @deprecated In almost all cases, use a `Set` instead. - */ -export declare function insert(array: T[], element: T): () => void; -/** - * Removes an element from an array if it can be found. - * - * @deprecated In almost all cases, use a `Set` instead. - */ -export declare function remove(array: T[], element: T): T | undefined; -/** - * Insert `insertArr` inside `target` at `insertIndex`. - * Please don't touch unless you understand https://jsperf.com/inserting-an-array-within-an-array - */ -export declare function arrayInsert(target: T[], insertIndex: number, insertArr: T[]): T[]; -/** - * Uses Fisher-Yates shuffle to shuffle the given array - */ -export declare function shuffle(array: T[], _seed?: number): void; -/** - * Pushes an element to the start of the array, if found. - */ -export declare function pushToStart(arr: T[], value: T): void; -/** - * Pushes an element to the end of the array, if found. - */ -export declare function pushToEnd(arr: T[], value: T): void; -export declare function pushMany(arr: T[], items: ReadonlyArray): void; -export declare function mapArrayOrNot(items: T | T[], fn: (_: T) => U): U | U[]; -export declare function asArray(x: T | T[]): T[]; -export declare function asArray(x: T | readonly T[]): readonly T[]; -export declare function getRandomElement(arr: T[]): T | undefined; -/** - * Insert the new items in the array. - * @param array The original array. - * @param start The zero-based location in the array from which to start inserting elements. - * @param newItems The items to be inserted - */ -export declare function insertInto(array: T[], start: number, newItems: T[]): void; -/** - * Removes elements from an array and inserts new elements in their place, returning the deleted elements. Alternative to the native Array.splice method, it - * can only support limited number of items due to the maximum call stack size limit. - * @param array The original array. - * @param start The zero-based location in the array from which to start removing elements. - * @param deleteCount The number of elements to remove. - * @returns An array containing the elements that were deleted. - */ -export declare function splice(array: T[], start: number, deleteCount: number, newItems: T[]): T[]; -/** - * When comparing two values, - * a negative number indicates that the first value is less than the second, - * a positive number indicates that the first value is greater than the second, - * and zero indicates that neither is the case. -*/ -export type CompareResult = number; -export declare namespace CompareResult { - function isLessThan(result: CompareResult): boolean; - function isLessThanOrEqual(result: CompareResult): boolean; - function isGreaterThan(result: CompareResult): boolean; - function isNeitherLessOrGreaterThan(result: CompareResult): boolean; - const greaterThan = 1; - const lessThan = -1; - const neitherLessOrGreaterThan = 0; -} -/** - * A comparator `c` defines a total order `<=` on `T` as following: - * `c(a, b) <= 0` iff `a` <= `b`. - * We also have `c(a, b) == 0` iff `c(b, a) == 0`. -*/ -export type Comparator = (a: T, b: T) => CompareResult; -export declare function compareBy(selector: (item: TItem) => TCompareBy, comparator: Comparator): Comparator; -export declare function tieBreakComparators(...comparators: Comparator[]): Comparator; -/** - * The natural order on numbers. -*/ -export declare const numberComparator: Comparator; -export declare const booleanComparator: Comparator; -export declare function reverseOrder(comparator: Comparator): Comparator; -export declare class ArrayQueue { - private firstIdx; - private items; - private lastIdx; - /** - * Constructs a queue that is backed by the given array. Runtime is O(1). - */ - constructor(); - get length(): number; - /** - * Consumes elements from the beginning of the queue as long as the predicate returns true. - * If no elements were consumed, `null` is returned. Has a runtime of O(result.length). - */ - takeWhile(predicate: (value: T) => boolean): T[] | null; - /** - * Consumes elements from the end of the queue as long as the predicate returns true. - * If no elements were consumed, `null` is returned. - * The result has the same order as the underlying array! - */ - takeFromEndWhile(predicate: (value: T) => boolean): T[] | null; - peek(): T | undefined; - peekLast(): T | undefined; - dequeue(): T | undefined; - removeLast(): T | undefined; - takeCount(count: number): T[]; -} -/** - * This class is faster than an iterator and array for lazy computed data. -*/ -export declare class CallbackIterable { - /** - * Calls the callback for every item. - * Stops when the callback returns false. - */ - readonly iterate: (callback: (item: T) => boolean) => void; - static readonly empty: CallbackIterable; - constructor( - /** - * Calls the callback for every item. - * Stops when the callback returns false. - */ - iterate: (callback: (item: T) => boolean) => void); - forEach(handler: (item: T) => void): void; - toArray(): T[]; - filter(predicate: (item: T) => boolean): CallbackIterable; - map(mapFn: (item: T) => TResult): CallbackIterable; - some(predicate: (item: T) => boolean): boolean; - findFirst(predicate: (item: T) => boolean): T | undefined; - findLast(predicate: (item: T) => boolean): T | undefined; - findLastMaxBy(comparator: Comparator): T | undefined; -} -/** - * Represents a re-arrangement of items in an array. - */ -export declare class Permutation { - private readonly _indexMap; - constructor(_indexMap: readonly number[]); - /** - * Returns a permutation that sorts the given array according to the given compare function. - */ - static createSortPermutation(arr: readonly T[], compareFn: (a: T, b: T) => number): Permutation; - /** - * Returns a new array with the elements of the given array re-arranged according to this permutation. - */ - apply(arr: readonly T[]): T[]; - /** - * Returns a new permutation that undoes the re-arrangement of this permutation. - */ - inverse(): Permutation; -} -/** - * Asynchronous variant of `Array.find()`, returning the first element in - * the array for which the predicate returns true. - * - * This implementation does not bail early and waits for all promises to - * resolve before returning. - */ -export declare function findAsync(array: readonly T[], predicate: (element: T, index: number) => Promise): Promise; -export {}; +import { CancellationToken } from './cancellation.js'; +import { ISplice } from './sequence.js'; +/** + * Returns the last element of an array. + * @param array The array. + * @param n Which element from the end (default is zero). + */ +export declare function tail(array: ArrayLike, n?: number): T | undefined; +export declare function tail2(arr: T[]): [T[], T]; +export declare function equals(one: ReadonlyArray | undefined, other: ReadonlyArray | undefined, itemEquals?: (a: T, b: T) => boolean): boolean; +/** + * Remove the element at `index` by replacing it with the last element. This is faster than `splice` + * but changes the order of the array + */ +export declare function removeFastWithoutKeepingOrder(array: T[], index: number): void; +/** + * Performs a binary search algorithm over a sorted array. + * + * @param array The array being searched. + * @param key The value we search for. + * @param comparator A function that takes two array elements and returns zero + * if they are equal, a negative number if the first element precedes the + * second one in the sorting order, or a positive number if the second element + * precedes the first one. + * @return See {@link binarySearch2} + */ +export declare function binarySearch(array: ReadonlyArray, key: T, comparator: (op1: T, op2: T) => number): number; +/** + * Performs a binary search algorithm over a sorted collection. Useful for cases + * when we need to perform a binary search over something that isn't actually an + * array, and converting data to an array would defeat the use of binary search + * in the first place. + * + * @param length The collection length. + * @param compareToKey A function that takes an index of an element in the + * collection and returns zero if the value at this index is equal to the + * search key, a negative number if the value precedes the search key in the + * sorting order, or a positive number if the search key precedes the value. + * @return A non-negative index of an element, if found. If not found, the + * result is -(n+1) (or ~n, using bitwise notation), where n is the index + * where the key should be inserted to maintain the sorting order. + */ +export declare function binarySearch2(length: number, compareToKey: (index: number) => number): number; +type Compare = (a: T, b: T) => number; +export declare function quickSelect(nth: number, data: T[], compare: Compare): T; +export declare function groupBy(data: ReadonlyArray, compare: (a: T, b: T) => number): T[][]; +/** + * Splits the given items into a list of (non-empty) groups. + * `shouldBeGrouped` is used to decide if two consecutive items should be in the same group. + * The order of the items is preserved. + */ +export declare function groupAdjacentBy(items: Iterable, shouldBeGrouped: (item1: T, item2: T) => boolean): Iterable; +export declare function forEachAdjacent(arr: T[], f: (item1: T | undefined, item2: T | undefined) => void): void; +export declare function forEachWithNeighbors(arr: T[], f: (before: T | undefined, element: T, after: T | undefined) => void): void; +/** + * Diffs two *sorted* arrays and computes the splices which apply the diff. + */ +export declare function sortedDiff(before: ReadonlyArray, after: ReadonlyArray, compare: (a: T, b: T) => number): ISplice[]; +/** + * Takes two *sorted* arrays and computes their delta (removed, added elements). + * Finishes in `Math.min(before.length, after.length)` steps. + */ +export declare function delta(before: ReadonlyArray, after: ReadonlyArray, compare: (a: T, b: T) => number): { + removed: T[]; + added: T[]; +}; +/** + * Returns the top N elements from the array. + * + * Faster than sorting the entire array when the array is a lot larger than N. + * + * @param array The unsorted array. + * @param compare A sort function for the elements. + * @param n The number of elements to return. + * @return The first n elements from array when sorted with compare. + */ +export declare function top(array: ReadonlyArray, compare: (a: T, b: T) => number, n: number): T[]; +/** + * Asynchronous variant of `top()` allowing for splitting up work in batches between which the event loop can run. + * + * Returns the top N elements from the array. + * + * Faster than sorting the entire array when the array is a lot larger than N. + * + * @param array The unsorted array. + * @param compare A sort function for the elements. + * @param n The number of elements to return. + * @param batch The number of elements to examine before yielding to the event loop. + * @return The first n elements from array when sorted with compare. + */ +export declare function topAsync(array: T[], compare: (a: T, b: T) => number, n: number, batch: number, token?: CancellationToken): Promise; +/** + * @returns New array with all falsy values removed. The original array IS NOT modified. + */ +export declare function coalesce(array: ReadonlyArray): T[]; +/** + * Remove all falsy values from `array`. The original array IS modified. + */ +export declare function coalesceInPlace(array: Array): asserts array is Array; +/** + * @deprecated Use `Array.copyWithin` instead + */ +export declare function move(array: unknown[], from: number, to: number): void; +/** + * @returns false if the provided object is an array and not empty. + */ +export declare function isFalsyOrEmpty(obj: any): boolean; +/** + * @returns True if the provided object is an array and has at least one element. + */ +export declare function isNonEmptyArray(obj: T[] | undefined | null): obj is T[]; +export declare function isNonEmptyArray(obj: readonly T[] | undefined | null): obj is readonly T[]; +/** + * Removes duplicates from the given array. The optional keyFn allows to specify + * how elements are checked for equality by returning an alternate value for each. + */ +export declare function distinct(array: ReadonlyArray, keyFn?: (value: T) => unknown): T[]; +export declare function uniqueFilter(keyFn: (t: T) => R): (t: T) => boolean; +export declare function commonPrefixLength(one: ReadonlyArray, other: ReadonlyArray, equals?: (a: T, b: T) => boolean): number; +export declare function range(to: number): number[]; +export declare function range(from: number, to: number): number[]; +export declare function index(array: ReadonlyArray, indexer: (t: T) => string): { + [key: string]: T; +}; +export declare function index(array: ReadonlyArray, indexer: (t: T) => string, mapper: (t: T) => R): { + [key: string]: R; +}; +/** + * Inserts an element into an array. Returns a function which, when + * called, will remove that element from the array. + * + * @deprecated In almost all cases, use a `Set` instead. + */ +export declare function insert(array: T[], element: T): () => void; +/** + * Removes an element from an array if it can be found. + * + * @deprecated In almost all cases, use a `Set` instead. + */ +export declare function remove(array: T[], element: T): T | undefined; +/** + * Insert `insertArr` inside `target` at `insertIndex`. + * Please don't touch unless you understand https://jsperf.com/inserting-an-array-within-an-array + */ +export declare function arrayInsert(target: T[], insertIndex: number, insertArr: T[]): T[]; +/** + * Uses Fisher-Yates shuffle to shuffle the given array + */ +export declare function shuffle(array: T[], _seed?: number): void; +/** + * Pushes an element to the start of the array, if found. + */ +export declare function pushToStart(arr: T[], value: T): void; +/** + * Pushes an element to the end of the array, if found. + */ +export declare function pushToEnd(arr: T[], value: T): void; +export declare function pushMany(arr: T[], items: ReadonlyArray): void; +export declare function mapArrayOrNot(items: T | T[], fn: (_: T) => U): U | U[]; +export declare function asArray(x: T | T[]): T[]; +export declare function asArray(x: T | readonly T[]): readonly T[]; +export declare function getRandomElement(arr: T[]): T | undefined; +/** + * Insert the new items in the array. + * @param array The original array. + * @param start The zero-based location in the array from which to start inserting elements. + * @param newItems The items to be inserted + */ +export declare function insertInto(array: T[], start: number, newItems: T[]): void; +/** + * Removes elements from an array and inserts new elements in their place, returning the deleted elements. Alternative to the native Array.splice method, it + * can only support limited number of items due to the maximum call stack size limit. + * @param array The original array. + * @param start The zero-based location in the array from which to start removing elements. + * @param deleteCount The number of elements to remove. + * @returns An array containing the elements that were deleted. + */ +export declare function splice(array: T[], start: number, deleteCount: number, newItems: T[]): T[]; +/** + * When comparing two values, + * a negative number indicates that the first value is less than the second, + * a positive number indicates that the first value is greater than the second, + * and zero indicates that neither is the case. +*/ +export type CompareResult = number; +export declare namespace CompareResult { + function isLessThan(result: CompareResult): boolean; + function isLessThanOrEqual(result: CompareResult): boolean; + function isGreaterThan(result: CompareResult): boolean; + function isNeitherLessOrGreaterThan(result: CompareResult): boolean; + const greaterThan = 1; + const lessThan = -1; + const neitherLessOrGreaterThan = 0; +} +/** + * A comparator `c` defines a total order `<=` on `T` as following: + * `c(a, b) <= 0` iff `a` <= `b`. + * We also have `c(a, b) == 0` iff `c(b, a) == 0`. +*/ +export type Comparator = (a: T, b: T) => CompareResult; +export declare function compareBy(selector: (item: TItem) => TCompareBy, comparator: Comparator): Comparator; +export declare function tieBreakComparators(...comparators: Comparator[]): Comparator; +/** + * The natural order on numbers. +*/ +export declare const numberComparator: Comparator; +export declare const booleanComparator: Comparator; +export declare function reverseOrder(comparator: Comparator): Comparator; +export declare class ArrayQueue { + private firstIdx; + private items; + private lastIdx; + /** + * Constructs a queue that is backed by the given array. Runtime is O(1). + */ + constructor(); + get length(): number; + /** + * Consumes elements from the beginning of the queue as long as the predicate returns true. + * If no elements were consumed, `null` is returned. Has a runtime of O(result.length). + */ + takeWhile(predicate: (value: T) => boolean): T[] | null; + /** + * Consumes elements from the end of the queue as long as the predicate returns true. + * If no elements were consumed, `null` is returned. + * The result has the same order as the underlying array! + */ + takeFromEndWhile(predicate: (value: T) => boolean): T[] | null; + peek(): T | undefined; + peekLast(): T | undefined; + dequeue(): T | undefined; + removeLast(): T | undefined; + takeCount(count: number): T[]; +} +/** + * This class is faster than an iterator and array for lazy computed data. +*/ +export declare class CallbackIterable { + /** + * Calls the callback for every item. + * Stops when the callback returns false. + */ + readonly iterate: (callback: (item: T) => boolean) => void; + static readonly empty: CallbackIterable; + constructor( + /** + * Calls the callback for every item. + * Stops when the callback returns false. + */ + iterate: (callback: (item: T) => boolean) => void); + forEach(handler: (item: T) => void): void; + toArray(): T[]; + filter(predicate: (item: T) => boolean): CallbackIterable; + map(mapFn: (item: T) => TResult): CallbackIterable; + some(predicate: (item: T) => boolean): boolean; + findFirst(predicate: (item: T) => boolean): T | undefined; + findLast(predicate: (item: T) => boolean): T | undefined; + findLastMaxBy(comparator: Comparator): T | undefined; +} +/** + * Represents a re-arrangement of items in an array. + */ +export declare class Permutation { + private readonly _indexMap; + constructor(_indexMap: readonly number[]); + /** + * Returns a permutation that sorts the given array according to the given compare function. + */ + static createSortPermutation(arr: readonly T[], compareFn: (a: T, b: T) => number): Permutation; + /** + * Returns a new array with the elements of the given array re-arranged according to this permutation. + */ + apply(arr: readonly T[]): T[]; + /** + * Returns a new permutation that undoes the re-arrangement of this permutation. + */ + inverse(): Permutation; +} +/** + * Asynchronous variant of `Array.find()`, returning the first element in + * the array for which the predicate returns true. + * + * This implementation does not bail early and waits for all promises to + * resolve before returning. + */ +export declare function findAsync(array: readonly T[], predicate: (element: T, index: number) => Promise): Promise; +export {}; diff --git a/packages/core/dist/arrays.js b/packages/core/dist/arrays.js index 9ddba997..acc70e50 100644 --- a/packages/core/dist/arrays.js +++ b/packages/core/dist/arrays.js @@ -1,759 +1,759 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ -import { findFirstIdxMonotonousOrArrLen } from './arraysFind.js'; -import { CancellationError } from './errors.js'; -/** - * Returns the last element of an array. - * @param array The array. - * @param n Which element from the end (default is zero). - */ -export function tail(array, n = 0) { - return array[array.length - (1 + n)]; -} -export function tail2(arr) { - if (arr.length === 0) { - throw new Error('Invalid tail call'); - } - return [arr.slice(0, arr.length - 1), arr[arr.length - 1]]; -} -export function equals(one, other, itemEquals = (a, b) => a === b) { - if (one === other) { - return true; - } - if (!one || !other) { - return false; - } - if (one.length !== other.length) { - return false; - } - for (let i = 0, len = one.length; i < len; i++) { - if (!itemEquals(one[i], other[i])) { - return false; - } - } - return true; -} -/** - * Remove the element at `index` by replacing it with the last element. This is faster than `splice` - * but changes the order of the array - */ -export function removeFastWithoutKeepingOrder(array, index) { - const last = array.length - 1; - if (index < last) { - array[index] = array[last]; - } - array.pop(); -} -/** - * Performs a binary search algorithm over a sorted array. - * - * @param array The array being searched. - * @param key The value we search for. - * @param comparator A function that takes two array elements and returns zero - * if they are equal, a negative number if the first element precedes the - * second one in the sorting order, or a positive number if the second element - * precedes the first one. - * @return See {@link binarySearch2} - */ -export function binarySearch(array, key, comparator) { - return binarySearch2(array.length, i => comparator(array[i], key)); -} -/** - * Performs a binary search algorithm over a sorted collection. Useful for cases - * when we need to perform a binary search over something that isn't actually an - * array, and converting data to an array would defeat the use of binary search - * in the first place. - * - * @param length The collection length. - * @param compareToKey A function that takes an index of an element in the - * collection and returns zero if the value at this index is equal to the - * search key, a negative number if the value precedes the search key in the - * sorting order, or a positive number if the search key precedes the value. - * @return A non-negative index of an element, if found. If not found, the - * result is -(n+1) (or ~n, using bitwise notation), where n is the index - * where the key should be inserted to maintain the sorting order. - */ -export function binarySearch2(length, compareToKey) { - let low = 0, high = length - 1; - while (low <= high) { - const mid = ((low + high) / 2) | 0; - const comp = compareToKey(mid); - if (comp < 0) { - low = mid + 1; - } - else if (comp > 0) { - high = mid - 1; - } - else { - return mid; - } - } - return -(low + 1); -} -export function quickSelect(nth, data, compare) { - nth = nth | 0; - if (nth >= data.length) { - throw new TypeError('invalid index'); - } - const pivotValue = data[Math.floor(data.length * Math.random())]; - const lower = []; - const higher = []; - const pivots = []; - for (const value of data) { - const val = compare(value, pivotValue); - if (val < 0) { - lower.push(value); - } - else if (val > 0) { - higher.push(value); - } - else { - pivots.push(value); - } - } - if (nth < lower.length) { - return quickSelect(nth, lower, compare); - } - else if (nth < lower.length + pivots.length) { - return pivots[0]; - } - else { - return quickSelect(nth - (lower.length + pivots.length), higher, compare); - } -} -export function groupBy(data, compare) { - const result = []; - let currentGroup = undefined; - for (const element of data.slice(0).sort(compare)) { - if (!currentGroup || compare(currentGroup[0], element) !== 0) { - currentGroup = [element]; - result.push(currentGroup); - } - else { - currentGroup.push(element); - } - } - return result; -} -/** - * Splits the given items into a list of (non-empty) groups. - * `shouldBeGrouped` is used to decide if two consecutive items should be in the same group. - * The order of the items is preserved. - */ -export function* groupAdjacentBy(items, shouldBeGrouped) { - let currentGroup; - let last; - for (const item of items) { - if (last !== undefined && shouldBeGrouped(last, item)) { - currentGroup.push(item); - } - else { - if (currentGroup) { - yield currentGroup; - } - currentGroup = [item]; - } - last = item; - } - if (currentGroup) { - yield currentGroup; - } -} -export function forEachAdjacent(arr, f) { - for (let i = 0; i <= arr.length; i++) { - f(i === 0 ? undefined : arr[i - 1], i === arr.length ? undefined : arr[i]); - } -} -export function forEachWithNeighbors(arr, f) { - for (let i = 0; i < arr.length; i++) { - f(i === 0 ? undefined : arr[i - 1], arr[i], i + 1 === arr.length ? undefined : arr[i + 1]); - } -} -/** - * Diffs two *sorted* arrays and computes the splices which apply the diff. - */ -export function sortedDiff(before, after, compare) { - const result = []; - function pushSplice(start, deleteCount, toInsert) { - if (deleteCount === 0 && toInsert.length === 0) { - return; - } - const latest = result[result.length - 1]; - if (latest && latest.start + latest.deleteCount === start) { - latest.deleteCount += deleteCount; - latest.toInsert.push(...toInsert); - } - else { - result.push({ start, deleteCount, toInsert }); - } - } - let beforeIdx = 0; - let afterIdx = 0; - while (true) { - if (beforeIdx === before.length) { - pushSplice(beforeIdx, 0, after.slice(afterIdx)); - break; - } - if (afterIdx === after.length) { - pushSplice(beforeIdx, before.length - beforeIdx, []); - break; - } - const beforeElement = before[beforeIdx]; - const afterElement = after[afterIdx]; - const n = compare(beforeElement, afterElement); - if (n === 0) { - // equal - beforeIdx += 1; - afterIdx += 1; - } - else if (n < 0) { - // beforeElement is smaller -> before element removed - pushSplice(beforeIdx, 1, []); - beforeIdx += 1; - } - else if (n > 0) { - // beforeElement is greater -> after element added - pushSplice(beforeIdx, 0, [afterElement]); - afterIdx += 1; - } - } - return result; -} -/** - * Takes two *sorted* arrays and computes their delta (removed, added elements). - * Finishes in `Math.min(before.length, after.length)` steps. - */ -export function delta(before, after, compare) { - const splices = sortedDiff(before, after, compare); - const removed = []; - const added = []; - for (const splice of splices) { - removed.push(...before.slice(splice.start, splice.start + splice.deleteCount)); - added.push(...splice.toInsert); - } - return { removed, added }; -} -/** - * Returns the top N elements from the array. - * - * Faster than sorting the entire array when the array is a lot larger than N. - * - * @param array The unsorted array. - * @param compare A sort function for the elements. - * @param n The number of elements to return. - * @return The first n elements from array when sorted with compare. - */ -export function top(array, compare, n) { - if (n === 0) { - return []; - } - const result = array.slice(0, n).sort(compare); - topStep(array, compare, result, n, array.length); - return result; -} -/** - * Asynchronous variant of `top()` allowing for splitting up work in batches between which the event loop can run. - * - * Returns the top N elements from the array. - * - * Faster than sorting the entire array when the array is a lot larger than N. - * - * @param array The unsorted array. - * @param compare A sort function for the elements. - * @param n The number of elements to return. - * @param batch The number of elements to examine before yielding to the event loop. - * @return The first n elements from array when sorted with compare. - */ -export function topAsync(array, compare, n, batch, token) { - if (n === 0) { - return Promise.resolve([]); - } - return new Promise((resolve, reject) => { - (async () => { - const o = array.length; - const result = array.slice(0, n).sort(compare); - for (let i = n, m = Math.min(n + batch, o); i < o; i = m, m = Math.min(m + batch, o)) { - if (i > n) { - await new Promise(resolve => setTimeout(resolve)); // any other delay function would starve I/O - } - if (token && token.isCancellationRequested) { - throw new CancellationError(); - } - topStep(array, compare, result, i, m); - } - return result; - })() - .then(resolve, reject); - }); -} -function topStep(array, compare, result, i, m) { - for (const n = result.length; i < m; i++) { - const element = array[i]; - if (compare(element, result[n - 1]) < 0) { - result.pop(); - const j = findFirstIdxMonotonousOrArrLen(result, e => compare(element, e) < 0); - result.splice(j, 0, element); - } - } -} -/** - * @returns New array with all falsy values removed. The original array IS NOT modified. - */ -export function coalesce(array) { - return array.filter((e) => !!e); -} -/** - * Remove all falsy values from `array`. The original array IS modified. - */ -export function coalesceInPlace(array) { - let to = 0; - for (let i = 0; i < array.length; i++) { - if (!!array[i]) { - array[to] = array[i]; - to += 1; - } - } - array.length = to; -} -/** - * @deprecated Use `Array.copyWithin` instead - */ -export function move(array, from, to) { - array.splice(to, 0, array.splice(from, 1)[0]); -} -/** - * @returns false if the provided object is an array and not empty. - */ -export function isFalsyOrEmpty(obj) { - return !Array.isArray(obj) || obj.length === 0; -} -export function isNonEmptyArray(obj) { - return Array.isArray(obj) && obj.length > 0; -} -/** - * Removes duplicates from the given array. The optional keyFn allows to specify - * how elements are checked for equality by returning an alternate value for each. - */ -export function distinct(array, keyFn = value => value) { - const seen = new Set(); - return array.filter(element => { - const key = keyFn(element); - if (seen.has(key)) { - return false; - } - seen.add(key); - return true; - }); -} -export function uniqueFilter(keyFn) { - const seen = new Set(); - return element => { - const key = keyFn(element); - if (seen.has(key)) { - return false; - } - seen.add(key); - return true; - }; -} -export function commonPrefixLength(one, other, equals = (a, b) => a === b) { - let result = 0; - for (let i = 0, len = Math.min(one.length, other.length); i < len && equals(one[i], other[i]); i++) { - result++; - } - return result; -} -export function range(arg, to) { - let from = typeof to === 'number' ? arg : 0; - if (typeof to === 'number') { - from = arg; - } - else { - from = 0; - to = arg; - } - const result = []; - if (from <= to) { - for (let i = from; i < to; i++) { - result.push(i); - } - } - else { - for (let i = from; i > to; i--) { - result.push(i); - } - } - return result; -} -export function index(array, indexer, mapper) { - return array.reduce((r, t) => { - r[indexer(t)] = mapper ? mapper(t) : t; - return r; - }, Object.create(null)); -} -/** - * Inserts an element into an array. Returns a function which, when - * called, will remove that element from the array. - * - * @deprecated In almost all cases, use a `Set` instead. - */ -export function insert(array, element) { - array.push(element); - return () => remove(array, element); -} -/** - * Removes an element from an array if it can be found. - * - * @deprecated In almost all cases, use a `Set` instead. - */ -export function remove(array, element) { - const index = array.indexOf(element); - if (index > -1) { - array.splice(index, 1); - return element; - } - return undefined; -} -/** - * Insert `insertArr` inside `target` at `insertIndex`. - * Please don't touch unless you understand https://jsperf.com/inserting-an-array-within-an-array - */ -export function arrayInsert(target, insertIndex, insertArr) { - const before = target.slice(0, insertIndex); - const after = target.slice(insertIndex); - return before.concat(insertArr, after); -} -/** - * Uses Fisher-Yates shuffle to shuffle the given array - */ -export function shuffle(array, _seed) { - let rand; - if (typeof _seed === 'number') { - let seed = _seed; - // Seeded random number generator in JS. Modified from: - // https://stackoverflow.com/questions/521295/seeding-the-random-number-generator-in-javascript - rand = () => { - const x = Math.sin(seed++) * 179426549; // throw away most significant digits and reduce any potential bias - return x - Math.floor(x); - }; - } - else { - rand = Math.random; - } - for (let i = array.length - 1; i > 0; i -= 1) { - const j = Math.floor(rand() * (i + 1)); - const temp = array[i]; - array[i] = array[j]; - array[j] = temp; - } -} -/** - * Pushes an element to the start of the array, if found. - */ -export function pushToStart(arr, value) { - const index = arr.indexOf(value); - if (index > -1) { - arr.splice(index, 1); - arr.unshift(value); - } -} -/** - * Pushes an element to the end of the array, if found. - */ -export function pushToEnd(arr, value) { - const index = arr.indexOf(value); - if (index > -1) { - arr.splice(index, 1); - arr.push(value); - } -} -export function pushMany(arr, items) { - for (const item of items) { - arr.push(item); - } -} -export function mapArrayOrNot(items, fn) { - return Array.isArray(items) ? - items.map(fn) : - fn(items); -} -export function asArray(x) { - return Array.isArray(x) ? x : [x]; -} -export function getRandomElement(arr) { - return arr[Math.floor(Math.random() * arr.length)]; -} -/** - * Insert the new items in the array. - * @param array The original array. - * @param start The zero-based location in the array from which to start inserting elements. - * @param newItems The items to be inserted - */ -export function insertInto(array, start, newItems) { - const startIdx = getActualStartIndex(array, start); - const originalLength = array.length; - const newItemsLength = newItems.length; - array.length = originalLength + newItemsLength; - // Move the items after the start index, start from the end so that we don't overwrite any value. - for (let i = originalLength - 1; i >= startIdx; i--) { - array[i + newItemsLength] = array[i]; - } - for (let i = 0; i < newItemsLength; i++) { - array[i + startIdx] = newItems[i]; - } -} -/** - * Removes elements from an array and inserts new elements in their place, returning the deleted elements. Alternative to the native Array.splice method, it - * can only support limited number of items due to the maximum call stack size limit. - * @param array The original array. - * @param start The zero-based location in the array from which to start removing elements. - * @param deleteCount The number of elements to remove. - * @returns An array containing the elements that were deleted. - */ -export function splice(array, start, deleteCount, newItems) { - const index = getActualStartIndex(array, start); - let result = array.splice(index, deleteCount); - if (result === undefined) { - // see https://bugs.webkit.org/show_bug.cgi?id=261140 - result = []; - } - insertInto(array, index, newItems); - return result; -} -/** - * Determine the actual start index (same logic as the native splice() or slice()) - * If greater than the length of the array, start will be set to the length of the array. In this case, no element will be deleted but the method will behave as an adding function, adding as many element as item[n*] provided. - * If negative, it will begin that many elements from the end of the array. (In this case, the origin -1, meaning -n is the index of the nth last element, and is therefore equivalent to the index of array.length - n.) If array.length + start is less than 0, it will begin from index 0. - * @param array The target array. - * @param start The operation index. - */ -function getActualStartIndex(array, start) { - return start < 0 ? Math.max(start + array.length, 0) : Math.min(start, array.length); -} -export var CompareResult; -(function (CompareResult) { - function isLessThan(result) { - return result < 0; - } - CompareResult.isLessThan = isLessThan; - function isLessThanOrEqual(result) { - return result <= 0; - } - CompareResult.isLessThanOrEqual = isLessThanOrEqual; - function isGreaterThan(result) { - return result > 0; - } - CompareResult.isGreaterThan = isGreaterThan; - function isNeitherLessOrGreaterThan(result) { - return result === 0; - } - CompareResult.isNeitherLessOrGreaterThan = isNeitherLessOrGreaterThan; - CompareResult.greaterThan = 1; - CompareResult.lessThan = -1; - CompareResult.neitherLessOrGreaterThan = 0; -})(CompareResult = CompareResult || (CompareResult = {})); -export function compareBy(selector, comparator) { - return (a, b) => comparator(selector(a), selector(b)); -} -export function tieBreakComparators(...comparators) { - return (item1, item2) => { - for (const comparator of comparators) { - const result = comparator(item1, item2); - if (!CompareResult.isNeitherLessOrGreaterThan(result)) { - return result; - } - } - return CompareResult.neitherLessOrGreaterThan; - }; -} -/** - * The natural order on numbers. -*/ -export const numberComparator = (a, b) => a - b; -export const booleanComparator = (a, b) => numberComparator(a ? 1 : 0, b ? 1 : 0); -export function reverseOrder(comparator) { - return (a, b) => -comparator(a, b); -} -export class ArrayQueue { - firstIdx = 0; - items = []; - lastIdx = this.items.length - 1; - /** - * Constructs a queue that is backed by the given array. Runtime is O(1). - */ - constructor() { } - get length() { - return this.lastIdx - this.firstIdx + 1; - } - /** - * Consumes elements from the beginning of the queue as long as the predicate returns true. - * If no elements were consumed, `null` is returned. Has a runtime of O(result.length). - */ - takeWhile(predicate) { - // P(k) := k <= this.lastIdx && predicate(this.items[k]) - // Find s := min { k | k >= this.firstIdx && !P(k) } and return this.data[this.firstIdx...s) - let startIdx = this.firstIdx; - while (startIdx < this.items.length && predicate(this.items[startIdx])) { - startIdx++; - } - const result = startIdx === this.firstIdx ? null : this.items.slice(this.firstIdx, startIdx); - this.firstIdx = startIdx; - return result; - } - /** - * Consumes elements from the end of the queue as long as the predicate returns true. - * If no elements were consumed, `null` is returned. - * The result has the same order as the underlying array! - */ - takeFromEndWhile(predicate) { - // P(k) := this.firstIdx >= k && predicate(this.items[k]) - // Find s := max { k | k <= this.lastIdx && !P(k) } and return this.data(s...this.lastIdx] - let endIdx = this.lastIdx; - while (endIdx >= 0 && predicate(this.items[endIdx])) { - endIdx--; - } - const result = endIdx === this.lastIdx ? null : this.items.slice(endIdx + 1, this.lastIdx + 1); - this.lastIdx = endIdx; - return result; - } - peek() { - if (this.length === 0) { - return undefined; - } - return this.items[this.firstIdx]; - } - peekLast() { - if (this.length === 0) { - return undefined; - } - return this.items[this.lastIdx]; - } - dequeue() { - const result = this.items[this.firstIdx]; - this.firstIdx++; - return result; - } - removeLast() { - const result = this.items[this.lastIdx]; - this.lastIdx--; - return result; - } - takeCount(count) { - const result = this.items.slice(this.firstIdx, this.firstIdx + count); - this.firstIdx += count; - return result; - } -} -/** - * This class is faster than an iterator and array for lazy computed data. -*/ -export class CallbackIterable { - iterate; - static empty = new CallbackIterable(_callback => { }); - constructor( - /** - * Calls the callback for every item. - * Stops when the callback returns false. - */ - iterate) { - this.iterate = iterate; - } - forEach(handler) { - this.iterate(item => { handler(item); return true; }); - } - toArray() { - const result = []; - this.iterate(item => { result.push(item); return true; }); - return result; - } - filter(predicate) { - return new CallbackIterable(cb => this.iterate(item => predicate(item) ? cb(item) : true)); - } - map(mapFn) { - return new CallbackIterable(cb => this.iterate(item => cb(mapFn(item)))); - } - some(predicate) { - let result = false; - this.iterate(item => { result = predicate(item); return !result; }); - return result; - } - findFirst(predicate) { - let result; - this.iterate(item => { - if (predicate(item)) { - result = item; - return false; - } - return true; - }); - return result; - } - findLast(predicate) { - let result; - this.iterate(item => { - if (predicate(item)) { - result = item; - } - return true; - }); - return result; - } - findLastMaxBy(comparator) { - let result; - let first = true; - this.iterate(item => { - if (first || CompareResult.isGreaterThan(comparator(item, result))) { - first = false; - result = item; - } - return true; - }); - return result; - } -} -/** - * Represents a re-arrangement of items in an array. - */ -export class Permutation { - _indexMap; - constructor(_indexMap) { - this._indexMap = _indexMap; - } - /** - * Returns a permutation that sorts the given array according to the given compare function. - */ - static createSortPermutation(arr, compareFn) { - const sortIndices = Array.from(arr.keys()).sort((index1, index2) => compareFn(arr[index1], arr[index2])); - return new Permutation(sortIndices); - } - /** - * Returns a new array with the elements of the given array re-arranged according to this permutation. - */ - apply(arr) { - return arr.map((_, index) => arr[this._indexMap[index]]); - } - /** - * Returns a new permutation that undoes the re-arrangement of this permutation. - */ - inverse() { - const inverseIndexMap = this._indexMap.slice(); - for (let i = 0; i < this._indexMap.length; i++) { - inverseIndexMap[this._indexMap[i]] = i; - } - return new Permutation(inverseIndexMap); - } -} -/** - * Asynchronous variant of `Array.find()`, returning the first element in - * the array for which the predicate returns true. - * - * This implementation does not bail early and waits for all promises to - * resolve before returning. - */ -export async function findAsync(array, predicate) { - const results = await Promise.all(array.map(async (element, index) => ({ element, ok: await predicate(element, index) }))); - return results.find(r => r.ok)?.element; -} +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +import { findFirstIdxMonotonousOrArrLen } from './arraysFind.js'; +import { CancellationError } from './errors.js'; +/** + * Returns the last element of an array. + * @param array The array. + * @param n Which element from the end (default is zero). + */ +export function tail(array, n = 0) { + return array[array.length - (1 + n)]; +} +export function tail2(arr) { + if (arr.length === 0) { + throw new Error('Invalid tail call'); + } + return [arr.slice(0, arr.length - 1), arr[arr.length - 1]]; +} +export function equals(one, other, itemEquals = (a, b) => a === b) { + if (one === other) { + return true; + } + if (!one || !other) { + return false; + } + if (one.length !== other.length) { + return false; + } + for (let i = 0, len = one.length; i < len; i++) { + if (!itemEquals(one[i], other[i])) { + return false; + } + } + return true; +} +/** + * Remove the element at `index` by replacing it with the last element. This is faster than `splice` + * but changes the order of the array + */ +export function removeFastWithoutKeepingOrder(array, index) { + const last = array.length - 1; + if (index < last) { + array[index] = array[last]; + } + array.pop(); +} +/** + * Performs a binary search algorithm over a sorted array. + * + * @param array The array being searched. + * @param key The value we search for. + * @param comparator A function that takes two array elements and returns zero + * if they are equal, a negative number if the first element precedes the + * second one in the sorting order, or a positive number if the second element + * precedes the first one. + * @return See {@link binarySearch2} + */ +export function binarySearch(array, key, comparator) { + return binarySearch2(array.length, i => comparator(array[i], key)); +} +/** + * Performs a binary search algorithm over a sorted collection. Useful for cases + * when we need to perform a binary search over something that isn't actually an + * array, and converting data to an array would defeat the use of binary search + * in the first place. + * + * @param length The collection length. + * @param compareToKey A function that takes an index of an element in the + * collection and returns zero if the value at this index is equal to the + * search key, a negative number if the value precedes the search key in the + * sorting order, or a positive number if the search key precedes the value. + * @return A non-negative index of an element, if found. If not found, the + * result is -(n+1) (or ~n, using bitwise notation), where n is the index + * where the key should be inserted to maintain the sorting order. + */ +export function binarySearch2(length, compareToKey) { + let low = 0, high = length - 1; + while (low <= high) { + const mid = ((low + high) / 2) | 0; + const comp = compareToKey(mid); + if (comp < 0) { + low = mid + 1; + } + else if (comp > 0) { + high = mid - 1; + } + else { + return mid; + } + } + return -(low + 1); +} +export function quickSelect(nth, data, compare) { + nth = nth | 0; + if (nth >= data.length) { + throw new TypeError('invalid index'); + } + const pivotValue = data[Math.floor(data.length * Math.random())]; + const lower = []; + const higher = []; + const pivots = []; + for (const value of data) { + const val = compare(value, pivotValue); + if (val < 0) { + lower.push(value); + } + else if (val > 0) { + higher.push(value); + } + else { + pivots.push(value); + } + } + if (nth < lower.length) { + return quickSelect(nth, lower, compare); + } + else if (nth < lower.length + pivots.length) { + return pivots[0]; + } + else { + return quickSelect(nth - (lower.length + pivots.length), higher, compare); + } +} +export function groupBy(data, compare) { + const result = []; + let currentGroup = undefined; + for (const element of data.slice(0).sort(compare)) { + if (!currentGroup || compare(currentGroup[0], element) !== 0) { + currentGroup = [element]; + result.push(currentGroup); + } + else { + currentGroup.push(element); + } + } + return result; +} +/** + * Splits the given items into a list of (non-empty) groups. + * `shouldBeGrouped` is used to decide if two consecutive items should be in the same group. + * The order of the items is preserved. + */ +export function* groupAdjacentBy(items, shouldBeGrouped) { + let currentGroup; + let last; + for (const item of items) { + if (last !== undefined && shouldBeGrouped(last, item)) { + currentGroup.push(item); + } + else { + if (currentGroup) { + yield currentGroup; + } + currentGroup = [item]; + } + last = item; + } + if (currentGroup) { + yield currentGroup; + } +} +export function forEachAdjacent(arr, f) { + for (let i = 0; i <= arr.length; i++) { + f(i === 0 ? undefined : arr[i - 1], i === arr.length ? undefined : arr[i]); + } +} +export function forEachWithNeighbors(arr, f) { + for (let i = 0; i < arr.length; i++) { + f(i === 0 ? undefined : arr[i - 1], arr[i], i + 1 === arr.length ? undefined : arr[i + 1]); + } +} +/** + * Diffs two *sorted* arrays and computes the splices which apply the diff. + */ +export function sortedDiff(before, after, compare) { + const result = []; + function pushSplice(start, deleteCount, toInsert) { + if (deleteCount === 0 && toInsert.length === 0) { + return; + } + const latest = result[result.length - 1]; + if (latest && latest.start + latest.deleteCount === start) { + latest.deleteCount += deleteCount; + latest.toInsert.push(...toInsert); + } + else { + result.push({ start, deleteCount, toInsert }); + } + } + let beforeIdx = 0; + let afterIdx = 0; + while (true) { + if (beforeIdx === before.length) { + pushSplice(beforeIdx, 0, after.slice(afterIdx)); + break; + } + if (afterIdx === after.length) { + pushSplice(beforeIdx, before.length - beforeIdx, []); + break; + } + const beforeElement = before[beforeIdx]; + const afterElement = after[afterIdx]; + const n = compare(beforeElement, afterElement); + if (n === 0) { + // equal + beforeIdx += 1; + afterIdx += 1; + } + else if (n < 0) { + // beforeElement is smaller -> before element removed + pushSplice(beforeIdx, 1, []); + beforeIdx += 1; + } + else if (n > 0) { + // beforeElement is greater -> after element added + pushSplice(beforeIdx, 0, [afterElement]); + afterIdx += 1; + } + } + return result; +} +/** + * Takes two *sorted* arrays and computes their delta (removed, added elements). + * Finishes in `Math.min(before.length, after.length)` steps. + */ +export function delta(before, after, compare) { + const splices = sortedDiff(before, after, compare); + const removed = []; + const added = []; + for (const splice of splices) { + removed.push(...before.slice(splice.start, splice.start + splice.deleteCount)); + added.push(...splice.toInsert); + } + return { removed, added }; +} +/** + * Returns the top N elements from the array. + * + * Faster than sorting the entire array when the array is a lot larger than N. + * + * @param array The unsorted array. + * @param compare A sort function for the elements. + * @param n The number of elements to return. + * @return The first n elements from array when sorted with compare. + */ +export function top(array, compare, n) { + if (n === 0) { + return []; + } + const result = array.slice(0, n).sort(compare); + topStep(array, compare, result, n, array.length); + return result; +} +/** + * Asynchronous variant of `top()` allowing for splitting up work in batches between which the event loop can run. + * + * Returns the top N elements from the array. + * + * Faster than sorting the entire array when the array is a lot larger than N. + * + * @param array The unsorted array. + * @param compare A sort function for the elements. + * @param n The number of elements to return. + * @param batch The number of elements to examine before yielding to the event loop. + * @return The first n elements from array when sorted with compare. + */ +export function topAsync(array, compare, n, batch, token) { + if (n === 0) { + return Promise.resolve([]); + } + return new Promise((resolve, reject) => { + (async () => { + const o = array.length; + const result = array.slice(0, n).sort(compare); + for (let i = n, m = Math.min(n + batch, o); i < o; i = m, m = Math.min(m + batch, o)) { + if (i > n) { + await new Promise(resolve => setTimeout(resolve)); // any other delay function would starve I/O + } + if (token && token.isCancellationRequested) { + throw new CancellationError(); + } + topStep(array, compare, result, i, m); + } + return result; + })() + .then(resolve, reject); + }); +} +function topStep(array, compare, result, i, m) { + for (const n = result.length; i < m; i++) { + const element = array[i]; + if (compare(element, result[n - 1]) < 0) { + result.pop(); + const j = findFirstIdxMonotonousOrArrLen(result, e => compare(element, e) < 0); + result.splice(j, 0, element); + } + } +} +/** + * @returns New array with all falsy values removed. The original array IS NOT modified. + */ +export function coalesce(array) { + return array.filter((e) => !!e); +} +/** + * Remove all falsy values from `array`. The original array IS modified. + */ +export function coalesceInPlace(array) { + let to = 0; + for (let i = 0; i < array.length; i++) { + if (!!array[i]) { + array[to] = array[i]; + to += 1; + } + } + array.length = to; +} +/** + * @deprecated Use `Array.copyWithin` instead + */ +export function move(array, from, to) { + array.splice(to, 0, array.splice(from, 1)[0]); +} +/** + * @returns false if the provided object is an array and not empty. + */ +export function isFalsyOrEmpty(obj) { + return !Array.isArray(obj) || obj.length === 0; +} +export function isNonEmptyArray(obj) { + return Array.isArray(obj) && obj.length > 0; +} +/** + * Removes duplicates from the given array. The optional keyFn allows to specify + * how elements are checked for equality by returning an alternate value for each. + */ +export function distinct(array, keyFn = value => value) { + const seen = new Set(); + return array.filter(element => { + const key = keyFn(element); + if (seen.has(key)) { + return false; + } + seen.add(key); + return true; + }); +} +export function uniqueFilter(keyFn) { + const seen = new Set(); + return element => { + const key = keyFn(element); + if (seen.has(key)) { + return false; + } + seen.add(key); + return true; + }; +} +export function commonPrefixLength(one, other, equals = (a, b) => a === b) { + let result = 0; + for (let i = 0, len = Math.min(one.length, other.length); i < len && equals(one[i], other[i]); i++) { + result++; + } + return result; +} +export function range(arg, to) { + let from = typeof to === 'number' ? arg : 0; + if (typeof to === 'number') { + from = arg; + } + else { + from = 0; + to = arg; + } + const result = []; + if (from <= to) { + for (let i = from; i < to; i++) { + result.push(i); + } + } + else { + for (let i = from; i > to; i--) { + result.push(i); + } + } + return result; +} +export function index(array, indexer, mapper) { + return array.reduce((r, t) => { + r[indexer(t)] = mapper ? mapper(t) : t; + return r; + }, Object.create(null)); +} +/** + * Inserts an element into an array. Returns a function which, when + * called, will remove that element from the array. + * + * @deprecated In almost all cases, use a `Set` instead. + */ +export function insert(array, element) { + array.push(element); + return () => remove(array, element); +} +/** + * Removes an element from an array if it can be found. + * + * @deprecated In almost all cases, use a `Set` instead. + */ +export function remove(array, element) { + const index = array.indexOf(element); + if (index > -1) { + array.splice(index, 1); + return element; + } + return undefined; +} +/** + * Insert `insertArr` inside `target` at `insertIndex`. + * Please don't touch unless you understand https://jsperf.com/inserting-an-array-within-an-array + */ +export function arrayInsert(target, insertIndex, insertArr) { + const before = target.slice(0, insertIndex); + const after = target.slice(insertIndex); + return before.concat(insertArr, after); +} +/** + * Uses Fisher-Yates shuffle to shuffle the given array + */ +export function shuffle(array, _seed) { + let rand; + if (typeof _seed === 'number') { + let seed = _seed; + // Seeded random number generator in JS. Modified from: + // https://stackoverflow.com/questions/521295/seeding-the-random-number-generator-in-javascript + rand = () => { + const x = Math.sin(seed++) * 179426549; // throw away most significant digits and reduce any potential bias + return x - Math.floor(x); + }; + } + else { + rand = Math.random; + } + for (let i = array.length - 1; i > 0; i -= 1) { + const j = Math.floor(rand() * (i + 1)); + const temp = array[i]; + array[i] = array[j]; + array[j] = temp; + } +} +/** + * Pushes an element to the start of the array, if found. + */ +export function pushToStart(arr, value) { + const index = arr.indexOf(value); + if (index > -1) { + arr.splice(index, 1); + arr.unshift(value); + } +} +/** + * Pushes an element to the end of the array, if found. + */ +export function pushToEnd(arr, value) { + const index = arr.indexOf(value); + if (index > -1) { + arr.splice(index, 1); + arr.push(value); + } +} +export function pushMany(arr, items) { + for (const item of items) { + arr.push(item); + } +} +export function mapArrayOrNot(items, fn) { + return Array.isArray(items) ? + items.map(fn) : + fn(items); +} +export function asArray(x) { + return Array.isArray(x) ? x : [x]; +} +export function getRandomElement(arr) { + return arr[Math.floor(Math.random() * arr.length)]; +} +/** + * Insert the new items in the array. + * @param array The original array. + * @param start The zero-based location in the array from which to start inserting elements. + * @param newItems The items to be inserted + */ +export function insertInto(array, start, newItems) { + const startIdx = getActualStartIndex(array, start); + const originalLength = array.length; + const newItemsLength = newItems.length; + array.length = originalLength + newItemsLength; + // Move the items after the start index, start from the end so that we don't overwrite any value. + for (let i = originalLength - 1; i >= startIdx; i--) { + array[i + newItemsLength] = array[i]; + } + for (let i = 0; i < newItemsLength; i++) { + array[i + startIdx] = newItems[i]; + } +} +/** + * Removes elements from an array and inserts new elements in their place, returning the deleted elements. Alternative to the native Array.splice method, it + * can only support limited number of items due to the maximum call stack size limit. + * @param array The original array. + * @param start The zero-based location in the array from which to start removing elements. + * @param deleteCount The number of elements to remove. + * @returns An array containing the elements that were deleted. + */ +export function splice(array, start, deleteCount, newItems) { + const index = getActualStartIndex(array, start); + let result = array.splice(index, deleteCount); + if (result === undefined) { + // see https://bugs.webkit.org/show_bug.cgi?id=261140 + result = []; + } + insertInto(array, index, newItems); + return result; +} +/** + * Determine the actual start index (same logic as the native splice() or slice()) + * If greater than the length of the array, start will be set to the length of the array. In this case, no element will be deleted but the method will behave as an adding function, adding as many element as item[n*] provided. + * If negative, it will begin that many elements from the end of the array. (In this case, the origin -1, meaning -n is the index of the nth last element, and is therefore equivalent to the index of array.length - n.) If array.length + start is less than 0, it will begin from index 0. + * @param array The target array. + * @param start The operation index. + */ +function getActualStartIndex(array, start) { + return start < 0 ? Math.max(start + array.length, 0) : Math.min(start, array.length); +} +export var CompareResult; +(function (CompareResult) { + function isLessThan(result) { + return result < 0; + } + CompareResult.isLessThan = isLessThan; + function isLessThanOrEqual(result) { + return result <= 0; + } + CompareResult.isLessThanOrEqual = isLessThanOrEqual; + function isGreaterThan(result) { + return result > 0; + } + CompareResult.isGreaterThan = isGreaterThan; + function isNeitherLessOrGreaterThan(result) { + return result === 0; + } + CompareResult.isNeitherLessOrGreaterThan = isNeitherLessOrGreaterThan; + CompareResult.greaterThan = 1; + CompareResult.lessThan = -1; + CompareResult.neitherLessOrGreaterThan = 0; +})(CompareResult || (CompareResult = {})); +export function compareBy(selector, comparator) { + return (a, b) => comparator(selector(a), selector(b)); +} +export function tieBreakComparators(...comparators) { + return (item1, item2) => { + for (const comparator of comparators) { + const result = comparator(item1, item2); + if (!CompareResult.isNeitherLessOrGreaterThan(result)) { + return result; + } + } + return CompareResult.neitherLessOrGreaterThan; + }; +} +/** + * The natural order on numbers. +*/ +export const numberComparator = (a, b) => a - b; +export const booleanComparator = (a, b) => numberComparator(a ? 1 : 0, b ? 1 : 0); +export function reverseOrder(comparator) { + return (a, b) => -comparator(a, b); +} +export class ArrayQueue { + firstIdx = 0; + items = []; + lastIdx = this.items.length - 1; + /** + * Constructs a queue that is backed by the given array. Runtime is O(1). + */ + constructor() { } + get length() { + return this.lastIdx - this.firstIdx + 1; + } + /** + * Consumes elements from the beginning of the queue as long as the predicate returns true. + * If no elements were consumed, `null` is returned. Has a runtime of O(result.length). + */ + takeWhile(predicate) { + // P(k) := k <= this.lastIdx && predicate(this.items[k]) + // Find s := min { k | k >= this.firstIdx && !P(k) } and return this.data[this.firstIdx...s) + let startIdx = this.firstIdx; + while (startIdx < this.items.length && predicate(this.items[startIdx])) { + startIdx++; + } + const result = startIdx === this.firstIdx ? null : this.items.slice(this.firstIdx, startIdx); + this.firstIdx = startIdx; + return result; + } + /** + * Consumes elements from the end of the queue as long as the predicate returns true. + * If no elements were consumed, `null` is returned. + * The result has the same order as the underlying array! + */ + takeFromEndWhile(predicate) { + // P(k) := this.firstIdx >= k && predicate(this.items[k]) + // Find s := max { k | k <= this.lastIdx && !P(k) } and return this.data(s...this.lastIdx] + let endIdx = this.lastIdx; + while (endIdx >= 0 && predicate(this.items[endIdx])) { + endIdx--; + } + const result = endIdx === this.lastIdx ? null : this.items.slice(endIdx + 1, this.lastIdx + 1); + this.lastIdx = endIdx; + return result; + } + peek() { + if (this.length === 0) { + return undefined; + } + return this.items[this.firstIdx]; + } + peekLast() { + if (this.length === 0) { + return undefined; + } + return this.items[this.lastIdx]; + } + dequeue() { + const result = this.items[this.firstIdx]; + this.firstIdx++; + return result; + } + removeLast() { + const result = this.items[this.lastIdx]; + this.lastIdx--; + return result; + } + takeCount(count) { + const result = this.items.slice(this.firstIdx, this.firstIdx + count); + this.firstIdx += count; + return result; + } +} +/** + * This class is faster than an iterator and array for lazy computed data. +*/ +export class CallbackIterable { + iterate; + static empty = new CallbackIterable(_callback => { }); + constructor( + /** + * Calls the callback for every item. + * Stops when the callback returns false. + */ + iterate) { + this.iterate = iterate; + } + forEach(handler) { + this.iterate(item => { handler(item); return true; }); + } + toArray() { + const result = []; + this.iterate(item => { result.push(item); return true; }); + return result; + } + filter(predicate) { + return new CallbackIterable(cb => this.iterate(item => predicate(item) ? cb(item) : true)); + } + map(mapFn) { + return new CallbackIterable(cb => this.iterate(item => cb(mapFn(item)))); + } + some(predicate) { + let result = false; + this.iterate(item => { result = predicate(item); return !result; }); + return result; + } + findFirst(predicate) { + let result; + this.iterate(item => { + if (predicate(item)) { + result = item; + return false; + } + return true; + }); + return result; + } + findLast(predicate) { + let result; + this.iterate(item => { + if (predicate(item)) { + result = item; + } + return true; + }); + return result; + } + findLastMaxBy(comparator) { + let result; + let first = true; + this.iterate(item => { + if (first || CompareResult.isGreaterThan(comparator(item, result))) { + first = false; + result = item; + } + return true; + }); + return result; + } +} +/** + * Represents a re-arrangement of items in an array. + */ +export class Permutation { + _indexMap; + constructor(_indexMap) { + this._indexMap = _indexMap; + } + /** + * Returns a permutation that sorts the given array according to the given compare function. + */ + static createSortPermutation(arr, compareFn) { + const sortIndices = Array.from(arr.keys()).sort((index1, index2) => compareFn(arr[index1], arr[index2])); + return new Permutation(sortIndices); + } + /** + * Returns a new array with the elements of the given array re-arranged according to this permutation. + */ + apply(arr) { + return arr.map((_, index) => arr[this._indexMap[index]]); + } + /** + * Returns a new permutation that undoes the re-arrangement of this permutation. + */ + inverse() { + const inverseIndexMap = this._indexMap.slice(); + for (let i = 0; i < this._indexMap.length; i++) { + inverseIndexMap[this._indexMap[i]] = i; + } + return new Permutation(inverseIndexMap); + } +} +/** + * Asynchronous variant of `Array.find()`, returning the first element in + * the array for which the predicate returns true. + * + * This implementation does not bail early and waits for all promises to + * resolve before returning. + */ +export async function findAsync(array, predicate) { + const results = await Promise.all(array.map(async (element, index) => ({ element, ok: await predicate(element, index) }))); + return results.find(r => r.ok)?.element; +} //# sourceMappingURL=arrays.js.map \ No newline at end of file diff --git a/packages/core/dist/arrays.js.map b/packages/core/dist/arrays.js.map index f2e803fd..ef3fd5b5 100644 --- a/packages/core/dist/arrays.js.map +++ b/packages/core/dist/arrays.js.map @@ -1 +1 @@ -{"version":3,"file":"arrays.js","sourceRoot":"","sources":["../src/arrays.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"arrays.js","sourceRoot":"","sources":["../src/arrays.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/dist/arraysFind.d.ts b/packages/core/dist/arraysFind.d.ts index edbbf31f..a1a45873 100644 --- a/packages/core/dist/arraysFind.d.ts +++ b/packages/core/dist/arraysFind.d.ts @@ -1,67 +1,67 @@ -import { Comparator } from './arrays.js'; -export declare function findLast(array: readonly T[], predicate: (item: T) => boolean): T | undefined; -export declare function findLastIdx(array: readonly T[], predicate: (item: T) => boolean, fromIndex?: number): number; -/** - * Finds the last item where predicate is true using binary search. - * `predicate` must be monotonous, i.e. `arr.map(predicate)` must be like `[true, ..., true, false, ..., false]`! - * - * @returns `undefined` if no item matches, otherwise the last item that matches the predicate. - */ -export declare function findLastMonotonous(array: readonly T[], predicate: (item: T) => boolean): T | undefined; -/** - * Finds the last item where predicate is true using binary search. - * `predicate` must be monotonous, i.e. `arr.map(predicate)` must be like `[true, ..., true, false, ..., false]`! - * - * @returns `startIdx - 1` if predicate is false for all items, otherwise the index of the last item that matches the predicate. - */ -export declare function findLastIdxMonotonous(array: readonly T[], predicate: (item: T) => boolean, startIdx?: number, endIdxEx?: number): number; -/** - * Finds the first item where predicate is true using binary search. - * `predicate` must be monotonous, i.e. `arr.map(predicate)` must be like `[false, ..., false, true, ..., true]`! - * - * @returns `undefined` if no item matches, otherwise the first item that matches the predicate. - */ -export declare function findFirstMonotonous(array: readonly T[], predicate: (item: T) => boolean): T | undefined; -/** - * Finds the first item where predicate is true using binary search. - * `predicate` must be monotonous, i.e. `arr.map(predicate)` must be like `[false, ..., false, true, ..., true]`! - * - * @returns `endIdxEx` if predicate is false for all items, otherwise the index of the first item that matches the predicate. - */ -export declare function findFirstIdxMonotonousOrArrLen(array: readonly T[], predicate: (item: T) => boolean, startIdx?: number, endIdxEx?: number): number; -export declare function findFirstIdxMonotonous(array: readonly T[], predicate: (item: T) => boolean, startIdx?: number, endIdxEx?: number): number; -/** - * Use this when - * * You have a sorted array - * * You query this array with a monotonous predicate to find the last item that has a certain property. - * * You query this array multiple times with monotonous predicates that get weaker and weaker. - */ -export declare class MonotonousArray { - private readonly _array; - static assertInvariants: boolean; - private _findLastMonotonousLastIdx; - private _prevFindLastPredicate; - constructor(_array: readonly T[]); - /** - * The predicate must be monotonous, i.e. `arr.map(predicate)` must be like `[true, ..., true, false, ..., false]`! - * For subsequent calls, current predicate must be weaker than (or equal to) the previous predicate, i.e. more entries must be `true`. - */ - findLastMonotonous(predicate: (item: T) => boolean): T | undefined; -} -/** - * Returns the first item that is equal to or greater than every other item. -*/ -export declare function findFirstMax(array: readonly T[], comparator: Comparator): T | undefined; -/** - * Returns the last item that is equal to or greater than every other item. -*/ -export declare function findLastMax(array: readonly T[], comparator: Comparator): T | undefined; -/** - * Returns the first item that is equal to or less than every other item. -*/ -export declare function findFirstMin(array: readonly T[], comparator: Comparator): T | undefined; -export declare function findMaxIdx(array: readonly T[], comparator: Comparator): number; -/** - * Returns the first mapped value of the array which is not undefined. - */ -export declare function mapFindFirst(items: Iterable, mapFn: (value: T) => R | undefined): R | undefined; +import { Comparator } from './arrays.js'; +export declare function findLast(array: readonly T[], predicate: (item: T) => boolean): T | undefined; +export declare function findLastIdx(array: readonly T[], predicate: (item: T) => boolean, fromIndex?: number): number; +/** + * Finds the last item where predicate is true using binary search. + * `predicate` must be monotonous, i.e. `arr.map(predicate)` must be like `[true, ..., true, false, ..., false]`! + * + * @returns `undefined` if no item matches, otherwise the last item that matches the predicate. + */ +export declare function findLastMonotonous(array: readonly T[], predicate: (item: T) => boolean): T | undefined; +/** + * Finds the last item where predicate is true using binary search. + * `predicate` must be monotonous, i.e. `arr.map(predicate)` must be like `[true, ..., true, false, ..., false]`! + * + * @returns `startIdx - 1` if predicate is false for all items, otherwise the index of the last item that matches the predicate. + */ +export declare function findLastIdxMonotonous(array: readonly T[], predicate: (item: T) => boolean, startIdx?: number, endIdxEx?: number): number; +/** + * Finds the first item where predicate is true using binary search. + * `predicate` must be monotonous, i.e. `arr.map(predicate)` must be like `[false, ..., false, true, ..., true]`! + * + * @returns `undefined` if no item matches, otherwise the first item that matches the predicate. + */ +export declare function findFirstMonotonous(array: readonly T[], predicate: (item: T) => boolean): T | undefined; +/** + * Finds the first item where predicate is true using binary search. + * `predicate` must be monotonous, i.e. `arr.map(predicate)` must be like `[false, ..., false, true, ..., true]`! + * + * @returns `endIdxEx` if predicate is false for all items, otherwise the index of the first item that matches the predicate. + */ +export declare function findFirstIdxMonotonousOrArrLen(array: readonly T[], predicate: (item: T) => boolean, startIdx?: number, endIdxEx?: number): number; +export declare function findFirstIdxMonotonous(array: readonly T[], predicate: (item: T) => boolean, startIdx?: number, endIdxEx?: number): number; +/** + * Use this when + * * You have a sorted array + * * You query this array with a monotonous predicate to find the last item that has a certain property. + * * You query this array multiple times with monotonous predicates that get weaker and weaker. + */ +export declare class MonotonousArray { + private readonly _array; + static assertInvariants: boolean; + private _findLastMonotonousLastIdx; + private _prevFindLastPredicate; + constructor(_array: readonly T[]); + /** + * The predicate must be monotonous, i.e. `arr.map(predicate)` must be like `[true, ..., true, false, ..., false]`! + * For subsequent calls, current predicate must be weaker than (or equal to) the previous predicate, i.e. more entries must be `true`. + */ + findLastMonotonous(predicate: (item: T) => boolean): T | undefined; +} +/** + * Returns the first item that is equal to or greater than every other item. +*/ +export declare function findFirstMax(array: readonly T[], comparator: Comparator): T | undefined; +/** + * Returns the last item that is equal to or greater than every other item. +*/ +export declare function findLastMax(array: readonly T[], comparator: Comparator): T | undefined; +/** + * Returns the first item that is equal to or less than every other item. +*/ +export declare function findFirstMin(array: readonly T[], comparator: Comparator): T | undefined; +export declare function findMaxIdx(array: readonly T[], comparator: Comparator): number; +/** + * Returns the first mapped value of the array which is not undefined. + */ +export declare function mapFindFirst(items: Iterable, mapFn: (value: T) => R | undefined): R | undefined; diff --git a/packages/core/dist/arraysFind.js b/packages/core/dist/arraysFind.js index f1f7951f..f7fd06e8 100644 --- a/packages/core/dist/arraysFind.js +++ b/packages/core/dist/arraysFind.js @@ -1,182 +1,182 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ -export function findLast(array, predicate) { - const idx = findLastIdx(array, predicate); - if (idx === -1) { - return undefined; - } - return array[idx]; -} -export function findLastIdx(array, predicate, fromIndex = array.length - 1) { - for (let i = fromIndex; i >= 0; i--) { - const element = array[i]; - if (predicate(element)) { - return i; - } - } - return -1; -} -/** - * Finds the last item where predicate is true using binary search. - * `predicate` must be monotonous, i.e. `arr.map(predicate)` must be like `[true, ..., true, false, ..., false]`! - * - * @returns `undefined` if no item matches, otherwise the last item that matches the predicate. - */ -export function findLastMonotonous(array, predicate) { - const idx = findLastIdxMonotonous(array, predicate); - return idx === -1 ? undefined : array[idx]; -} -/** - * Finds the last item where predicate is true using binary search. - * `predicate` must be monotonous, i.e. `arr.map(predicate)` must be like `[true, ..., true, false, ..., false]`! - * - * @returns `startIdx - 1` if predicate is false for all items, otherwise the index of the last item that matches the predicate. - */ -export function findLastIdxMonotonous(array, predicate, startIdx = 0, endIdxEx = array.length) { - let i = startIdx; - let j = endIdxEx; - while (i < j) { - const k = Math.floor((i + j) / 2); - if (predicate(array[k])) { - i = k + 1; - } - else { - j = k; - } - } - return i - 1; -} -/** - * Finds the first item where predicate is true using binary search. - * `predicate` must be monotonous, i.e. `arr.map(predicate)` must be like `[false, ..., false, true, ..., true]`! - * - * @returns `undefined` if no item matches, otherwise the first item that matches the predicate. - */ -export function findFirstMonotonous(array, predicate) { - const idx = findFirstIdxMonotonousOrArrLen(array, predicate); - return idx === array.length ? undefined : array[idx]; -} -/** - * Finds the first item where predicate is true using binary search. - * `predicate` must be monotonous, i.e. `arr.map(predicate)` must be like `[false, ..., false, true, ..., true]`! - * - * @returns `endIdxEx` if predicate is false for all items, otherwise the index of the first item that matches the predicate. - */ -export function findFirstIdxMonotonousOrArrLen(array, predicate, startIdx = 0, endIdxEx = array.length) { - let i = startIdx; - let j = endIdxEx; - while (i < j) { - const k = Math.floor((i + j) / 2); - if (predicate(array[k])) { - j = k; - } - else { - i = k + 1; - } - } - return i; -} -export function findFirstIdxMonotonous(array, predicate, startIdx = 0, endIdxEx = array.length) { - const idx = findFirstIdxMonotonousOrArrLen(array, predicate, startIdx, endIdxEx); - return idx === array.length ? -1 : idx; -} -/** - * Use this when - * * You have a sorted array - * * You query this array with a monotonous predicate to find the last item that has a certain property. - * * You query this array multiple times with monotonous predicates that get weaker and weaker. - */ -export class MonotonousArray { - _array; - static assertInvariants = false; - _findLastMonotonousLastIdx = 0; - _prevFindLastPredicate; - constructor(_array) { - this._array = _array; - } - /** - * The predicate must be monotonous, i.e. `arr.map(predicate)` must be like `[true, ..., true, false, ..., false]`! - * For subsequent calls, current predicate must be weaker than (or equal to) the previous predicate, i.e. more entries must be `true`. - */ - findLastMonotonous(predicate) { - if (MonotonousArray.assertInvariants) { - if (this._prevFindLastPredicate) { - for (const item of this._array) { - if (this._prevFindLastPredicate(item) && !predicate(item)) { - throw new Error('MonotonousArray: current predicate must be weaker than (or equal to) the previous predicate.'); - } - } - } - this._prevFindLastPredicate = predicate; - } - const idx = findLastIdxMonotonous(this._array, predicate, this._findLastMonotonousLastIdx); - this._findLastMonotonousLastIdx = idx + 1; - return idx === -1 ? undefined : this._array[idx]; - } -} -/** - * Returns the first item that is equal to or greater than every other item. -*/ -export function findFirstMax(array, comparator) { - if (array.length === 0) { - return undefined; - } - let max = array[0]; - for (let i = 1; i < array.length; i++) { - const item = array[i]; - if (comparator(item, max) > 0) { - max = item; - } - } - return max; -} -/** - * Returns the last item that is equal to or greater than every other item. -*/ -export function findLastMax(array, comparator) { - if (array.length === 0) { - return undefined; - } - let max = array[0]; - for (let i = 1; i < array.length; i++) { - const item = array[i]; - if (comparator(item, max) >= 0) { - max = item; - } - } - return max; -} -/** - * Returns the first item that is equal to or less than every other item. -*/ -export function findFirstMin(array, comparator) { - return findFirstMax(array, (a, b) => -comparator(a, b)); -} -export function findMaxIdx(array, comparator) { - if (array.length === 0) { - return -1; - } - let maxIdx = 0; - for (let i = 1; i < array.length; i++) { - const item = array[i]; - if (comparator(item, array[maxIdx]) > 0) { - maxIdx = i; - } - } - return maxIdx; -} -/** - * Returns the first mapped value of the array which is not undefined. - */ -export function mapFindFirst(items, mapFn) { - for (const value of items) { - const mapped = mapFn(value); - if (mapped !== undefined) { - return mapped; - } - } - return undefined; -} +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +export function findLast(array, predicate) { + const idx = findLastIdx(array, predicate); + if (idx === -1) { + return undefined; + } + return array[idx]; +} +export function findLastIdx(array, predicate, fromIndex = array.length - 1) { + for (let i = fromIndex; i >= 0; i--) { + const element = array[i]; + if (predicate(element)) { + return i; + } + } + return -1; +} +/** + * Finds the last item where predicate is true using binary search. + * `predicate` must be monotonous, i.e. `arr.map(predicate)` must be like `[true, ..., true, false, ..., false]`! + * + * @returns `undefined` if no item matches, otherwise the last item that matches the predicate. + */ +export function findLastMonotonous(array, predicate) { + const idx = findLastIdxMonotonous(array, predicate); + return idx === -1 ? undefined : array[idx]; +} +/** + * Finds the last item where predicate is true using binary search. + * `predicate` must be monotonous, i.e. `arr.map(predicate)` must be like `[true, ..., true, false, ..., false]`! + * + * @returns `startIdx - 1` if predicate is false for all items, otherwise the index of the last item that matches the predicate. + */ +export function findLastIdxMonotonous(array, predicate, startIdx = 0, endIdxEx = array.length) { + let i = startIdx; + let j = endIdxEx; + while (i < j) { + const k = Math.floor((i + j) / 2); + if (predicate(array[k])) { + i = k + 1; + } + else { + j = k; + } + } + return i - 1; +} +/** + * Finds the first item where predicate is true using binary search. + * `predicate` must be monotonous, i.e. `arr.map(predicate)` must be like `[false, ..., false, true, ..., true]`! + * + * @returns `undefined` if no item matches, otherwise the first item that matches the predicate. + */ +export function findFirstMonotonous(array, predicate) { + const idx = findFirstIdxMonotonousOrArrLen(array, predicate); + return idx === array.length ? undefined : array[idx]; +} +/** + * Finds the first item where predicate is true using binary search. + * `predicate` must be monotonous, i.e. `arr.map(predicate)` must be like `[false, ..., false, true, ..., true]`! + * + * @returns `endIdxEx` if predicate is false for all items, otherwise the index of the first item that matches the predicate. + */ +export function findFirstIdxMonotonousOrArrLen(array, predicate, startIdx = 0, endIdxEx = array.length) { + let i = startIdx; + let j = endIdxEx; + while (i < j) { + const k = Math.floor((i + j) / 2); + if (predicate(array[k])) { + j = k; + } + else { + i = k + 1; + } + } + return i; +} +export function findFirstIdxMonotonous(array, predicate, startIdx = 0, endIdxEx = array.length) { + const idx = findFirstIdxMonotonousOrArrLen(array, predicate, startIdx, endIdxEx); + return idx === array.length ? -1 : idx; +} +/** + * Use this when + * * You have a sorted array + * * You query this array with a monotonous predicate to find the last item that has a certain property. + * * You query this array multiple times with monotonous predicates that get weaker and weaker. + */ +export class MonotonousArray { + _array; + static assertInvariants = false; + _findLastMonotonousLastIdx = 0; + _prevFindLastPredicate; + constructor(_array) { + this._array = _array; + } + /** + * The predicate must be monotonous, i.e. `arr.map(predicate)` must be like `[true, ..., true, false, ..., false]`! + * For subsequent calls, current predicate must be weaker than (or equal to) the previous predicate, i.e. more entries must be `true`. + */ + findLastMonotonous(predicate) { + if (MonotonousArray.assertInvariants) { + if (this._prevFindLastPredicate) { + for (const item of this._array) { + if (this._prevFindLastPredicate(item) && !predicate(item)) { + throw new Error('MonotonousArray: current predicate must be weaker than (or equal to) the previous predicate.'); + } + } + } + this._prevFindLastPredicate = predicate; + } + const idx = findLastIdxMonotonous(this._array, predicate, this._findLastMonotonousLastIdx); + this._findLastMonotonousLastIdx = idx + 1; + return idx === -1 ? undefined : this._array[idx]; + } +} +/** + * Returns the first item that is equal to or greater than every other item. +*/ +export function findFirstMax(array, comparator) { + if (array.length === 0) { + return undefined; + } + let max = array[0]; + for (let i = 1; i < array.length; i++) { + const item = array[i]; + if (comparator(item, max) > 0) { + max = item; + } + } + return max; +} +/** + * Returns the last item that is equal to or greater than every other item. +*/ +export function findLastMax(array, comparator) { + if (array.length === 0) { + return undefined; + } + let max = array[0]; + for (let i = 1; i < array.length; i++) { + const item = array[i]; + if (comparator(item, max) >= 0) { + max = item; + } + } + return max; +} +/** + * Returns the first item that is equal to or less than every other item. +*/ +export function findFirstMin(array, comparator) { + return findFirstMax(array, (a, b) => -comparator(a, b)); +} +export function findMaxIdx(array, comparator) { + if (array.length === 0) { + return -1; + } + let maxIdx = 0; + for (let i = 1; i < array.length; i++) { + const item = array[i]; + if (comparator(item, array[maxIdx]) > 0) { + maxIdx = i; + } + } + return maxIdx; +} +/** + * Returns the first mapped value of the array which is not undefined. + */ +export function mapFindFirst(items, mapFn) { + for (const value of items) { + const mapped = mapFn(value); + if (mapped !== undefined) { + return mapped; + } + } + return undefined; +} //# sourceMappingURL=arraysFind.js.map \ No newline at end of file diff --git a/packages/core/dist/arraysFind.js.map b/packages/core/dist/arraysFind.js.map index e863b177..0ec4cf28 100644 --- a/packages/core/dist/arraysFind.js.map +++ b/packages/core/dist/arraysFind.js.map @@ -1 +1 @@ -{"version":3,"file":"arraysFind.js","sourceRoot":"","sources":["../src/arraysFind.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"arraysFind.js","sourceRoot":"","sources":["../src/arraysFind.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/dist/aspects.d.ts b/packages/core/dist/aspects.d.ts index a5b2791b..2445f259 100644 --- a/packages/core/dist/aspects.d.ts +++ b/packages/core/dist/aspects.d.ts @@ -1,87 +1,87 @@ -export declare enum SIGNALS { - BEFORE = "BEFORE", - AFTER = "AFTER", - AROUND = "AROUND", - ERROR = "ERROR" -} -type AnyFunction = (...args: any[]) => any; -/** - * If a function returns a Promise, then its awaited type is T. - * Otherwise, it's just ReturnType. - */ -type AwaitedReturn = T extends (...args: any[]) => Promise ? U : ReturnType; -/** - * BEFORE advice: - * - Receives `context` (the `this` of the function) - * - Receives the original `args` - * - Can return either nothing (`void`) or new arguments (`Parameters`) - * - Can be async, returning a Promise that resolves to new args or `void` - */ -export type BeforeAdvice = (context: ThisParameterType, args: Parameters) => void | Parameters | Promise>; -/** - * AFTER advice: - * - Receives `context`, the original function’s final (awaited) result, - * and the original arguments - * - Can return a new result (sync or async) - */ -export type AfterAdvice = (context: ThisParameterType, result: AwaitedReturn, args: Parameters) => AwaitedReturn | Promise>; -/** - * AROUND advice: - * - Provides a `proceed(...args)` function that calls the original method - * - You can call `proceed` any number of times, or skip it - * - Supports both sync and async usage - */ -export type AroundAdvice = (proceed: (...args: Parameters) => ReturnType, context: ThisParameterType, args: Parameters) => ReturnType; -/** - * ERROR advice: - * - Intercepts errors thrown by the original method (sync or async) - * - Can return a fallback result or rethrow - */ -export type ErrorAdvice = (error: unknown, context: ThisParameterType, args: Parameters) => ReturnType | void; -interface AspectOptions { - type: T; - advice: A; -} -/** - * The core aspect(...) function - * - Returns a decorator if used in that style - * - Otherwise, can wrap a function directly - */ -declare function aspect({ type, advice }: AspectOptions): (target: any, _name?: string, descriptor?: PropertyDescriptor) => any; -/** - * `before`: - * Decorator usage => @before((ctx, args) => ...) - * Direct usage => myFn = before(myFn, (ctx, args) => ...) - */ -export declare function before(advice: BeforeAdvice): (target: any, name?: string, descriptor?: PropertyDescriptor) => any; -export declare function before(fn: T, advice: BeforeAdvice): T; -/** - * `after`: - * Decorator usage => @after((ctx, result, args) => ...) - * Direct usage => myFn = after(myFn, (ctx, result, args) => ...) - */ -export declare function after(advice: AfterAdvice): (target: any, name?: string, descriptor?: PropertyDescriptor) => any; -export declare function after(fn: T, advice: AfterAdvice): T; -/** - * `around`: - * Decorator usage => @around((proceed, ctx, args) => ...) - * Direct usage => myFn = around(myFn, (proceed, ctx, args) => ...) - */ -export declare function around(advice: AroundAdvice): (target: any, name?: string, descriptor?: PropertyDescriptor) => any; -export declare function around(fn: T, advice: AroundAdvice): T; -/** - * `error`: - * Decorator usage => @error((err, ctx, args) => ...) - * Direct usage => myFn = error(myFn, (err, ctx, args) => ...) - */ -export declare function error(advice: ErrorAdvice): (target: any, name?: string, descriptor?: PropertyDescriptor) => any; -export declare function error(fn: T, advice: ErrorAdvice): T; -declare const _default: { - SIGNALS: typeof SIGNALS; - before: typeof before; - after: typeof after; - around: typeof around; - error: typeof error; - aspect: typeof aspect; -}; -export default _default; +export declare enum SIGNALS { + BEFORE = "BEFORE", + AFTER = "AFTER", + AROUND = "AROUND", + ERROR = "ERROR" +} +type AnyFunction = (...args: any[]) => any; +/** + * If a function returns a Promise, then its awaited type is T. + * Otherwise, it's just ReturnType. + */ +type AwaitedReturn = T extends (...args: any[]) => Promise ? U : ReturnType; +/** + * BEFORE advice: + * - Receives `context` (the `this` of the function) + * - Receives the original `args` + * - Can return either nothing (`void`) or new arguments (`Parameters`) + * - Can be async, returning a Promise that resolves to new args or `void` + */ +export type BeforeAdvice = (context: ThisParameterType, args: Parameters) => void | Parameters | Promise>; +/** + * AFTER advice: + * - Receives `context`, the original function’s final (awaited) result, + * and the original arguments + * - Can return a new result (sync or async) + */ +export type AfterAdvice = (context: ThisParameterType, result: AwaitedReturn, args: Parameters) => AwaitedReturn | Promise>; +/** + * AROUND advice: + * - Provides a `proceed(...args)` function that calls the original method + * - You can call `proceed` any number of times, or skip it + * - Supports both sync and async usage + */ +export type AroundAdvice = (proceed: (...args: Parameters) => ReturnType, context: ThisParameterType, args: Parameters) => ReturnType; +/** + * ERROR advice: + * - Intercepts errors thrown by the original method (sync or async) + * - Can return a fallback result or rethrow + */ +export type ErrorAdvice = (error: unknown, context: ThisParameterType, args: Parameters) => ReturnType | void; +interface AspectOptions { + type: T; + advice: A; +} +/** + * The core aspect(...) function + * - Returns a decorator if used in that style + * - Otherwise, can wrap a function directly + */ +declare function aspect({ type, advice }: AspectOptions): (target: any, _name?: string, descriptor?: PropertyDescriptor) => any; +/** + * `before`: + * Decorator usage => @before((ctx, args) => ...) + * Direct usage => myFn = before(myFn, (ctx, args) => ...) + */ +export declare function before(advice: BeforeAdvice): (target: any, name?: string, descriptor?: PropertyDescriptor) => any; +export declare function before(fn: T, advice: BeforeAdvice): T; +/** + * `after`: + * Decorator usage => @after((ctx, result, args) => ...) + * Direct usage => myFn = after(myFn, (ctx, result, args) => ...) + */ +export declare function after(advice: AfterAdvice): (target: any, name?: string, descriptor?: PropertyDescriptor) => any; +export declare function after(fn: T, advice: AfterAdvice): T; +/** + * `around`: + * Decorator usage => @around((proceed, ctx, args) => ...) + * Direct usage => myFn = around(myFn, (proceed, ctx, args) => ...) + */ +export declare function around(advice: AroundAdvice): (target: any, name?: string, descriptor?: PropertyDescriptor) => any; +export declare function around(fn: T, advice: AroundAdvice): T; +/** + * `error`: + * Decorator usage => @error((err, ctx, args) => ...) + * Direct usage => myFn = error(myFn, (err, ctx, args) => ...) + */ +export declare function error(advice: ErrorAdvice): (target: any, name?: string, descriptor?: PropertyDescriptor) => any; +export declare function error(fn: T, advice: ErrorAdvice): T; +declare const _default: { + SIGNALS: typeof SIGNALS; + before: typeof before; + after: typeof after; + around: typeof around; + error: typeof error; + aspect: typeof aspect; +}; +export default _default; diff --git a/packages/core/dist/aspects.js b/packages/core/dist/aspects.js index c510c887..689db7e9 100644 --- a/packages/core/dist/aspects.js +++ b/packages/core/dist/aspects.js @@ -1,188 +1,188 @@ -/* ------------------------------------------------------------------------- - * aspects.ts - * - * A robust “aspect” system supporting: - * - before: optionally modifies arguments (sync or async) - * - after: optionally modifies return value (sync or async) - * - around: complete control over function invocation - * - error: intercept errors (sync or async) - * - * Works as both: - * 1) Decorators for class methods (e.g. @before(...)) - * 2) Direct function wrappers (e.g. fn = before(fn, ...)). - * ------------------------------------------------------------------------ */ -/* ------------------------------------------------------------------------- - * 1) SIGNALS Enum (string-based to avoid symbol issues) - * ------------------------------------------------------------------------ */ -export var SIGNALS; -(function (SIGNALS) { - SIGNALS["BEFORE"] = "BEFORE"; - SIGNALS["AFTER"] = "AFTER"; - SIGNALS["AROUND"] = "AROUND"; - SIGNALS["ERROR"] = "ERROR"; -})(SIGNALS = SIGNALS || (SIGNALS = {})); -/* ------------------------------------------------------------------------- - * 5) The SignalMap Implementation - * - This is where the actual "wrapping" logic lives. - * ------------------------------------------------------------------------ */ -const SignalMap = { - /** - * BEFORE: - * - Possibly modifies arguments - * - If returns a Promise, we await it before calling original - * - If returns an array, we use that as new arguments - */ - [SIGNALS.BEFORE](original, advice) { - return function (...args) { - const maybeNewArgs = advice(this, args); - if (maybeNewArgs instanceof Promise) { - return maybeNewArgs.then((resolvedArgs) => { - const finalArgs = resolvedArgs || args; - const result = original.apply(this, finalArgs); - return (result instanceof Promise) ? result : Promise.resolve(result); - }); - } - else { - const finalArgs = Array.isArray(maybeNewArgs) ? maybeNewArgs : args; - return original.apply(this, finalArgs); - } - }; - }, - /** - * AFTER: - * - Possibly modifies the return value - * - If original is async, we chain on its promise - * - Advice can be sync or async - */ - [SIGNALS.AFTER](original, advice) { - return function (...args) { - const result = original.apply(this, args); - if (result instanceof Promise) { - return result.then((unwrapped) => { - const maybeNewResult = advice(this, unwrapped, args); - return (maybeNewResult instanceof Promise) ? maybeNewResult : maybeNewResult; - }); - } - else { - const maybeNewResult = advice(this, result, args); - if (maybeNewResult instanceof Promise) { - return maybeNewResult.then(r => r); - } - return maybeNewResult; - } - }; - }, - /** - * AROUND: - * - Full control over invocation - * - Typically you do: proceed(...args) - * - If you want to skip or call multiple times, you can - */ - [SIGNALS.AROUND](original, advice) { - return function (...args) { - const proceed = (...innerArgs) => original.apply(this, innerArgs); - return advice(proceed, this, args); - }; - }, - /** - * ERROR: - * - Intercepts errors thrown by the original function or a rejected Promise - * - Optionally returns a fallback or rethrows - */ - [SIGNALS.ERROR](original, advice) { - return function (...args) { - try { - const result = original.apply(this, args); - if (result instanceof Promise) { - // Handle async rejections - return result.catch((err) => { - return advice(err, this, args); - }); - } - return result; - } - catch (err) { - // Synchronous error - return advice(err, this, args); - } - }; - }, -}; -/* ------------------------------------------------------------------------- - * 6) Decorator Helper - * ------------------------------------------------------------------------ */ -/** Checks if we’re decorating a class method. */ -function isMethod(_target, descriptor) { - return !!descriptor && typeof descriptor.value === 'function'; -} -/* ------------------------------------------------------------------------- - * 7) Wrapped Helpers (cutMethod, cut, aspect) - * ------------------------------------------------------------------------ */ -/** Strictly typed wrapping for class methods. */ -function cutMethod(descriptor, advice, type) { - const original = descriptor.value; - descriptor.value = SignalMap[type](original, advice); // Cast `any` or refine further - return descriptor; -} -/** Strictly typed wrapping for direct function usage. */ -function cut(target, advice, type) { - return SignalMap[type](target, advice); -} -/** - * The core aspect(...) function - * - Returns a decorator if used in that style - * - Otherwise, can wrap a function directly - */ -function aspect({ type, advice }) { - // If type is invalid, produce a no-op decorator - if (!(type in SignalMap)) { - return function crosscut(target, _name, descriptor) { - return descriptor || target; - }; - } - // Return a decorator function - return function crosscut(target, _name, descriptor) { - // If used on a method - if (isMethod(target, descriptor)) { - return cutMethod(descriptor, advice, type); - } - // If used directly on a function or something else - return cut(target, advice, type); - }; -} -export function before(arg1, arg2) { - if (typeof arg1 === 'function' && typeof arg2 === 'function') { - return SignalMap[SIGNALS.BEFORE](arg1, arg2); - } - return aspect({ type: SIGNALS.BEFORE, advice: arg1 }); -} -export function after(arg1, arg2) { - if (typeof arg1 === 'function' && typeof arg2 === 'function') { - return SignalMap[SIGNALS.AFTER](arg1, arg2); - } - return aspect({ type: SIGNALS.AFTER, advice: arg1 }); -} -export function around(arg1, arg2) { - if (typeof arg1 === 'function' && typeof arg2 === 'function') { - return SignalMap[SIGNALS.AROUND](arg1, arg2); - } - return aspect({ type: SIGNALS.AROUND, advice: arg1 }); -} -export function error(arg1, arg2) { - if (typeof arg1 === 'function' && typeof arg2 === 'function') { - return SignalMap[SIGNALS.ERROR](arg1, arg2); - } - return aspect({ type: SIGNALS.ERROR, advice: arg1 }); -} -/* ------------------------------------------------------------------------- - * 9) Default Export - * ------------------------------------------------------------------------ */ -export default { - SIGNALS, - before, - after, - around, - error, - aspect, -}; +/* ------------------------------------------------------------------------- + * aspects.ts + * + * A robust “aspect” system supporting: + * - before: optionally modifies arguments (sync or async) + * - after: optionally modifies return value (sync or async) + * - around: complete control over function invocation + * - error: intercept errors (sync or async) + * + * Works as both: + * 1) Decorators for class methods (e.g. @before(...)) + * 2) Direct function wrappers (e.g. fn = before(fn, ...)). + * ------------------------------------------------------------------------ */ +/* ------------------------------------------------------------------------- + * 1) SIGNALS Enum (string-based to avoid symbol issues) + * ------------------------------------------------------------------------ */ +export var SIGNALS; +(function (SIGNALS) { + SIGNALS["BEFORE"] = "BEFORE"; + SIGNALS["AFTER"] = "AFTER"; + SIGNALS["AROUND"] = "AROUND"; + SIGNALS["ERROR"] = "ERROR"; +})(SIGNALS || (SIGNALS = {})); +/* ------------------------------------------------------------------------- + * 5) The SignalMap Implementation + * - This is where the actual "wrapping" logic lives. + * ------------------------------------------------------------------------ */ +const SignalMap = { + /** + * BEFORE: + * - Possibly modifies arguments + * - If returns a Promise, we await it before calling original + * - If returns an array, we use that as new arguments + */ + [SIGNALS.BEFORE](original, advice) { + return function (...args) { + const maybeNewArgs = advice(this, args); + if (maybeNewArgs instanceof Promise) { + return maybeNewArgs.then((resolvedArgs) => { + const finalArgs = resolvedArgs || args; + const result = original.apply(this, finalArgs); + return (result instanceof Promise) ? result : Promise.resolve(result); + }); + } + else { + const finalArgs = Array.isArray(maybeNewArgs) ? maybeNewArgs : args; + return original.apply(this, finalArgs); + } + }; + }, + /** + * AFTER: + * - Possibly modifies the return value + * - If original is async, we chain on its promise + * - Advice can be sync or async + */ + [SIGNALS.AFTER](original, advice) { + return function (...args) { + const result = original.apply(this, args); + if (result instanceof Promise) { + return result.then((unwrapped) => { + const maybeNewResult = advice(this, unwrapped, args); + return (maybeNewResult instanceof Promise) ? maybeNewResult : maybeNewResult; + }); + } + else { + const maybeNewResult = advice(this, result, args); + if (maybeNewResult instanceof Promise) { + return maybeNewResult.then(r => r); + } + return maybeNewResult; + } + }; + }, + /** + * AROUND: + * - Full control over invocation + * - Typically you do: proceed(...args) + * - If you want to skip or call multiple times, you can + */ + [SIGNALS.AROUND](original, advice) { + return function (...args) { + const proceed = (...innerArgs) => original.apply(this, innerArgs); + return advice(proceed, this, args); + }; + }, + /** + * ERROR: + * - Intercepts errors thrown by the original function or a rejected Promise + * - Optionally returns a fallback or rethrows + */ + [SIGNALS.ERROR](original, advice) { + return function (...args) { + try { + const result = original.apply(this, args); + if (result instanceof Promise) { + // Handle async rejections + return result.catch((err) => { + return advice(err, this, args); + }); + } + return result; + } + catch (err) { + // Synchronous error + return advice(err, this, args); + } + }; + }, +}; +/* ------------------------------------------------------------------------- + * 6) Decorator Helper + * ------------------------------------------------------------------------ */ +/** Checks if we’re decorating a class method. */ +function isMethod(_target, descriptor) { + return !!descriptor && typeof descriptor.value === 'function'; +} +/* ------------------------------------------------------------------------- + * 7) Wrapped Helpers (cutMethod, cut, aspect) + * ------------------------------------------------------------------------ */ +/** Strictly typed wrapping for class methods. */ +function cutMethod(descriptor, advice, type) { + const original = descriptor.value; + descriptor.value = SignalMap[type](original, advice); // Cast `any` or refine further + return descriptor; +} +/** Strictly typed wrapping for direct function usage. */ +function cut(target, advice, type) { + return SignalMap[type](target, advice); +} +/** + * The core aspect(...) function + * - Returns a decorator if used in that style + * - Otherwise, can wrap a function directly + */ +function aspect({ type, advice }) { + // If type is invalid, produce a no-op decorator + if (!(type in SignalMap)) { + return function crosscut(target, _name, descriptor) { + return descriptor || target; + }; + } + // Return a decorator function + return function crosscut(target, _name, descriptor) { + // If used on a method + if (isMethod(target, descriptor)) { + return cutMethod(descriptor, advice, type); + } + // If used directly on a function or something else + return cut(target, advice, type); + }; +} +export function before(arg1, arg2) { + if (typeof arg1 === 'function' && typeof arg2 === 'function') { + return SignalMap[SIGNALS.BEFORE](arg1, arg2); + } + return aspect({ type: SIGNALS.BEFORE, advice: arg1 }); +} +export function after(arg1, arg2) { + if (typeof arg1 === 'function' && typeof arg2 === 'function') { + return SignalMap[SIGNALS.AFTER](arg1, arg2); + } + return aspect({ type: SIGNALS.AFTER, advice: arg1 }); +} +export function around(arg1, arg2) { + if (typeof arg1 === 'function' && typeof arg2 === 'function') { + return SignalMap[SIGNALS.AROUND](arg1, arg2); + } + return aspect({ type: SIGNALS.AROUND, advice: arg1 }); +} +export function error(arg1, arg2) { + if (typeof arg1 === 'function' && typeof arg2 === 'function') { + return SignalMap[SIGNALS.ERROR](arg1, arg2); + } + return aspect({ type: SIGNALS.ERROR, advice: arg1 }); +} +/* ------------------------------------------------------------------------- + * 9) Default Export + * ------------------------------------------------------------------------ */ +export default { + SIGNALS, + before, + after, + around, + error, + aspect, +}; //# sourceMappingURL=aspects.js.map \ No newline at end of file diff --git a/packages/core/dist/aspects.js.map b/packages/core/dist/aspects.js.map index 887cadaf..c361caaa 100644 --- a/packages/core/dist/aspects.js.map +++ b/packages/core/dist/aspects.js.map @@ -1 +1 @@ -{"version":3,"file":"aspects.js","sourceRoot":"","sources":["../src/aspects.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"aspects.js","sourceRoot":"","sources":["../src/aspects.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/dist/aspects_simple.d.ts b/packages/core/dist/aspects_simple.d.ts index e024aef5..14802bc4 100644 --- a/packages/core/dist/aspects_simple.d.ts +++ b/packages/core/dist/aspects_simple.d.ts @@ -1,68 +1,68 @@ -export declare enum SIGNALS { - BEFORE = "BEFORE", - AFTER = "AFTER", - AROUND = "AROUND", - ERROR = "ERROR" -} -type AnyFunction = (...args: any[]) => any; -/** - * If a function returns a Promise, then its awaited type is T. - * Otherwise, it's just ReturnType. - */ -type AwaitedReturn = T extends (...args: any[]) => Promise ? U : ReturnType; -/** - * BEFORE advice: - * - Receives `context` (the `this` of the function) - * - Receives the original `args` - * - Can return either nothing (`void`) or new arguments (`Parameters`) - * - Can be async, returning a Promise that resolves to new args or `void` - */ -export type BeforeAdvice = (context: ThisParameterType, args: Parameters) => void | Parameters | Promise>; -/** - * AFTER advice: - * - Receives `context`, the original function’s final (awaited) result, - * and the original arguments - * - Can return a new result (sync or async) - */ -export type AfterAdvice = (context: ThisParameterType, result: AwaitedReturn, args: Parameters) => AwaitedReturn | Promise>; -/** - * AROUND advice: - * - Provides a `proceed(...args)` function that calls the original method - * - You can call `proceed` any number of times, or skip it - * - Supports both sync and async usage - */ -export type AroundAdvice = (proceed: (...args: Parameters) => ReturnType, context: ThisParameterType, args: Parameters) => ReturnType; -/** - * ERROR advice: - * - Intercepts errors thrown by the original function (sync or async) - * - Can return a fallback result or rethrow - */ -export type ErrorAdvice = (error: unknown, context: ThisParameterType, args: Parameters) => ReturnType | void; -/** - * `before`: - * Direct usage => myFn = before(myFn, (ctx, args) => ...) - */ -export declare function before(fn: T, advice: BeforeAdvice): T; -/** - * `after`: - * Direct usage => myFn = after(myFn, (ctx, result, args) => ...) - */ -export declare function after(fn: T, advice: AfterAdvice): T; -/** - * `around`: - * Direct usage => myFn = around(myFn, (proceed, ctx, args) => ...) - */ -export declare function around(fn: T, advice: AroundAdvice): T; -/** - * `error`: - * Direct usage => myFn = error(myFn, (err, ctx, args) => ...) - */ -export declare function error(fn: T, advice: ErrorAdvice): T; -declare const _default: { - SIGNALS: typeof SIGNALS; - before: typeof before; - after: typeof after; - around: typeof around; - error: typeof error; -}; -export default _default; +export declare enum SIGNALS { + BEFORE = "BEFORE", + AFTER = "AFTER", + AROUND = "AROUND", + ERROR = "ERROR" +} +type AnyFunction = (...args: any[]) => any; +/** + * If a function returns a Promise, then its awaited type is T. + * Otherwise, it's just ReturnType. + */ +type AwaitedReturn = T extends (...args: any[]) => Promise ? U : ReturnType; +/** + * BEFORE advice: + * - Receives `context` (the `this` of the function) + * - Receives the original `args` + * - Can return either nothing (`void`) or new arguments (`Parameters`) + * - Can be async, returning a Promise that resolves to new args or `void` + */ +export type BeforeAdvice = (context: ThisParameterType, args: Parameters) => void | Parameters | Promise>; +/** + * AFTER advice: + * - Receives `context`, the original function’s final (awaited) result, + * and the original arguments + * - Can return a new result (sync or async) + */ +export type AfterAdvice = (context: ThisParameterType, result: AwaitedReturn, args: Parameters) => AwaitedReturn | Promise>; +/** + * AROUND advice: + * - Provides a `proceed(...args)` function that calls the original method + * - You can call `proceed` any number of times, or skip it + * - Supports both sync and async usage + */ +export type AroundAdvice = (proceed: (...args: Parameters) => ReturnType, context: ThisParameterType, args: Parameters) => ReturnType; +/** + * ERROR advice: + * - Intercepts errors thrown by the original function (sync or async) + * - Can return a fallback result or rethrow + */ +export type ErrorAdvice = (error: unknown, context: ThisParameterType, args: Parameters) => ReturnType | void; +/** + * `before`: + * Direct usage => myFn = before(myFn, (ctx, args) => ...) + */ +export declare function before(fn: T, advice: BeforeAdvice): T; +/** + * `after`: + * Direct usage => myFn = after(myFn, (ctx, result, args) => ...) + */ +export declare function after(fn: T, advice: AfterAdvice): T; +/** + * `around`: + * Direct usage => myFn = around(myFn, (proceed, ctx, args) => ...) + */ +export declare function around(fn: T, advice: AroundAdvice): T; +/** + * `error`: + * Direct usage => myFn = error(myFn, (err, ctx, args) => ...) + */ +export declare function error(fn: T, advice: ErrorAdvice): T; +declare const _default: { + SIGNALS: typeof SIGNALS; + before: typeof before; + after: typeof after; + around: typeof around; + error: typeof error; +}; +export default _default; diff --git a/packages/core/dist/aspects_simple.js b/packages/core/dist/aspects_simple.js index 4e08be50..84ca2009 100644 --- a/packages/core/dist/aspects_simple.js +++ b/packages/core/dist/aspects_simple.js @@ -1,150 +1,150 @@ -/* ------------------------------------------------------------------------- - * aspects.ts - * - * A robust “aspect” system supporting: - * - before: optionally modifies arguments (sync or async) - * - after: optionally modifies return value (sync or async) - * - around: complete control over function invocation - * - error: intercept errors (sync or async) - * - * Only supports direct function wrappers (e.g. fn = before(fn, ...)). - * ------------------------------------------------------------------------ */ -/* ------------------------------------------------------------------------- - * 1) SIGNALS Enum (string-based to avoid symbol issues) - * ------------------------------------------------------------------------ */ -export var SIGNALS; -(function (SIGNALS) { - SIGNALS["BEFORE"] = "BEFORE"; - SIGNALS["AFTER"] = "AFTER"; - SIGNALS["AROUND"] = "AROUND"; - SIGNALS["ERROR"] = "ERROR"; -})(SIGNALS = SIGNALS || (SIGNALS = {})); -/* ------------------------------------------------------------------------- - * 5) The SignalMap Implementation - * - This is where the actual "wrapping" logic lives. - * ------------------------------------------------------------------------ */ -const SignalMap = { - /** - * BEFORE: - * - Possibly modifies arguments - * - If returns a Promise, we await it before calling original - * - If returns an array, we use that as new arguments - */ - [SIGNALS.BEFORE](original, advice) { - return function (...args) { - const maybeNewArgs = advice(this, args); - if (maybeNewArgs instanceof Promise) { - return maybeNewArgs.then((resolvedArgs) => { - const finalArgs = resolvedArgs || args; - const result = original.apply(this, finalArgs); - return (result instanceof Promise) ? result : Promise.resolve(result); - }); - } - else { - const finalArgs = Array.isArray(maybeNewArgs) ? maybeNewArgs : args; - return original.apply(this, finalArgs); - } - }; - }, - /** - * AFTER: - * - Possibly modifies the return value - * - If original is async, we chain on its promise - * - Advice can be sync or async - */ - [SIGNALS.AFTER](original, advice) { - return function (...args) { - const result = original.apply(this, args); - if (result instanceof Promise) { - return result.then((unwrapped) => { - const maybeNewResult = advice(this, unwrapped, args); - return (maybeNewResult instanceof Promise) ? maybeNewResult : maybeNewResult; - }); - } - else { - const maybeNewResult = advice(this, result, args); - if (maybeNewResult instanceof Promise) { - return maybeNewResult.then(r => r); - } - return maybeNewResult; - } - }; - }, - /** - * AROUND: - * - Full control over invocation - * - Typically you do: proceed(...args) - * - If you want to skip or call multiple times, you can - */ - [SIGNALS.AROUND](original, advice) { - return function (...args) { - const proceed = (...innerArgs) => original.apply(this, innerArgs); - return advice(proceed, this, args); - }; - }, - /** - * ERROR: - * - Intercepts errors thrown by the original function or a rejected Promise - * - Optionally returns a fallback or rethrows - */ - [SIGNALS.ERROR](original, advice) { - return function (...args) { - try { - const result = original.apply(this, args); - if (result instanceof Promise) { - // Handle async rejections - return result.catch((err) => { - return advice(err, this, args); - }); - } - return result; - } - catch (err) { - // Synchronous error - return advice(err, this, args); - } - }; - }, -}; -/* ------------------------------------------------------------------------- - * 6) Direct Usage Functions (no decorator support) - * ------------------------------------------------------------------------ */ -/** - * `before`: - * Direct usage => myFn = before(myFn, (ctx, args) => ...) - */ -export function before(fn, advice) { - return SignalMap[SIGNALS.BEFORE](fn, advice); -} -/** - * `after`: - * Direct usage => myFn = after(myFn, (ctx, result, args) => ...) - */ -export function after(fn, advice) { - return SignalMap[SIGNALS.AFTER](fn, advice); -} -/** - * `around`: - * Direct usage => myFn = around(myFn, (proceed, ctx, args) => ...) - */ -export function around(fn, advice) { - return SignalMap[SIGNALS.AROUND](fn, advice); -} -/** - * `error`: - * Direct usage => myFn = error(myFn, (err, ctx, args) => ...) - */ -export function error(fn, advice) { - return SignalMap[SIGNALS.ERROR](fn, advice); -} -/* ------------------------------------------------------------------------- - * 7) Default Export - * ------------------------------------------------------------------------ */ -export default { - SIGNALS, - before, - after, - around, - error, -}; +/* ------------------------------------------------------------------------- + * aspects.ts + * + * A robust “aspect” system supporting: + * - before: optionally modifies arguments (sync or async) + * - after: optionally modifies return value (sync or async) + * - around: complete control over function invocation + * - error: intercept errors (sync or async) + * + * Only supports direct function wrappers (e.g. fn = before(fn, ...)). + * ------------------------------------------------------------------------ */ +/* ------------------------------------------------------------------------- + * 1) SIGNALS Enum (string-based to avoid symbol issues) + * ------------------------------------------------------------------------ */ +export var SIGNALS; +(function (SIGNALS) { + SIGNALS["BEFORE"] = "BEFORE"; + SIGNALS["AFTER"] = "AFTER"; + SIGNALS["AROUND"] = "AROUND"; + SIGNALS["ERROR"] = "ERROR"; +})(SIGNALS || (SIGNALS = {})); +/* ------------------------------------------------------------------------- + * 5) The SignalMap Implementation + * - This is where the actual "wrapping" logic lives. + * ------------------------------------------------------------------------ */ +const SignalMap = { + /** + * BEFORE: + * - Possibly modifies arguments + * - If returns a Promise, we await it before calling original + * - If returns an array, we use that as new arguments + */ + [SIGNALS.BEFORE](original, advice) { + return function (...args) { + const maybeNewArgs = advice(this, args); + if (maybeNewArgs instanceof Promise) { + return maybeNewArgs.then((resolvedArgs) => { + const finalArgs = resolvedArgs || args; + const result = original.apply(this, finalArgs); + return (result instanceof Promise) ? result : Promise.resolve(result); + }); + } + else { + const finalArgs = Array.isArray(maybeNewArgs) ? maybeNewArgs : args; + return original.apply(this, finalArgs); + } + }; + }, + /** + * AFTER: + * - Possibly modifies the return value + * - If original is async, we chain on its promise + * - Advice can be sync or async + */ + [SIGNALS.AFTER](original, advice) { + return function (...args) { + const result = original.apply(this, args); + if (result instanceof Promise) { + return result.then((unwrapped) => { + const maybeNewResult = advice(this, unwrapped, args); + return (maybeNewResult instanceof Promise) ? maybeNewResult : maybeNewResult; + }); + } + else { + const maybeNewResult = advice(this, result, args); + if (maybeNewResult instanceof Promise) { + return maybeNewResult.then(r => r); + } + return maybeNewResult; + } + }; + }, + /** + * AROUND: + * - Full control over invocation + * - Typically you do: proceed(...args) + * - If you want to skip or call multiple times, you can + */ + [SIGNALS.AROUND](original, advice) { + return function (...args) { + const proceed = (...innerArgs) => original.apply(this, innerArgs); + return advice(proceed, this, args); + }; + }, + /** + * ERROR: + * - Intercepts errors thrown by the original function or a rejected Promise + * - Optionally returns a fallback or rethrows + */ + [SIGNALS.ERROR](original, advice) { + return function (...args) { + try { + const result = original.apply(this, args); + if (result instanceof Promise) { + // Handle async rejections + return result.catch((err) => { + return advice(err, this, args); + }); + } + return result; + } + catch (err) { + // Synchronous error + return advice(err, this, args); + } + }; + }, +}; +/* ------------------------------------------------------------------------- + * 6) Direct Usage Functions (no decorator support) + * ------------------------------------------------------------------------ */ +/** + * `before`: + * Direct usage => myFn = before(myFn, (ctx, args) => ...) + */ +export function before(fn, advice) { + return SignalMap[SIGNALS.BEFORE](fn, advice); +} +/** + * `after`: + * Direct usage => myFn = after(myFn, (ctx, result, args) => ...) + */ +export function after(fn, advice) { + return SignalMap[SIGNALS.AFTER](fn, advice); +} +/** + * `around`: + * Direct usage => myFn = around(myFn, (proceed, ctx, args) => ...) + */ +export function around(fn, advice) { + return SignalMap[SIGNALS.AROUND](fn, advice); +} +/** + * `error`: + * Direct usage => myFn = error(myFn, (err, ctx, args) => ...) + */ +export function error(fn, advice) { + return SignalMap[SIGNALS.ERROR](fn, advice); +} +/* ------------------------------------------------------------------------- + * 7) Default Export + * ------------------------------------------------------------------------ */ +export default { + SIGNALS, + before, + after, + around, + error, +}; //# sourceMappingURL=aspects_simple.js.map \ No newline at end of file diff --git a/packages/core/dist/aspects_simple.js.map b/packages/core/dist/aspects_simple.js.map index 6fd79010..06c6a6fb 100644 --- a/packages/core/dist/aspects_simple.js.map +++ b/packages/core/dist/aspects_simple.js.map @@ -1 +1 @@ -{"version":3,"file":"aspects_simple.js","sourceRoot":"","sources":["../src/aspects_simple.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"aspects_simple.js","sourceRoot":"","sources":["../src/aspects_simple.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/dist/assert.d.ts b/packages/core/dist/assert.d.ts index aaa52c13..ca68433c 100644 --- a/packages/core/dist/assert.d.ts +++ b/packages/core/dist/assert.d.ts @@ -1,26 +1,26 @@ -/** - * Throws an error with the provided message if the provided value does not evaluate to a true Javascript value. - * - * @deprecated Use `assert(...)` instead. - * This method is usually used like this: - * ```ts - * import * as assert from 'vs/base/common/assert'; - * assert.ok(...); - * ``` - * - * However, `assert` in that example is a user chosen name. - * There is no tooling for generating such an import statement. - * Thus, the `assert(...)` function should be used instead. - */ -export declare function ok(value?: unknown, message?: string): void; -export declare function assertNever(value: never, message?: string): never; -export declare function assert(condition: boolean, message?: string): asserts condition; -/** - * Like assert, but doesn't throw. - */ -export declare function softAssert(condition: boolean): void; -/** - * condition must be side-effect free! - */ -export declare function assertFn(condition: () => boolean): void; -export declare function checkAdjacentItems(items: readonly T[], predicate: (item1: T, item2: T) => boolean): boolean; +/** + * Throws an error with the provided message if the provided value does not evaluate to a true Javascript value. + * + * @deprecated Use `assert(...)` instead. + * This method is usually used like this: + * ```ts + * import * as assert from 'vs/base/common/assert'; + * assert.ok(...); + * ``` + * + * However, `assert` in that example is a user chosen name. + * There is no tooling for generating such an import statement. + * Thus, the `assert(...)` function should be used instead. + */ +export declare function ok(value?: unknown, message?: string): void; +export declare function assertNever(value: never, message?: string): never; +export declare function assert(condition: boolean, message?: string): asserts condition; +/** + * Like assert, but doesn't throw. + */ +export declare function softAssert(condition: boolean): void; +/** + * condition must be side-effect free! + */ +export declare function assertFn(condition: () => boolean): void; +export declare function checkAdjacentItems(items: readonly T[], predicate: (item1: T, item2: T) => boolean): boolean; diff --git a/packages/core/dist/assert.js b/packages/core/dist/assert.js index a6b3b329..8f800b84 100644 --- a/packages/core/dist/assert.js +++ b/packages/core/dist/assert.js @@ -1,65 +1,65 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ -import { BugIndicatingError, onUnexpectedError } from './errors.js'; -/** - * Throws an error with the provided message if the provided value does not evaluate to a true Javascript value. - * - * @deprecated Use `assert(...)` instead. - * This method is usually used like this: - * ```ts - * import * as assert from 'vs/base/common/assert'; - * assert.ok(...); - * ``` - * - * However, `assert` in that example is a user chosen name. - * There is no tooling for generating such an import statement. - * Thus, the `assert(...)` function should be used instead. - */ -export function ok(value, message) { - if (!value) { - throw new Error(message ? `Assertion failed (${message})` : 'Assertion Failed'); - } -} -export function assertNever(value, message = 'Unreachable') { - throw new Error(message); -} -export function assert(condition, message = 'unexpected state') { - if (!condition) { - throw new BugIndicatingError(`Assertion Failed: ${message}`); - } -} -/** - * Like assert, but doesn't throw. - */ -export function softAssert(condition) { - if (!condition) { - onUnexpectedError(new BugIndicatingError('Soft Assertion Failed')); - } -} -/** - * condition must be side-effect free! - */ -export function assertFn(condition) { - if (!condition()) { - // eslint-disable-next-line no-debugger - debugger; - // Reevaluate `condition` again to make debugging easier - condition(); - onUnexpectedError(new BugIndicatingError('Assertion Failed')); - } -} -export function checkAdjacentItems(items, predicate) { - let i = 0; - while (i < items.length - 1) { - const a = items[i]; - const b = items[i + 1]; - if (!predicate(a, b)) { - return false; - } - i++; - } - return true; -} +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +import { BugIndicatingError, onUnexpectedError } from './errors.js'; +/** + * Throws an error with the provided message if the provided value does not evaluate to a true Javascript value. + * + * @deprecated Use `assert(...)` instead. + * This method is usually used like this: + * ```ts + * import * as assert from 'vs/base/common/assert'; + * assert.ok(...); + * ``` + * + * However, `assert` in that example is a user chosen name. + * There is no tooling for generating such an import statement. + * Thus, the `assert(...)` function should be used instead. + */ +export function ok(value, message) { + if (!value) { + throw new Error(message ? `Assertion failed (${message})` : 'Assertion Failed'); + } +} +export function assertNever(value, message = 'Unreachable') { + throw new Error(message); +} +export function assert(condition, message = 'unexpected state') { + if (!condition) { + throw new BugIndicatingError(`Assertion Failed: ${message}`); + } +} +/** + * Like assert, but doesn't throw. + */ +export function softAssert(condition) { + if (!condition) { + onUnexpectedError(new BugIndicatingError('Soft Assertion Failed')); + } +} +/** + * condition must be side-effect free! + */ +export function assertFn(condition) { + if (!condition()) { + // eslint-disable-next-line no-debugger + debugger; + // Reevaluate `condition` again to make debugging easier + condition(); + onUnexpectedError(new BugIndicatingError('Assertion Failed')); + } +} +export function checkAdjacentItems(items, predicate) { + let i = 0; + while (i < items.length - 1) { + const a = items[i]; + const b = items[i + 1]; + if (!predicate(a, b)) { + return false; + } + i++; + } + return true; +} //# sourceMappingURL=assert.js.map \ No newline at end of file diff --git a/packages/core/dist/assert.js.map b/packages/core/dist/assert.js.map index 621de2a7..bc0770b0 100644 --- a/packages/core/dist/assert.js.map +++ b/packages/core/dist/assert.js.map @@ -1 +1 @@ -{"version":3,"file":"assert.js","sourceRoot":"","sources":["../src/assert.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEpE;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,EAAE,CAAC,KAAe,EAAE,OAAgB;IACnD,IAAI,CAAC,KAAK,EAAE;QACX,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,qBAAqB,OAAO,GAAG,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC;KAChF;AACF,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAY,EAAE,OAAO,GAAG,aAAa;IAChE,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,SAAkB,EAAE,OAAO,GAAG,kBAAkB;IACtE,IAAI,CAAC,SAAS,EAAE;QACf,MAAM,IAAI,kBAAkB,CAAC,qBAAqB,OAAO,EAAE,CAAC,CAAC;KAC7D;AACF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,SAAkB;IAC5C,IAAI,CAAC,SAAS,EAAE;QACf,iBAAiB,CAAC,IAAI,kBAAkB,CAAC,uBAAuB,CAAC,CAAC,CAAC;KACnE;AACF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAC,SAAwB;IAChD,IAAI,CAAC,SAAS,EAAE,EAAE;QACjB,uCAAuC;QACvC,QAAQ,CAAC;QACT,wDAAwD;QACxD,SAAS,EAAE,CAAC;QACZ,iBAAiB,CAAC,IAAI,kBAAkB,CAAC,kBAAkB,CAAC,CAAC,CAAC;KAC9D;AACF,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAI,KAAmB,EAAE,SAA0C;IACpG,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;QAC5B,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACnB,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACvB,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;YACrB,OAAO,KAAK,CAAC;SACb;QACD,CAAC,EAAE,CAAC;KACJ;IACD,OAAO,IAAI,CAAC;AACb,CAAC"} \ No newline at end of file +{"version":3,"file":"assert.js","sourceRoot":"","sources":["../src/assert.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEpE;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,EAAE,CAAC,KAAe,EAAE,OAAgB;IACnD,IAAI,CAAC,KAAK,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,qBAAqB,OAAO,GAAG,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC;IACjF,CAAC;AACF,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAY,EAAE,OAAO,GAAG,aAAa;IAChE,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,SAAkB,EAAE,OAAO,GAAG,kBAAkB;IACtE,IAAI,CAAC,SAAS,EAAE,CAAC;QAChB,MAAM,IAAI,kBAAkB,CAAC,qBAAqB,OAAO,EAAE,CAAC,CAAC;IAC9D,CAAC;AACF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,SAAkB;IAC5C,IAAI,CAAC,SAAS,EAAE,CAAC;QAChB,iBAAiB,CAAC,IAAI,kBAAkB,CAAC,uBAAuB,CAAC,CAAC,CAAC;IACpE,CAAC;AACF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAC,SAAwB;IAChD,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC;QAClB,uCAAuC;QACvC,QAAQ,CAAC;QACT,wDAAwD;QACxD,SAAS,EAAE,CAAC;QACZ,iBAAiB,CAAC,IAAI,kBAAkB,CAAC,kBAAkB,CAAC,CAAC,CAAC;IAC/D,CAAC;AACF,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAI,KAAmB,EAAE,SAA0C;IACpG,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACnB,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACvB,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;YACtB,OAAO,KAAK,CAAC;QACd,CAAC;QACD,CAAC,EAAE,CAAC;IACL,CAAC;IACD,OAAO,IAAI,CAAC;AACb,CAAC"} \ No newline at end of file diff --git a/packages/core/dist/cache.d.ts b/packages/core/dist/cache.d.ts index eb82d846..e68ca69a 100644 --- a/packages/core/dist/cache.d.ts +++ b/packages/core/dist/cache.d.ts @@ -1,46 +1,46 @@ -import { CancellationToken } from './cancellation.js'; -import { IDisposable } from './lifecycle.js'; -export interface CacheResult extends IDisposable { - promise: Promise; -} -export declare class Cache { - private task; - private result; - constructor(task: (ct: CancellationToken) => Promise); - get(): CacheResult; -} -export declare function identity(t: T): T; -interface ICacheOptions { - /** - * The cache key is used to identify the cache entry. - * Strict equality is used to compare cache keys. - */ - getCacheKey: (arg: TArg) => unknown; -} -/** - * Uses a LRU cache to make a given parametrized function cached. - * Caches just the last key/value. -*/ -export declare class LRUCachedFunction { - private lastCache; - private lastArgKey; - private readonly _fn; - private readonly _computeKey; - constructor(fn: (arg: TArg) => TComputed); - constructor(options: ICacheOptions, fn: (arg: TArg) => TComputed); - get(arg: TArg): TComputed; -} -/** - * Uses an unbounded cache to memoize the results of the given function. -*/ -export declare class CachedFunction { - private readonly _map; - private readonly _map2; - get cachedValues(): ReadonlyMap; - private readonly _fn; - private readonly _computeKey; - constructor(fn: (arg: TArg) => TComputed); - constructor(options: ICacheOptions, fn: (arg: TArg) => TComputed); - get(arg: TArg): TComputed; -} -export {}; +import { CancellationToken } from './cancellation.js'; +import { IDisposable } from './lifecycle.js'; +export interface CacheResult extends IDisposable { + promise: Promise; +} +export declare class Cache { + private task; + private result; + constructor(task: (ct: CancellationToken) => Promise); + get(): CacheResult; +} +export declare function identity(t: T): T; +interface ICacheOptions { + /** + * The cache key is used to identify the cache entry. + * Strict equality is used to compare cache keys. + */ + getCacheKey: (arg: TArg) => unknown; +} +/** + * Uses a LRU cache to make a given parametrized function cached. + * Caches just the last key/value. +*/ +export declare class LRUCachedFunction { + private lastCache; + private lastArgKey; + private readonly _fn; + private readonly _computeKey; + constructor(fn: (arg: TArg) => TComputed); + constructor(options: ICacheOptions, fn: (arg: TArg) => TComputed); + get(arg: TArg): TComputed; +} +/** + * Uses an unbounded cache to memoize the results of the given function. +*/ +export declare class CachedFunction { + private readonly _map; + private readonly _map2; + get cachedValues(): ReadonlyMap; + private readonly _fn; + private readonly _computeKey; + constructor(fn: (arg: TArg) => TComputed); + constructor(options: ICacheOptions, fn: (arg: TArg) => TComputed); + get(arg: TArg): TComputed; +} +export {}; diff --git a/packages/core/dist/cache.js b/packages/core/dist/cache.js index 9ad9a7d6..2f786622 100644 --- a/packages/core/dist/cache.js +++ b/packages/core/dist/cache.js @@ -1,92 +1,92 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ -import { CancellationTokenSource } from './cancellation.js'; -export class Cache { - task; - result = null; - constructor(task) { - this.task = task; - } - get() { - if (this.result) { - return this.result; - } - const cts = new CancellationTokenSource(); - const promise = this.task(cts.token); - this.result = { - promise, - dispose: () => { - this.result = null; - cts.cancel(); - cts.dispose(); - } - }; - return this.result; - } -} -export function identity(t) { - return t; -} -/** - * Uses a LRU cache to make a given parametrized function cached. - * Caches just the last key/value. -*/ -export class LRUCachedFunction { - lastCache = undefined; - lastArgKey = undefined; - _fn; - _computeKey; - constructor(arg1, arg2) { - if (typeof arg1 === 'function') { - this._fn = arg1; - this._computeKey = identity; - } - else { - this._fn = arg2; - this._computeKey = arg1.getCacheKey; - } - } - get(arg) { - const key = this._computeKey(arg); - if (this.lastArgKey !== key) { - this.lastArgKey = key; - this.lastCache = this._fn(arg); - } - return this.lastCache; - } -} -/** - * Uses an unbounded cache to memoize the results of the given function. -*/ -export class CachedFunction { - _map = new Map(); - _map2 = new Map(); - get cachedValues() { - return this._map; - } - _fn; - _computeKey; - constructor(arg1, arg2) { - if (typeof arg1 === 'function') { - this._fn = arg1; - this._computeKey = identity; - } - else { - this._fn = arg2; - this._computeKey = arg1.getCacheKey; - } - } - get(arg) { - const key = this._computeKey(arg); - if (this._map2.has(key)) { - return this._map2.get(key); - } - const value = this._fn(arg); - this._map.set(arg, value); - this._map2.set(key, value); - return value; - } -} +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +import { CancellationTokenSource } from './cancellation.js'; +export class Cache { + task; + result = null; + constructor(task) { + this.task = task; + } + get() { + if (this.result) { + return this.result; + } + const cts = new CancellationTokenSource(); + const promise = this.task(cts.token); + this.result = { + promise, + dispose: () => { + this.result = null; + cts.cancel(); + cts.dispose(); + } + }; + return this.result; + } +} +export function identity(t) { + return t; +} +/** + * Uses a LRU cache to make a given parametrized function cached. + * Caches just the last key/value. +*/ +export class LRUCachedFunction { + lastCache = undefined; + lastArgKey = undefined; + _fn; + _computeKey; + constructor(arg1, arg2) { + if (typeof arg1 === 'function') { + this._fn = arg1; + this._computeKey = identity; + } + else { + this._fn = arg2; + this._computeKey = arg1.getCacheKey; + } + } + get(arg) { + const key = this._computeKey(arg); + if (this.lastArgKey !== key) { + this.lastArgKey = key; + this.lastCache = this._fn(arg); + } + return this.lastCache; + } +} +/** + * Uses an unbounded cache to memoize the results of the given function. +*/ +export class CachedFunction { + _map = new Map(); + _map2 = new Map(); + get cachedValues() { + return this._map; + } + _fn; + _computeKey; + constructor(arg1, arg2) { + if (typeof arg1 === 'function') { + this._fn = arg1; + this._computeKey = identity; + } + else { + this._fn = arg2; + this._computeKey = arg1.getCacheKey; + } + } + get(arg) { + const key = this._computeKey(arg); + if (this._map2.has(key)) { + return this._map2.get(key); + } + const value = this._fn(arg); + this._map.set(arg, value); + this._map2.set(key, value); + return value; + } +} //# sourceMappingURL=cache.js.map \ No newline at end of file diff --git a/packages/core/dist/cache.js.map b/packages/core/dist/cache.js.map index 60baebce..c67eddd8 100644 --- a/packages/core/dist/cache.js.map +++ b/packages/core/dist/cache.js.map @@ -1 +1 @@ -{"version":3,"file":"cache.js","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"cache.js","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/dist/cancellation.d.ts b/packages/core/dist/cancellation.d.ts index f19d787e..1cbc242c 100644 --- a/packages/core/dist/cancellation.d.ts +++ b/packages/core/dist/cancellation.d.ts @@ -1,30 +1,30 @@ -import { DisposableStore, IDisposable } from './lifecycle.js'; -export interface CancellationToken { - /** - * A flag signalling is cancellation has been requested. - */ - readonly isCancellationRequested: boolean; - /** - * An event which fires when cancellation is requested. This event - * only ever fires `once` as cancellation can only happen once. Listeners - * that are registered after cancellation will be called (next event loop run), - * but also only once. - * - * @event - */ - readonly onCancellationRequested: (listener: (e: any) => any, thisArgs?: any, disposables?: IDisposable[]) => IDisposable; -} -export declare namespace CancellationToken { - function isCancellationToken(thing: unknown): thing is CancellationToken; - const None: Readonly; - const Cancelled: Readonly; -} -export declare class CancellationTokenSource { - private _token?; - private _parentListener?; - constructor(parent?: CancellationToken); - get token(): CancellationToken; - cancel(): void; - dispose(cancel?: boolean): void; -} -export declare function cancelOnDispose(store: DisposableStore): CancellationToken; +import { DisposableStore, IDisposable } from './lifecycle.js'; +export interface CancellationToken { + /** + * A flag signalling is cancellation has been requested. + */ + readonly isCancellationRequested: boolean; + /** + * An event which fires when cancellation is requested. This event + * only ever fires `once` as cancellation can only happen once. Listeners + * that are registered after cancellation will be called (next event loop run), + * but also only once. + * + * @event + */ + readonly onCancellationRequested: (listener: (e: any) => any, thisArgs?: any, disposables?: IDisposable[]) => IDisposable; +} +export declare namespace CancellationToken { + function isCancellationToken(thing: unknown): thing is CancellationToken; + const None: Readonly; + const Cancelled: Readonly; +} +export declare class CancellationTokenSource { + private _token?; + private _parentListener?; + constructor(parent?: CancellationToken); + get token(): CancellationToken; + cancel(): void; + dispose(cancel?: boolean): void; +} +export declare function cancelOnDispose(store: DisposableStore): CancellationToken; diff --git a/packages/core/dist/cancellation.js b/packages/core/dist/cancellation.js index ed40cdb5..837f808d 100644 --- a/packages/core/dist/cancellation.js +++ b/packages/core/dist/cancellation.js @@ -1,112 +1,112 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ -import { Emitter, Event } from './event.js'; -const shortcutEvent = Object.freeze(function (callback, context) { - const handle = setTimeout(callback.bind(context), 0); - return { dispose() { clearTimeout(handle); } }; -}); -export var CancellationToken; -(function (CancellationToken) { - function isCancellationToken(thing) { - if (thing === CancellationToken.None || thing === CancellationToken.Cancelled) { - return true; - } - if (thing instanceof MutableToken) { - return true; - } - if (!thing || typeof thing !== 'object') { - return false; - } - return typeof thing.isCancellationRequested === 'boolean' - && typeof thing.onCancellationRequested === 'function'; - } - CancellationToken.isCancellationToken = isCancellationToken; - CancellationToken.None = Object.freeze({ - isCancellationRequested: false, - onCancellationRequested: Event.None - }); - CancellationToken.Cancelled = Object.freeze({ - isCancellationRequested: true, - onCancellationRequested: shortcutEvent - }); -})(CancellationToken = CancellationToken || (CancellationToken = {})); -class MutableToken { - _isCancelled = false; - _emitter = null; - cancel() { - if (!this._isCancelled) { - this._isCancelled = true; - if (this._emitter) { - this._emitter.fire(undefined); - this.dispose(); - } - } - } - get isCancellationRequested() { - return this._isCancelled; - } - get onCancellationRequested() { - if (this._isCancelled) { - return shortcutEvent; - } - if (!this._emitter) { - this._emitter = new Emitter(); - } - return this._emitter.event; - } - dispose() { - if (this._emitter) { - this._emitter.dispose(); - this._emitter = null; - } - } -} -export class CancellationTokenSource { - _token = undefined; - _parentListener = undefined; - constructor(parent) { - this._parentListener = parent && parent.onCancellationRequested(this.cancel, this); - } - get token() { - if (!this._token) { - // be lazy and create the token only when - // actually needed - this._token = new MutableToken(); - } - return this._token; - } - cancel() { - if (!this._token) { - // save an object by returning the default - // cancelled token when cancellation happens - // before someone asks for the token - this._token = CancellationToken.Cancelled; - } - else if (this._token instanceof MutableToken) { - // actually cancel - this._token.cancel(); - } - } - dispose(cancel = false) { - if (cancel) { - this.cancel(); - } - this._parentListener?.dispose(); - if (!this._token) { - // ensure to initialize with an empty token if we had none - this._token = CancellationToken.None; - } - else if (this._token instanceof MutableToken) { - // actually dispose - this._token.dispose(); - } - } -} -export function cancelOnDispose(store) { - const source = new CancellationTokenSource(); - store.add({ dispose() { source.cancel(); } }); - return source.token; -} +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +import { Emitter, Event } from './event.js'; +const shortcutEvent = Object.freeze(function (callback, context) { + const handle = setTimeout(callback.bind(context), 0); + return { dispose() { clearTimeout(handle); } }; +}); +export var CancellationToken; +(function (CancellationToken) { + function isCancellationToken(thing) { + if (thing === CancellationToken.None || thing === CancellationToken.Cancelled) { + return true; + } + if (thing instanceof MutableToken) { + return true; + } + if (!thing || typeof thing !== 'object') { + return false; + } + return typeof thing.isCancellationRequested === 'boolean' + && typeof thing.onCancellationRequested === 'function'; + } + CancellationToken.isCancellationToken = isCancellationToken; + CancellationToken.None = Object.freeze({ + isCancellationRequested: false, + onCancellationRequested: Event.None + }); + CancellationToken.Cancelled = Object.freeze({ + isCancellationRequested: true, + onCancellationRequested: shortcutEvent + }); +})(CancellationToken || (CancellationToken = {})); +class MutableToken { + _isCancelled = false; + _emitter = null; + cancel() { + if (!this._isCancelled) { + this._isCancelled = true; + if (this._emitter) { + this._emitter.fire(undefined); + this.dispose(); + } + } + } + get isCancellationRequested() { + return this._isCancelled; + } + get onCancellationRequested() { + if (this._isCancelled) { + return shortcutEvent; + } + if (!this._emitter) { + this._emitter = new Emitter(); + } + return this._emitter.event; + } + dispose() { + if (this._emitter) { + this._emitter.dispose(); + this._emitter = null; + } + } +} +export class CancellationTokenSource { + _token = undefined; + _parentListener = undefined; + constructor(parent) { + this._parentListener = parent && parent.onCancellationRequested(this.cancel, this); + } + get token() { + if (!this._token) { + // be lazy and create the token only when + // actually needed + this._token = new MutableToken(); + } + return this._token; + } + cancel() { + if (!this._token) { + // save an object by returning the default + // cancelled token when cancellation happens + // before someone asks for the token + this._token = CancellationToken.Cancelled; + } + else if (this._token instanceof MutableToken) { + // actually cancel + this._token.cancel(); + } + } + dispose(cancel = false) { + if (cancel) { + this.cancel(); + } + this._parentListener?.dispose(); + if (!this._token) { + // ensure to initialize with an empty token if we had none + this._token = CancellationToken.None; + } + else if (this._token instanceof MutableToken) { + // actually dispose + this._token.dispose(); + } + } +} +export function cancelOnDispose(store) { + const source = new CancellationTokenSource(); + store.add({ dispose() { source.cancel(); } }); + return source.token; +} //# sourceMappingURL=cancellation.js.map \ No newline at end of file diff --git a/packages/core/dist/cancellation.js.map b/packages/core/dist/cancellation.js.map index fd598f78..592a269e 100644 --- a/packages/core/dist/cancellation.js.map +++ b/packages/core/dist/cancellation.js.map @@ -1 +1 @@ -{"version":3,"file":"cancellation.js","sourceRoot":"","sources":["../src/cancellation.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"cancellation.js","sourceRoot":"","sources":["../src/cancellation.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAqB5C,MAAM,aAAa,GAAe,MAAM,CAAC,MAAM,CAAC,UAAU,QAAQ,EAAE,OAAQ;IAC3E,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;IACrD,OAAO,EAAE,OAAO,KAAK,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAChD,CAAC,CAAC,CAAC;AAEH,MAAM,KAAW,iBAAiB,CA0BjC;AA1BD,WAAiB,iBAAiB;IAEjC,SAAgB,mBAAmB,CAAC,KAAc;QACjD,IAAI,KAAK,KAAK,iBAAiB,CAAC,IAAI,IAAI,KAAK,KAAK,iBAAiB,CAAC,SAAS,EAAE,CAAC;YAC/E,OAAO,IAAI,CAAC;QACb,CAAC;QACD,IAAI,KAAK,YAAY,YAAY,EAAE,CAAC;YACnC,OAAO,IAAI,CAAC;QACb,CAAC;QACD,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YACzC,OAAO,KAAK,CAAC;QACd,CAAC;QACD,OAAO,OAAQ,KAA2B,CAAC,uBAAuB,KAAK,SAAS;eAC5E,OAAQ,KAA2B,CAAC,uBAAuB,KAAK,UAAU,CAAC;IAChF,CAAC;IAZe,qCAAmB,sBAYlC,CAAA;IAGY,sBAAI,GAAG,MAAM,CAAC,MAAM,CAAoB;QACpD,uBAAuB,EAAE,KAAK;QAC9B,uBAAuB,EAAE,KAAK,CAAC,IAAI;KACnC,CAAC,CAAC;IAEU,2BAAS,GAAG,MAAM,CAAC,MAAM,CAAoB;QACzD,uBAAuB,EAAE,IAAI;QAC7B,uBAAuB,EAAE,aAAa;KACtC,CAAC,CAAC;AACJ,CAAC,EA1BgB,iBAAiB,KAAjB,iBAAiB,QA0BjC;AAED,MAAM,YAAY;IAET,YAAY,GAAY,KAAK,CAAC;IAC9B,QAAQ,GAAwB,IAAI,CAAC;IAEtC,MAAM;QACZ,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACxB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YACzB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACnB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC9B,IAAI,CAAC,OAAO,EAAE,CAAC;YAChB,CAAC;QACF,CAAC;IACF,CAAC;IAED,IAAI,uBAAuB;QAC1B,OAAO,IAAI,CAAC,YAAY,CAAC;IAC1B,CAAC;IAED,IAAI,uBAAuB;QAC1B,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACvB,OAAO,aAAa,CAAC;QACtB,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpB,IAAI,CAAC,QAAQ,GAAG,IAAI,OAAO,EAAO,CAAC;QACpC,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;IAC5B,CAAC;IAEM,OAAO;QACb,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;YACxB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACtB,CAAC;IACF,CAAC;CACD;AAED,MAAM,OAAO,uBAAuB;IAE3B,MAAM,GAAuB,SAAS,CAAC;IACvC,eAAe,GAAiB,SAAS,CAAC;IAElD,YAAY,MAA0B;QACrC,IAAI,CAAC,eAAe,GAAG,MAAM,IAAI,MAAM,CAAC,uBAAuB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACpF,CAAC;IAED,IAAI,KAAK;QACR,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YAClB,yCAAyC;YACzC,kBAAkB;YAClB,IAAI,CAAC,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;QAClC,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC;IACpB,CAAC;IAED,MAAM;QACL,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YAClB,0CAA0C;YAC1C,4CAA4C;YAC5C,oCAAoC;YACpC,IAAI,CAAC,MAAM,GAAG,iBAAiB,CAAC,SAAS,CAAC;QAE3C,CAAC;aAAM,IAAI,IAAI,CAAC,MAAM,YAAY,YAAY,EAAE,CAAC;YAChD,kBAAkB;YAClB,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACtB,CAAC;IACF,CAAC;IAED,OAAO,CAAC,SAAkB,KAAK;QAC9B,IAAI,MAAM,EAAE,CAAC;YACZ,IAAI,CAAC,MAAM,EAAE,CAAC;QACf,CAAC;QACD,IAAI,CAAC,eAAe,EAAE,OAAO,EAAE,CAAC;QAChC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YAClB,0DAA0D;YAC1D,IAAI,CAAC,MAAM,GAAG,iBAAiB,CAAC,IAAI,CAAC;QAEtC,CAAC;aAAM,IAAI,IAAI,CAAC,MAAM,YAAY,YAAY,EAAE,CAAC;YAChD,mBAAmB;YACnB,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACvB,CAAC;IACF,CAAC;CACD;AAED,MAAM,UAAU,eAAe,CAAC,KAAsB;IACrD,MAAM,MAAM,GAAG,IAAI,uBAAuB,EAAE,CAAC;IAC7C,KAAK,CAAC,GAAG,CAAC,EAAE,OAAO,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC9C,OAAO,MAAM,CAAC,KAAK,CAAC;AACrB,CAAC"} \ No newline at end of file diff --git a/packages/core/dist/charCode.d.ts b/packages/core/dist/charCode.d.ts index 8468ca1a..3329f4a1 100644 --- a/packages/core/dist/charCode.d.ts +++ b/packages/core/dist/charCode.d.ts @@ -1,401 +1,401 @@ -/** - * An inlined enum containing useful character codes (to be used with String.charCodeAt). - * Please leave the const keyword such that it gets inlined when compiled to JavaScript! - */ -export declare const enum CharCode { - Null = 0, - /** - * The `\t` character. - */ - Tab = 9, - /** - * The `\n` character. - */ - LineFeed = 10, - /** - * The `\r` character. - */ - CarriageReturn = 13, - Space = 32, - /** - * The `!` character. - */ - ExclamationMark = 33, - /** - * The `"` character. - */ - DoubleQuote = 34, - /** - * The `#` character. - */ - Hash = 35, - /** - * The `$` character. - */ - DollarSign = 36, - /** - * The `%` character. - */ - PercentSign = 37, - /** - * The `&` character. - */ - Ampersand = 38, - /** - * The `'` character. - */ - SingleQuote = 39, - /** - * The `(` character. - */ - OpenParen = 40, - /** - * The `)` character. - */ - CloseParen = 41, - /** - * The `*` character. - */ - Asterisk = 42, - /** - * The `+` character. - */ - Plus = 43, - /** - * The `,` character. - */ - Comma = 44, - /** - * The `-` character. - */ - Dash = 45, - /** - * The `.` character. - */ - Period = 46, - /** - * The `/` character. - */ - Slash = 47, - Digit0 = 48, - Digit1 = 49, - Digit2 = 50, - Digit3 = 51, - Digit4 = 52, - Digit5 = 53, - Digit6 = 54, - Digit7 = 55, - Digit8 = 56, - Digit9 = 57, - /** - * The `:` character. - */ - Colon = 58, - /** - * The `;` character. - */ - Semicolon = 59, - /** - * The `<` character. - */ - LessThan = 60, - /** - * The `=` character. - */ - Equals = 61, - /** - * The `>` character. - */ - GreaterThan = 62, - /** - * The `?` character. - */ - QuestionMark = 63, - /** - * The `@` character. - */ - AtSign = 64, - A = 65, - B = 66, - C = 67, - D = 68, - E = 69, - F = 70, - G = 71, - H = 72, - I = 73, - J = 74, - K = 75, - L = 76, - M = 77, - N = 78, - O = 79, - P = 80, - Q = 81, - R = 82, - S = 83, - T = 84, - U = 85, - V = 86, - W = 87, - X = 88, - Y = 89, - Z = 90, - /** - * The `[` character. - */ - OpenSquareBracket = 91, - /** - * The `\` character. - */ - Backslash = 92, - /** - * The `]` character. - */ - CloseSquareBracket = 93, - /** - * The `^` character. - */ - Caret = 94, - /** - * The `_` character. - */ - Underline = 95, - /** - * The ``(`)`` character. - */ - BackTick = 96, - a = 97, - b = 98, - c = 99, - d = 100, - e = 101, - f = 102, - g = 103, - h = 104, - i = 105, - j = 106, - k = 107, - l = 108, - m = 109, - n = 110, - o = 111, - p = 112, - q = 113, - r = 114, - s = 115, - t = 116, - u = 117, - v = 118, - w = 119, - x = 120, - y = 121, - z = 122, - /** - * The `{` character. - */ - OpenCurlyBrace = 123, - /** - * The `|` character. - */ - Pipe = 124, - /** - * The `}` character. - */ - CloseCurlyBrace = 125, - /** - * The `~` character. - */ - Tilde = 126, - U_Combining_Grave_Accent = 768, - U_Combining_Acute_Accent = 769, - U_Combining_Circumflex_Accent = 770, - U_Combining_Tilde = 771, - U_Combining_Macron = 772, - U_Combining_Overline = 773, - U_Combining_Breve = 774, - U_Combining_Dot_Above = 775, - U_Combining_Diaeresis = 776, - U_Combining_Hook_Above = 777, - U_Combining_Ring_Above = 778, - U_Combining_Double_Acute_Accent = 779, - U_Combining_Caron = 780, - U_Combining_Vertical_Line_Above = 781, - U_Combining_Double_Vertical_Line_Above = 782, - U_Combining_Double_Grave_Accent = 783, - U_Combining_Candrabindu = 784, - U_Combining_Inverted_Breve = 785, - U_Combining_Turned_Comma_Above = 786, - U_Combining_Comma_Above = 787, - U_Combining_Reversed_Comma_Above = 788, - U_Combining_Comma_Above_Right = 789, - U_Combining_Grave_Accent_Below = 790, - U_Combining_Acute_Accent_Below = 791, - U_Combining_Left_Tack_Below = 792, - U_Combining_Right_Tack_Below = 793, - U_Combining_Left_Angle_Above = 794, - U_Combining_Horn = 795, - U_Combining_Left_Half_Ring_Below = 796, - U_Combining_Up_Tack_Below = 797, - U_Combining_Down_Tack_Below = 798, - U_Combining_Plus_Sign_Below = 799, - U_Combining_Minus_Sign_Below = 800, - U_Combining_Palatalized_Hook_Below = 801, - U_Combining_Retroflex_Hook_Below = 802, - U_Combining_Dot_Below = 803, - U_Combining_Diaeresis_Below = 804, - U_Combining_Ring_Below = 805, - U_Combining_Comma_Below = 806, - U_Combining_Cedilla = 807, - U_Combining_Ogonek = 808, - U_Combining_Vertical_Line_Below = 809, - U_Combining_Bridge_Below = 810, - U_Combining_Inverted_Double_Arch_Below = 811, - U_Combining_Caron_Below = 812, - U_Combining_Circumflex_Accent_Below = 813, - U_Combining_Breve_Below = 814, - U_Combining_Inverted_Breve_Below = 815, - U_Combining_Tilde_Below = 816, - U_Combining_Macron_Below = 817, - U_Combining_Low_Line = 818, - U_Combining_Double_Low_Line = 819, - U_Combining_Tilde_Overlay = 820, - U_Combining_Short_Stroke_Overlay = 821, - U_Combining_Long_Stroke_Overlay = 822, - U_Combining_Short_Solidus_Overlay = 823, - U_Combining_Long_Solidus_Overlay = 824, - U_Combining_Right_Half_Ring_Below = 825, - U_Combining_Inverted_Bridge_Below = 826, - U_Combining_Square_Below = 827, - U_Combining_Seagull_Below = 828, - U_Combining_X_Above = 829, - U_Combining_Vertical_Tilde = 830, - U_Combining_Double_Overline = 831, - U_Combining_Grave_Tone_Mark = 832, - U_Combining_Acute_Tone_Mark = 833, - U_Combining_Greek_Perispomeni = 834, - U_Combining_Greek_Koronis = 835, - U_Combining_Greek_Dialytika_Tonos = 836, - U_Combining_Greek_Ypogegrammeni = 837, - U_Combining_Bridge_Above = 838, - U_Combining_Equals_Sign_Below = 839, - U_Combining_Double_Vertical_Line_Below = 840, - U_Combining_Left_Angle_Below = 841, - U_Combining_Not_Tilde_Above = 842, - U_Combining_Homothetic_Above = 843, - U_Combining_Almost_Equal_To_Above = 844, - U_Combining_Left_Right_Arrow_Below = 845, - U_Combining_Upwards_Arrow_Below = 846, - U_Combining_Grapheme_Joiner = 847, - U_Combining_Right_Arrowhead_Above = 848, - U_Combining_Left_Half_Ring_Above = 849, - U_Combining_Fermata = 850, - U_Combining_X_Below = 851, - U_Combining_Left_Arrowhead_Below = 852, - U_Combining_Right_Arrowhead_Below = 853, - U_Combining_Right_Arrowhead_And_Up_Arrowhead_Below = 854, - U_Combining_Right_Half_Ring_Above = 855, - U_Combining_Dot_Above_Right = 856, - U_Combining_Asterisk_Below = 857, - U_Combining_Double_Ring_Below = 858, - U_Combining_Zigzag_Above = 859, - U_Combining_Double_Breve_Below = 860, - U_Combining_Double_Breve = 861, - U_Combining_Double_Macron = 862, - U_Combining_Double_Macron_Below = 863, - U_Combining_Double_Tilde = 864, - U_Combining_Double_Inverted_Breve = 865, - U_Combining_Double_Rightwards_Arrow_Below = 866, - U_Combining_Latin_Small_Letter_A = 867, - U_Combining_Latin_Small_Letter_E = 868, - U_Combining_Latin_Small_Letter_I = 869, - U_Combining_Latin_Small_Letter_O = 870, - U_Combining_Latin_Small_Letter_U = 871, - U_Combining_Latin_Small_Letter_C = 872, - U_Combining_Latin_Small_Letter_D = 873, - U_Combining_Latin_Small_Letter_H = 874, - U_Combining_Latin_Small_Letter_M = 875, - U_Combining_Latin_Small_Letter_R = 876, - U_Combining_Latin_Small_Letter_T = 877, - U_Combining_Latin_Small_Letter_V = 878, - U_Combining_Latin_Small_Letter_X = 879, - /** - * Unicode Character 'LINE SEPARATOR' (U+2028) - * http://www.fileformat.info/info/unicode/char/2028/index.htm - */ - LINE_SEPARATOR_2028 = 8232, - U_CIRCUMFLEX = 94, - U_GRAVE_ACCENT = 96, - U_DIAERESIS = 168, - U_MACRON = 175, - U_ACUTE_ACCENT = 180, - U_CEDILLA = 184, - U_MODIFIER_LETTER_LEFT_ARROWHEAD = 706, - U_MODIFIER_LETTER_RIGHT_ARROWHEAD = 707, - U_MODIFIER_LETTER_UP_ARROWHEAD = 708, - U_MODIFIER_LETTER_DOWN_ARROWHEAD = 709, - U_MODIFIER_LETTER_CENTRED_RIGHT_HALF_RING = 722, - U_MODIFIER_LETTER_CENTRED_LEFT_HALF_RING = 723, - U_MODIFIER_LETTER_UP_TACK = 724, - U_MODIFIER_LETTER_DOWN_TACK = 725, - U_MODIFIER_LETTER_PLUS_SIGN = 726, - U_MODIFIER_LETTER_MINUS_SIGN = 727, - U_BREVE = 728, - U_DOT_ABOVE = 729, - U_RING_ABOVE = 730, - U_OGONEK = 731, - U_SMALL_TILDE = 732, - U_DOUBLE_ACUTE_ACCENT = 733, - U_MODIFIER_LETTER_RHOTIC_HOOK = 734, - U_MODIFIER_LETTER_CROSS_ACCENT = 735, - U_MODIFIER_LETTER_EXTRA_HIGH_TONE_BAR = 741, - U_MODIFIER_LETTER_HIGH_TONE_BAR = 742, - U_MODIFIER_LETTER_MID_TONE_BAR = 743, - U_MODIFIER_LETTER_LOW_TONE_BAR = 744, - U_MODIFIER_LETTER_EXTRA_LOW_TONE_BAR = 745, - U_MODIFIER_LETTER_YIN_DEPARTING_TONE_MARK = 746, - U_MODIFIER_LETTER_YANG_DEPARTING_TONE_MARK = 747, - U_MODIFIER_LETTER_UNASPIRATED = 749, - U_MODIFIER_LETTER_LOW_DOWN_ARROWHEAD = 751, - U_MODIFIER_LETTER_LOW_UP_ARROWHEAD = 752, - U_MODIFIER_LETTER_LOW_LEFT_ARROWHEAD = 753, - U_MODIFIER_LETTER_LOW_RIGHT_ARROWHEAD = 754, - U_MODIFIER_LETTER_LOW_RING = 755, - U_MODIFIER_LETTER_MIDDLE_GRAVE_ACCENT = 756, - U_MODIFIER_LETTER_MIDDLE_DOUBLE_GRAVE_ACCENT = 757, - U_MODIFIER_LETTER_MIDDLE_DOUBLE_ACUTE_ACCENT = 758, - U_MODIFIER_LETTER_LOW_TILDE = 759, - U_MODIFIER_LETTER_RAISED_COLON = 760, - U_MODIFIER_LETTER_BEGIN_HIGH_TONE = 761, - U_MODIFIER_LETTER_END_HIGH_TONE = 762, - U_MODIFIER_LETTER_BEGIN_LOW_TONE = 763, - U_MODIFIER_LETTER_END_LOW_TONE = 764, - U_MODIFIER_LETTER_SHELF = 765, - U_MODIFIER_LETTER_OPEN_SHELF = 766, - U_MODIFIER_LETTER_LOW_LEFT_ARROW = 767, - U_GREEK_LOWER_NUMERAL_SIGN = 885, - U_GREEK_TONOS = 900, - U_GREEK_DIALYTIKA_TONOS = 901, - U_GREEK_KORONIS = 8125, - U_GREEK_PSILI = 8127, - U_GREEK_PERISPOMENI = 8128, - U_GREEK_DIALYTIKA_AND_PERISPOMENI = 8129, - U_GREEK_PSILI_AND_VARIA = 8141, - U_GREEK_PSILI_AND_OXIA = 8142, - U_GREEK_PSILI_AND_PERISPOMENI = 8143, - U_GREEK_DASIA_AND_VARIA = 8157, - U_GREEK_DASIA_AND_OXIA = 8158, - U_GREEK_DASIA_AND_PERISPOMENI = 8159, - U_GREEK_DIALYTIKA_AND_VARIA = 8173, - U_GREEK_DIALYTIKA_AND_OXIA = 8174, - U_GREEK_VARIA = 8175, - U_GREEK_OXIA = 8189, - U_GREEK_DASIA = 8190, - U_OVERLINE = 8254, - /** - * UTF-8 BOM - * Unicode Character 'ZERO WIDTH NO-BREAK SPACE' (U+FEFF) - * http://www.fileformat.info/info/unicode/char/feff/index.htm - */ - UTF8_BOM = 65279 -} +/** + * An inlined enum containing useful character codes (to be used with String.charCodeAt). + * Please leave the const keyword such that it gets inlined when compiled to JavaScript! + */ +export declare const enum CharCode { + Null = 0, + /** + * The `\t` character. + */ + Tab = 9, + /** + * The `\n` character. + */ + LineFeed = 10, + /** + * The `\r` character. + */ + CarriageReturn = 13, + Space = 32, + /** + * The `!` character. + */ + ExclamationMark = 33, + /** + * The `"` character. + */ + DoubleQuote = 34, + /** + * The `#` character. + */ + Hash = 35, + /** + * The `$` character. + */ + DollarSign = 36, + /** + * The `%` character. + */ + PercentSign = 37, + /** + * The `&` character. + */ + Ampersand = 38, + /** + * The `'` character. + */ + SingleQuote = 39, + /** + * The `(` character. + */ + OpenParen = 40, + /** + * The `)` character. + */ + CloseParen = 41, + /** + * The `*` character. + */ + Asterisk = 42, + /** + * The `+` character. + */ + Plus = 43, + /** + * The `,` character. + */ + Comma = 44, + /** + * The `-` character. + */ + Dash = 45, + /** + * The `.` character. + */ + Period = 46, + /** + * The `/` character. + */ + Slash = 47, + Digit0 = 48, + Digit1 = 49, + Digit2 = 50, + Digit3 = 51, + Digit4 = 52, + Digit5 = 53, + Digit6 = 54, + Digit7 = 55, + Digit8 = 56, + Digit9 = 57, + /** + * The `:` character. + */ + Colon = 58, + /** + * The `;` character. + */ + Semicolon = 59, + /** + * The `<` character. + */ + LessThan = 60, + /** + * The `=` character. + */ + Equals = 61, + /** + * The `>` character. + */ + GreaterThan = 62, + /** + * The `?` character. + */ + QuestionMark = 63, + /** + * The `@` character. + */ + AtSign = 64, + A = 65, + B = 66, + C = 67, + D = 68, + E = 69, + F = 70, + G = 71, + H = 72, + I = 73, + J = 74, + K = 75, + L = 76, + M = 77, + N = 78, + O = 79, + P = 80, + Q = 81, + R = 82, + S = 83, + T = 84, + U = 85, + V = 86, + W = 87, + X = 88, + Y = 89, + Z = 90, + /** + * The `[` character. + */ + OpenSquareBracket = 91, + /** + * The `\` character. + */ + Backslash = 92, + /** + * The `]` character. + */ + CloseSquareBracket = 93, + /** + * The `^` character. + */ + Caret = 94, + /** + * The `_` character. + */ + Underline = 95, + /** + * The ``(`)`` character. + */ + BackTick = 96, + a = 97, + b = 98, + c = 99, + d = 100, + e = 101, + f = 102, + g = 103, + h = 104, + i = 105, + j = 106, + k = 107, + l = 108, + m = 109, + n = 110, + o = 111, + p = 112, + q = 113, + r = 114, + s = 115, + t = 116, + u = 117, + v = 118, + w = 119, + x = 120, + y = 121, + z = 122, + /** + * The `{` character. + */ + OpenCurlyBrace = 123, + /** + * The `|` character. + */ + Pipe = 124, + /** + * The `}` character. + */ + CloseCurlyBrace = 125, + /** + * The `~` character. + */ + Tilde = 126, + U_Combining_Grave_Accent = 768,// U+0300 Combining Grave Accent + U_Combining_Acute_Accent = 769,// U+0301 Combining Acute Accent + U_Combining_Circumflex_Accent = 770,// U+0302 Combining Circumflex Accent + U_Combining_Tilde = 771,// U+0303 Combining Tilde + U_Combining_Macron = 772,// U+0304 Combining Macron + U_Combining_Overline = 773,// U+0305 Combining Overline + U_Combining_Breve = 774,// U+0306 Combining Breve + U_Combining_Dot_Above = 775,// U+0307 Combining Dot Above + U_Combining_Diaeresis = 776,// U+0308 Combining Diaeresis + U_Combining_Hook_Above = 777,// U+0309 Combining Hook Above + U_Combining_Ring_Above = 778,// U+030A Combining Ring Above + U_Combining_Double_Acute_Accent = 779,// U+030B Combining Double Acute Accent + U_Combining_Caron = 780,// U+030C Combining Caron + U_Combining_Vertical_Line_Above = 781,// U+030D Combining Vertical Line Above + U_Combining_Double_Vertical_Line_Above = 782,// U+030E Combining Double Vertical Line Above + U_Combining_Double_Grave_Accent = 783,// U+030F Combining Double Grave Accent + U_Combining_Candrabindu = 784,// U+0310 Combining Candrabindu + U_Combining_Inverted_Breve = 785,// U+0311 Combining Inverted Breve + U_Combining_Turned_Comma_Above = 786,// U+0312 Combining Turned Comma Above + U_Combining_Comma_Above = 787,// U+0313 Combining Comma Above + U_Combining_Reversed_Comma_Above = 788,// U+0314 Combining Reversed Comma Above + U_Combining_Comma_Above_Right = 789,// U+0315 Combining Comma Above Right + U_Combining_Grave_Accent_Below = 790,// U+0316 Combining Grave Accent Below + U_Combining_Acute_Accent_Below = 791,// U+0317 Combining Acute Accent Below + U_Combining_Left_Tack_Below = 792,// U+0318 Combining Left Tack Below + U_Combining_Right_Tack_Below = 793,// U+0319 Combining Right Tack Below + U_Combining_Left_Angle_Above = 794,// U+031A Combining Left Angle Above + U_Combining_Horn = 795,// U+031B Combining Horn + U_Combining_Left_Half_Ring_Below = 796,// U+031C Combining Left Half Ring Below + U_Combining_Up_Tack_Below = 797,// U+031D Combining Up Tack Below + U_Combining_Down_Tack_Below = 798,// U+031E Combining Down Tack Below + U_Combining_Plus_Sign_Below = 799,// U+031F Combining Plus Sign Below + U_Combining_Minus_Sign_Below = 800,// U+0320 Combining Minus Sign Below + U_Combining_Palatalized_Hook_Below = 801,// U+0321 Combining Palatalized Hook Below + U_Combining_Retroflex_Hook_Below = 802,// U+0322 Combining Retroflex Hook Below + U_Combining_Dot_Below = 803,// U+0323 Combining Dot Below + U_Combining_Diaeresis_Below = 804,// U+0324 Combining Diaeresis Below + U_Combining_Ring_Below = 805,// U+0325 Combining Ring Below + U_Combining_Comma_Below = 806,// U+0326 Combining Comma Below + U_Combining_Cedilla = 807,// U+0327 Combining Cedilla + U_Combining_Ogonek = 808,// U+0328 Combining Ogonek + U_Combining_Vertical_Line_Below = 809,// U+0329 Combining Vertical Line Below + U_Combining_Bridge_Below = 810,// U+032A Combining Bridge Below + U_Combining_Inverted_Double_Arch_Below = 811,// U+032B Combining Inverted Double Arch Below + U_Combining_Caron_Below = 812,// U+032C Combining Caron Below + U_Combining_Circumflex_Accent_Below = 813,// U+032D Combining Circumflex Accent Below + U_Combining_Breve_Below = 814,// U+032E Combining Breve Below + U_Combining_Inverted_Breve_Below = 815,// U+032F Combining Inverted Breve Below + U_Combining_Tilde_Below = 816,// U+0330 Combining Tilde Below + U_Combining_Macron_Below = 817,// U+0331 Combining Macron Below + U_Combining_Low_Line = 818,// U+0332 Combining Low Line + U_Combining_Double_Low_Line = 819,// U+0333 Combining Double Low Line + U_Combining_Tilde_Overlay = 820,// U+0334 Combining Tilde Overlay + U_Combining_Short_Stroke_Overlay = 821,// U+0335 Combining Short Stroke Overlay + U_Combining_Long_Stroke_Overlay = 822,// U+0336 Combining Long Stroke Overlay + U_Combining_Short_Solidus_Overlay = 823,// U+0337 Combining Short Solidus Overlay + U_Combining_Long_Solidus_Overlay = 824,// U+0338 Combining Long Solidus Overlay + U_Combining_Right_Half_Ring_Below = 825,// U+0339 Combining Right Half Ring Below + U_Combining_Inverted_Bridge_Below = 826,// U+033A Combining Inverted Bridge Below + U_Combining_Square_Below = 827,// U+033B Combining Square Below + U_Combining_Seagull_Below = 828,// U+033C Combining Seagull Below + U_Combining_X_Above = 829,// U+033D Combining X Above + U_Combining_Vertical_Tilde = 830,// U+033E Combining Vertical Tilde + U_Combining_Double_Overline = 831,// U+033F Combining Double Overline + U_Combining_Grave_Tone_Mark = 832,// U+0340 Combining Grave Tone Mark + U_Combining_Acute_Tone_Mark = 833,// U+0341 Combining Acute Tone Mark + U_Combining_Greek_Perispomeni = 834,// U+0342 Combining Greek Perispomeni + U_Combining_Greek_Koronis = 835,// U+0343 Combining Greek Koronis + U_Combining_Greek_Dialytika_Tonos = 836,// U+0344 Combining Greek Dialytika Tonos + U_Combining_Greek_Ypogegrammeni = 837,// U+0345 Combining Greek Ypogegrammeni + U_Combining_Bridge_Above = 838,// U+0346 Combining Bridge Above + U_Combining_Equals_Sign_Below = 839,// U+0347 Combining Equals Sign Below + U_Combining_Double_Vertical_Line_Below = 840,// U+0348 Combining Double Vertical Line Below + U_Combining_Left_Angle_Below = 841,// U+0349 Combining Left Angle Below + U_Combining_Not_Tilde_Above = 842,// U+034A Combining Not Tilde Above + U_Combining_Homothetic_Above = 843,// U+034B Combining Homothetic Above + U_Combining_Almost_Equal_To_Above = 844,// U+034C Combining Almost Equal To Above + U_Combining_Left_Right_Arrow_Below = 845,// U+034D Combining Left Right Arrow Below + U_Combining_Upwards_Arrow_Below = 846,// U+034E Combining Upwards Arrow Below + U_Combining_Grapheme_Joiner = 847,// U+034F Combining Grapheme Joiner + U_Combining_Right_Arrowhead_Above = 848,// U+0350 Combining Right Arrowhead Above + U_Combining_Left_Half_Ring_Above = 849,// U+0351 Combining Left Half Ring Above + U_Combining_Fermata = 850,// U+0352 Combining Fermata + U_Combining_X_Below = 851,// U+0353 Combining X Below + U_Combining_Left_Arrowhead_Below = 852,// U+0354 Combining Left Arrowhead Below + U_Combining_Right_Arrowhead_Below = 853,// U+0355 Combining Right Arrowhead Below + U_Combining_Right_Arrowhead_And_Up_Arrowhead_Below = 854,// U+0356 Combining Right Arrowhead And Up Arrowhead Below + U_Combining_Right_Half_Ring_Above = 855,// U+0357 Combining Right Half Ring Above + U_Combining_Dot_Above_Right = 856,// U+0358 Combining Dot Above Right + U_Combining_Asterisk_Below = 857,// U+0359 Combining Asterisk Below + U_Combining_Double_Ring_Below = 858,// U+035A Combining Double Ring Below + U_Combining_Zigzag_Above = 859,// U+035B Combining Zigzag Above + U_Combining_Double_Breve_Below = 860,// U+035C Combining Double Breve Below + U_Combining_Double_Breve = 861,// U+035D Combining Double Breve + U_Combining_Double_Macron = 862,// U+035E Combining Double Macron + U_Combining_Double_Macron_Below = 863,// U+035F Combining Double Macron Below + U_Combining_Double_Tilde = 864,// U+0360 Combining Double Tilde + U_Combining_Double_Inverted_Breve = 865,// U+0361 Combining Double Inverted Breve + U_Combining_Double_Rightwards_Arrow_Below = 866,// U+0362 Combining Double Rightwards Arrow Below + U_Combining_Latin_Small_Letter_A = 867,// U+0363 Combining Latin Small Letter A + U_Combining_Latin_Small_Letter_E = 868,// U+0364 Combining Latin Small Letter E + U_Combining_Latin_Small_Letter_I = 869,// U+0365 Combining Latin Small Letter I + U_Combining_Latin_Small_Letter_O = 870,// U+0366 Combining Latin Small Letter O + U_Combining_Latin_Small_Letter_U = 871,// U+0367 Combining Latin Small Letter U + U_Combining_Latin_Small_Letter_C = 872,// U+0368 Combining Latin Small Letter C + U_Combining_Latin_Small_Letter_D = 873,// U+0369 Combining Latin Small Letter D + U_Combining_Latin_Small_Letter_H = 874,// U+036A Combining Latin Small Letter H + U_Combining_Latin_Small_Letter_M = 875,// U+036B Combining Latin Small Letter M + U_Combining_Latin_Small_Letter_R = 876,// U+036C Combining Latin Small Letter R + U_Combining_Latin_Small_Letter_T = 877,// U+036D Combining Latin Small Letter T + U_Combining_Latin_Small_Letter_V = 878,// U+036E Combining Latin Small Letter V + U_Combining_Latin_Small_Letter_X = 879,// U+036F Combining Latin Small Letter X + /** + * Unicode Character 'LINE SEPARATOR' (U+2028) + * http://www.fileformat.info/info/unicode/char/2028/index.htm + */ + LINE_SEPARATOR_2028 = 8232, + U_CIRCUMFLEX = 94,// U+005E CIRCUMFLEX + U_GRAVE_ACCENT = 96,// U+0060 GRAVE ACCENT + U_DIAERESIS = 168,// U+00A8 DIAERESIS + U_MACRON = 175,// U+00AF MACRON + U_ACUTE_ACCENT = 180,// U+00B4 ACUTE ACCENT + U_CEDILLA = 184,// U+00B8 CEDILLA + U_MODIFIER_LETTER_LEFT_ARROWHEAD = 706,// U+02C2 MODIFIER LETTER LEFT ARROWHEAD + U_MODIFIER_LETTER_RIGHT_ARROWHEAD = 707,// U+02C3 MODIFIER LETTER RIGHT ARROWHEAD + U_MODIFIER_LETTER_UP_ARROWHEAD = 708,// U+02C4 MODIFIER LETTER UP ARROWHEAD + U_MODIFIER_LETTER_DOWN_ARROWHEAD = 709,// U+02C5 MODIFIER LETTER DOWN ARROWHEAD + U_MODIFIER_LETTER_CENTRED_RIGHT_HALF_RING = 722,// U+02D2 MODIFIER LETTER CENTRED RIGHT HALF RING + U_MODIFIER_LETTER_CENTRED_LEFT_HALF_RING = 723,// U+02D3 MODIFIER LETTER CENTRED LEFT HALF RING + U_MODIFIER_LETTER_UP_TACK = 724,// U+02D4 MODIFIER LETTER UP TACK + U_MODIFIER_LETTER_DOWN_TACK = 725,// U+02D5 MODIFIER LETTER DOWN TACK + U_MODIFIER_LETTER_PLUS_SIGN = 726,// U+02D6 MODIFIER LETTER PLUS SIGN + U_MODIFIER_LETTER_MINUS_SIGN = 727,// U+02D7 MODIFIER LETTER MINUS SIGN + U_BREVE = 728,// U+02D8 BREVE + U_DOT_ABOVE = 729,// U+02D9 DOT ABOVE + U_RING_ABOVE = 730,// U+02DA RING ABOVE + U_OGONEK = 731,// U+02DB OGONEK + U_SMALL_TILDE = 732,// U+02DC SMALL TILDE + U_DOUBLE_ACUTE_ACCENT = 733,// U+02DD DOUBLE ACUTE ACCENT + U_MODIFIER_LETTER_RHOTIC_HOOK = 734,// U+02DE MODIFIER LETTER RHOTIC HOOK + U_MODIFIER_LETTER_CROSS_ACCENT = 735,// U+02DF MODIFIER LETTER CROSS ACCENT + U_MODIFIER_LETTER_EXTRA_HIGH_TONE_BAR = 741,// U+02E5 MODIFIER LETTER EXTRA-HIGH TONE BAR + U_MODIFIER_LETTER_HIGH_TONE_BAR = 742,// U+02E6 MODIFIER LETTER HIGH TONE BAR + U_MODIFIER_LETTER_MID_TONE_BAR = 743,// U+02E7 MODIFIER LETTER MID TONE BAR + U_MODIFIER_LETTER_LOW_TONE_BAR = 744,// U+02E8 MODIFIER LETTER LOW TONE BAR + U_MODIFIER_LETTER_EXTRA_LOW_TONE_BAR = 745,// U+02E9 MODIFIER LETTER EXTRA-LOW TONE BAR + U_MODIFIER_LETTER_YIN_DEPARTING_TONE_MARK = 746,// U+02EA MODIFIER LETTER YIN DEPARTING TONE MARK + U_MODIFIER_LETTER_YANG_DEPARTING_TONE_MARK = 747,// U+02EB MODIFIER LETTER YANG DEPARTING TONE MARK + U_MODIFIER_LETTER_UNASPIRATED = 749,// U+02ED MODIFIER LETTER UNASPIRATED + U_MODIFIER_LETTER_LOW_DOWN_ARROWHEAD = 751,// U+02EF MODIFIER LETTER LOW DOWN ARROWHEAD + U_MODIFIER_LETTER_LOW_UP_ARROWHEAD = 752,// U+02F0 MODIFIER LETTER LOW UP ARROWHEAD + U_MODIFIER_LETTER_LOW_LEFT_ARROWHEAD = 753,// U+02F1 MODIFIER LETTER LOW LEFT ARROWHEAD + U_MODIFIER_LETTER_LOW_RIGHT_ARROWHEAD = 754,// U+02F2 MODIFIER LETTER LOW RIGHT ARROWHEAD + U_MODIFIER_LETTER_LOW_RING = 755,// U+02F3 MODIFIER LETTER LOW RING + U_MODIFIER_LETTER_MIDDLE_GRAVE_ACCENT = 756,// U+02F4 MODIFIER LETTER MIDDLE GRAVE ACCENT + U_MODIFIER_LETTER_MIDDLE_DOUBLE_GRAVE_ACCENT = 757,// U+02F5 MODIFIER LETTER MIDDLE DOUBLE GRAVE ACCENT + U_MODIFIER_LETTER_MIDDLE_DOUBLE_ACUTE_ACCENT = 758,// U+02F6 MODIFIER LETTER MIDDLE DOUBLE ACUTE ACCENT + U_MODIFIER_LETTER_LOW_TILDE = 759,// U+02F7 MODIFIER LETTER LOW TILDE + U_MODIFIER_LETTER_RAISED_COLON = 760,// U+02F8 MODIFIER LETTER RAISED COLON + U_MODIFIER_LETTER_BEGIN_HIGH_TONE = 761,// U+02F9 MODIFIER LETTER BEGIN HIGH TONE + U_MODIFIER_LETTER_END_HIGH_TONE = 762,// U+02FA MODIFIER LETTER END HIGH TONE + U_MODIFIER_LETTER_BEGIN_LOW_TONE = 763,// U+02FB MODIFIER LETTER BEGIN LOW TONE + U_MODIFIER_LETTER_END_LOW_TONE = 764,// U+02FC MODIFIER LETTER END LOW TONE + U_MODIFIER_LETTER_SHELF = 765,// U+02FD MODIFIER LETTER SHELF + U_MODIFIER_LETTER_OPEN_SHELF = 766,// U+02FE MODIFIER LETTER OPEN SHELF + U_MODIFIER_LETTER_LOW_LEFT_ARROW = 767,// U+02FF MODIFIER LETTER LOW LEFT ARROW + U_GREEK_LOWER_NUMERAL_SIGN = 885,// U+0375 GREEK LOWER NUMERAL SIGN + U_GREEK_TONOS = 900,// U+0384 GREEK TONOS + U_GREEK_DIALYTIKA_TONOS = 901,// U+0385 GREEK DIALYTIKA TONOS + U_GREEK_KORONIS = 8125,// U+1FBD GREEK KORONIS + U_GREEK_PSILI = 8127,// U+1FBF GREEK PSILI + U_GREEK_PERISPOMENI = 8128,// U+1FC0 GREEK PERISPOMENI + U_GREEK_DIALYTIKA_AND_PERISPOMENI = 8129,// U+1FC1 GREEK DIALYTIKA AND PERISPOMENI + U_GREEK_PSILI_AND_VARIA = 8141,// U+1FCD GREEK PSILI AND VARIA + U_GREEK_PSILI_AND_OXIA = 8142,// U+1FCE GREEK PSILI AND OXIA + U_GREEK_PSILI_AND_PERISPOMENI = 8143,// U+1FCF GREEK PSILI AND PERISPOMENI + U_GREEK_DASIA_AND_VARIA = 8157,// U+1FDD GREEK DASIA AND VARIA + U_GREEK_DASIA_AND_OXIA = 8158,// U+1FDE GREEK DASIA AND OXIA + U_GREEK_DASIA_AND_PERISPOMENI = 8159,// U+1FDF GREEK DASIA AND PERISPOMENI + U_GREEK_DIALYTIKA_AND_VARIA = 8173,// U+1FED GREEK DIALYTIKA AND VARIA + U_GREEK_DIALYTIKA_AND_OXIA = 8174,// U+1FEE GREEK DIALYTIKA AND OXIA + U_GREEK_VARIA = 8175,// U+1FEF GREEK VARIA + U_GREEK_OXIA = 8189,// U+1FFD GREEK OXIA + U_GREEK_DASIA = 8190,// U+1FFE GREEK DASIA + U_OVERLINE = 8254,// Unicode Character 'OVERLINE' + /** + * UTF-8 BOM + * Unicode Character 'ZERO WIDTH NO-BREAK SPACE' (U+FEFF) + * http://www.fileformat.info/info/unicode/char/feff/index.htm + */ + UTF8_BOM = 65279 +} diff --git a/packages/core/dist/charCode.js b/packages/core/dist/charCode.js index 80a9db2c..157258c5 100644 --- a/packages/core/dist/charCode.js +++ b/packages/core/dist/charCode.js @@ -1,410 +1,410 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ -'use strict'; -// Names from https://blog.codinghorror.com/ascii-pronunciation-rules-for-programmers/ -/** - * An inlined enum containing useful character codes (to be used with String.charCodeAt). - * Please leave the const keyword such that it gets inlined when compiled to JavaScript! - */ -export var CharCode; -(function (CharCode) { - CharCode[CharCode["Null"] = 0] = "Null"; - /** - * The `\t` character. - */ - CharCode[CharCode["Tab"] = 9] = "Tab"; - /** - * The `\n` character. - */ - CharCode[CharCode["LineFeed"] = 10] = "LineFeed"; - /** - * The `\r` character. - */ - CharCode[CharCode["CarriageReturn"] = 13] = "CarriageReturn"; - CharCode[CharCode["Space"] = 32] = "Space"; - /** - * The `!` character. - */ - CharCode[CharCode["ExclamationMark"] = 33] = "ExclamationMark"; - /** - * The `"` character. - */ - CharCode[CharCode["DoubleQuote"] = 34] = "DoubleQuote"; - /** - * The `#` character. - */ - CharCode[CharCode["Hash"] = 35] = "Hash"; - /** - * The `$` character. - */ - CharCode[CharCode["DollarSign"] = 36] = "DollarSign"; - /** - * The `%` character. - */ - CharCode[CharCode["PercentSign"] = 37] = "PercentSign"; - /** - * The `&` character. - */ - CharCode[CharCode["Ampersand"] = 38] = "Ampersand"; - /** - * The `'` character. - */ - CharCode[CharCode["SingleQuote"] = 39] = "SingleQuote"; - /** - * The `(` character. - */ - CharCode[CharCode["OpenParen"] = 40] = "OpenParen"; - /** - * The `)` character. - */ - CharCode[CharCode["CloseParen"] = 41] = "CloseParen"; - /** - * The `*` character. - */ - CharCode[CharCode["Asterisk"] = 42] = "Asterisk"; - /** - * The `+` character. - */ - CharCode[CharCode["Plus"] = 43] = "Plus"; - /** - * The `,` character. - */ - CharCode[CharCode["Comma"] = 44] = "Comma"; - /** - * The `-` character. - */ - CharCode[CharCode["Dash"] = 45] = "Dash"; - /** - * The `.` character. - */ - CharCode[CharCode["Period"] = 46] = "Period"; - /** - * The `/` character. - */ - CharCode[CharCode["Slash"] = 47] = "Slash"; - CharCode[CharCode["Digit0"] = 48] = "Digit0"; - CharCode[CharCode["Digit1"] = 49] = "Digit1"; - CharCode[CharCode["Digit2"] = 50] = "Digit2"; - CharCode[CharCode["Digit3"] = 51] = "Digit3"; - CharCode[CharCode["Digit4"] = 52] = "Digit4"; - CharCode[CharCode["Digit5"] = 53] = "Digit5"; - CharCode[CharCode["Digit6"] = 54] = "Digit6"; - CharCode[CharCode["Digit7"] = 55] = "Digit7"; - CharCode[CharCode["Digit8"] = 56] = "Digit8"; - CharCode[CharCode["Digit9"] = 57] = "Digit9"; - /** - * The `:` character. - */ - CharCode[CharCode["Colon"] = 58] = "Colon"; - /** - * The `;` character. - */ - CharCode[CharCode["Semicolon"] = 59] = "Semicolon"; - /** - * The `<` character. - */ - CharCode[CharCode["LessThan"] = 60] = "LessThan"; - /** - * The `=` character. - */ - CharCode[CharCode["Equals"] = 61] = "Equals"; - /** - * The `>` character. - */ - CharCode[CharCode["GreaterThan"] = 62] = "GreaterThan"; - /** - * The `?` character. - */ - CharCode[CharCode["QuestionMark"] = 63] = "QuestionMark"; - /** - * The `@` character. - */ - CharCode[CharCode["AtSign"] = 64] = "AtSign"; - CharCode[CharCode["A"] = 65] = "A"; - CharCode[CharCode["B"] = 66] = "B"; - CharCode[CharCode["C"] = 67] = "C"; - CharCode[CharCode["D"] = 68] = "D"; - CharCode[CharCode["E"] = 69] = "E"; - CharCode[CharCode["F"] = 70] = "F"; - CharCode[CharCode["G"] = 71] = "G"; - CharCode[CharCode["H"] = 72] = "H"; - CharCode[CharCode["I"] = 73] = "I"; - CharCode[CharCode["J"] = 74] = "J"; - CharCode[CharCode["K"] = 75] = "K"; - CharCode[CharCode["L"] = 76] = "L"; - CharCode[CharCode["M"] = 77] = "M"; - CharCode[CharCode["N"] = 78] = "N"; - CharCode[CharCode["O"] = 79] = "O"; - CharCode[CharCode["P"] = 80] = "P"; - CharCode[CharCode["Q"] = 81] = "Q"; - CharCode[CharCode["R"] = 82] = "R"; - CharCode[CharCode["S"] = 83] = "S"; - CharCode[CharCode["T"] = 84] = "T"; - CharCode[CharCode["U"] = 85] = "U"; - CharCode[CharCode["V"] = 86] = "V"; - CharCode[CharCode["W"] = 87] = "W"; - CharCode[CharCode["X"] = 88] = "X"; - CharCode[CharCode["Y"] = 89] = "Y"; - CharCode[CharCode["Z"] = 90] = "Z"; - /** - * The `[` character. - */ - CharCode[CharCode["OpenSquareBracket"] = 91] = "OpenSquareBracket"; - /** - * The `\` character. - */ - CharCode[CharCode["Backslash"] = 92] = "Backslash"; - /** - * The `]` character. - */ - CharCode[CharCode["CloseSquareBracket"] = 93] = "CloseSquareBracket"; - /** - * The `^` character. - */ - CharCode[CharCode["Caret"] = 94] = "Caret"; - /** - * The `_` character. - */ - CharCode[CharCode["Underline"] = 95] = "Underline"; - /** - * The ``(`)`` character. - */ - CharCode[CharCode["BackTick"] = 96] = "BackTick"; - CharCode[CharCode["a"] = 97] = "a"; - CharCode[CharCode["b"] = 98] = "b"; - CharCode[CharCode["c"] = 99] = "c"; - CharCode[CharCode["d"] = 100] = "d"; - CharCode[CharCode["e"] = 101] = "e"; - CharCode[CharCode["f"] = 102] = "f"; - CharCode[CharCode["g"] = 103] = "g"; - CharCode[CharCode["h"] = 104] = "h"; - CharCode[CharCode["i"] = 105] = "i"; - CharCode[CharCode["j"] = 106] = "j"; - CharCode[CharCode["k"] = 107] = "k"; - CharCode[CharCode["l"] = 108] = "l"; - CharCode[CharCode["m"] = 109] = "m"; - CharCode[CharCode["n"] = 110] = "n"; - CharCode[CharCode["o"] = 111] = "o"; - CharCode[CharCode["p"] = 112] = "p"; - CharCode[CharCode["q"] = 113] = "q"; - CharCode[CharCode["r"] = 114] = "r"; - CharCode[CharCode["s"] = 115] = "s"; - CharCode[CharCode["t"] = 116] = "t"; - CharCode[CharCode["u"] = 117] = "u"; - CharCode[CharCode["v"] = 118] = "v"; - CharCode[CharCode["w"] = 119] = "w"; - CharCode[CharCode["x"] = 120] = "x"; - CharCode[CharCode["y"] = 121] = "y"; - CharCode[CharCode["z"] = 122] = "z"; - /** - * The `{` character. - */ - CharCode[CharCode["OpenCurlyBrace"] = 123] = "OpenCurlyBrace"; - /** - * The `|` character. - */ - CharCode[CharCode["Pipe"] = 124] = "Pipe"; - /** - * The `}` character. - */ - CharCode[CharCode["CloseCurlyBrace"] = 125] = "CloseCurlyBrace"; - /** - * The `~` character. - */ - CharCode[CharCode["Tilde"] = 126] = "Tilde"; - CharCode[CharCode["U_Combining_Grave_Accent"] = 768] = "U_Combining_Grave_Accent"; - CharCode[CharCode["U_Combining_Acute_Accent"] = 769] = "U_Combining_Acute_Accent"; - CharCode[CharCode["U_Combining_Circumflex_Accent"] = 770] = "U_Combining_Circumflex_Accent"; - CharCode[CharCode["U_Combining_Tilde"] = 771] = "U_Combining_Tilde"; - CharCode[CharCode["U_Combining_Macron"] = 772] = "U_Combining_Macron"; - CharCode[CharCode["U_Combining_Overline"] = 773] = "U_Combining_Overline"; - CharCode[CharCode["U_Combining_Breve"] = 774] = "U_Combining_Breve"; - CharCode[CharCode["U_Combining_Dot_Above"] = 775] = "U_Combining_Dot_Above"; - CharCode[CharCode["U_Combining_Diaeresis"] = 776] = "U_Combining_Diaeresis"; - CharCode[CharCode["U_Combining_Hook_Above"] = 777] = "U_Combining_Hook_Above"; - CharCode[CharCode["U_Combining_Ring_Above"] = 778] = "U_Combining_Ring_Above"; - CharCode[CharCode["U_Combining_Double_Acute_Accent"] = 779] = "U_Combining_Double_Acute_Accent"; - CharCode[CharCode["U_Combining_Caron"] = 780] = "U_Combining_Caron"; - CharCode[CharCode["U_Combining_Vertical_Line_Above"] = 781] = "U_Combining_Vertical_Line_Above"; - CharCode[CharCode["U_Combining_Double_Vertical_Line_Above"] = 782] = "U_Combining_Double_Vertical_Line_Above"; - CharCode[CharCode["U_Combining_Double_Grave_Accent"] = 783] = "U_Combining_Double_Grave_Accent"; - CharCode[CharCode["U_Combining_Candrabindu"] = 784] = "U_Combining_Candrabindu"; - CharCode[CharCode["U_Combining_Inverted_Breve"] = 785] = "U_Combining_Inverted_Breve"; - CharCode[CharCode["U_Combining_Turned_Comma_Above"] = 786] = "U_Combining_Turned_Comma_Above"; - CharCode[CharCode["U_Combining_Comma_Above"] = 787] = "U_Combining_Comma_Above"; - CharCode[CharCode["U_Combining_Reversed_Comma_Above"] = 788] = "U_Combining_Reversed_Comma_Above"; - CharCode[CharCode["U_Combining_Comma_Above_Right"] = 789] = "U_Combining_Comma_Above_Right"; - CharCode[CharCode["U_Combining_Grave_Accent_Below"] = 790] = "U_Combining_Grave_Accent_Below"; - CharCode[CharCode["U_Combining_Acute_Accent_Below"] = 791] = "U_Combining_Acute_Accent_Below"; - CharCode[CharCode["U_Combining_Left_Tack_Below"] = 792] = "U_Combining_Left_Tack_Below"; - CharCode[CharCode["U_Combining_Right_Tack_Below"] = 793] = "U_Combining_Right_Tack_Below"; - CharCode[CharCode["U_Combining_Left_Angle_Above"] = 794] = "U_Combining_Left_Angle_Above"; - CharCode[CharCode["U_Combining_Horn"] = 795] = "U_Combining_Horn"; - CharCode[CharCode["U_Combining_Left_Half_Ring_Below"] = 796] = "U_Combining_Left_Half_Ring_Below"; - CharCode[CharCode["U_Combining_Up_Tack_Below"] = 797] = "U_Combining_Up_Tack_Below"; - CharCode[CharCode["U_Combining_Down_Tack_Below"] = 798] = "U_Combining_Down_Tack_Below"; - CharCode[CharCode["U_Combining_Plus_Sign_Below"] = 799] = "U_Combining_Plus_Sign_Below"; - CharCode[CharCode["U_Combining_Minus_Sign_Below"] = 800] = "U_Combining_Minus_Sign_Below"; - CharCode[CharCode["U_Combining_Palatalized_Hook_Below"] = 801] = "U_Combining_Palatalized_Hook_Below"; - CharCode[CharCode["U_Combining_Retroflex_Hook_Below"] = 802] = "U_Combining_Retroflex_Hook_Below"; - CharCode[CharCode["U_Combining_Dot_Below"] = 803] = "U_Combining_Dot_Below"; - CharCode[CharCode["U_Combining_Diaeresis_Below"] = 804] = "U_Combining_Diaeresis_Below"; - CharCode[CharCode["U_Combining_Ring_Below"] = 805] = "U_Combining_Ring_Below"; - CharCode[CharCode["U_Combining_Comma_Below"] = 806] = "U_Combining_Comma_Below"; - CharCode[CharCode["U_Combining_Cedilla"] = 807] = "U_Combining_Cedilla"; - CharCode[CharCode["U_Combining_Ogonek"] = 808] = "U_Combining_Ogonek"; - CharCode[CharCode["U_Combining_Vertical_Line_Below"] = 809] = "U_Combining_Vertical_Line_Below"; - CharCode[CharCode["U_Combining_Bridge_Below"] = 810] = "U_Combining_Bridge_Below"; - CharCode[CharCode["U_Combining_Inverted_Double_Arch_Below"] = 811] = "U_Combining_Inverted_Double_Arch_Below"; - CharCode[CharCode["U_Combining_Caron_Below"] = 812] = "U_Combining_Caron_Below"; - CharCode[CharCode["U_Combining_Circumflex_Accent_Below"] = 813] = "U_Combining_Circumflex_Accent_Below"; - CharCode[CharCode["U_Combining_Breve_Below"] = 814] = "U_Combining_Breve_Below"; - CharCode[CharCode["U_Combining_Inverted_Breve_Below"] = 815] = "U_Combining_Inverted_Breve_Below"; - CharCode[CharCode["U_Combining_Tilde_Below"] = 816] = "U_Combining_Tilde_Below"; - CharCode[CharCode["U_Combining_Macron_Below"] = 817] = "U_Combining_Macron_Below"; - CharCode[CharCode["U_Combining_Low_Line"] = 818] = "U_Combining_Low_Line"; - CharCode[CharCode["U_Combining_Double_Low_Line"] = 819] = "U_Combining_Double_Low_Line"; - CharCode[CharCode["U_Combining_Tilde_Overlay"] = 820] = "U_Combining_Tilde_Overlay"; - CharCode[CharCode["U_Combining_Short_Stroke_Overlay"] = 821] = "U_Combining_Short_Stroke_Overlay"; - CharCode[CharCode["U_Combining_Long_Stroke_Overlay"] = 822] = "U_Combining_Long_Stroke_Overlay"; - CharCode[CharCode["U_Combining_Short_Solidus_Overlay"] = 823] = "U_Combining_Short_Solidus_Overlay"; - CharCode[CharCode["U_Combining_Long_Solidus_Overlay"] = 824] = "U_Combining_Long_Solidus_Overlay"; - CharCode[CharCode["U_Combining_Right_Half_Ring_Below"] = 825] = "U_Combining_Right_Half_Ring_Below"; - CharCode[CharCode["U_Combining_Inverted_Bridge_Below"] = 826] = "U_Combining_Inverted_Bridge_Below"; - CharCode[CharCode["U_Combining_Square_Below"] = 827] = "U_Combining_Square_Below"; - CharCode[CharCode["U_Combining_Seagull_Below"] = 828] = "U_Combining_Seagull_Below"; - CharCode[CharCode["U_Combining_X_Above"] = 829] = "U_Combining_X_Above"; - CharCode[CharCode["U_Combining_Vertical_Tilde"] = 830] = "U_Combining_Vertical_Tilde"; - CharCode[CharCode["U_Combining_Double_Overline"] = 831] = "U_Combining_Double_Overline"; - CharCode[CharCode["U_Combining_Grave_Tone_Mark"] = 832] = "U_Combining_Grave_Tone_Mark"; - CharCode[CharCode["U_Combining_Acute_Tone_Mark"] = 833] = "U_Combining_Acute_Tone_Mark"; - CharCode[CharCode["U_Combining_Greek_Perispomeni"] = 834] = "U_Combining_Greek_Perispomeni"; - CharCode[CharCode["U_Combining_Greek_Koronis"] = 835] = "U_Combining_Greek_Koronis"; - CharCode[CharCode["U_Combining_Greek_Dialytika_Tonos"] = 836] = "U_Combining_Greek_Dialytika_Tonos"; - CharCode[CharCode["U_Combining_Greek_Ypogegrammeni"] = 837] = "U_Combining_Greek_Ypogegrammeni"; - CharCode[CharCode["U_Combining_Bridge_Above"] = 838] = "U_Combining_Bridge_Above"; - CharCode[CharCode["U_Combining_Equals_Sign_Below"] = 839] = "U_Combining_Equals_Sign_Below"; - CharCode[CharCode["U_Combining_Double_Vertical_Line_Below"] = 840] = "U_Combining_Double_Vertical_Line_Below"; - CharCode[CharCode["U_Combining_Left_Angle_Below"] = 841] = "U_Combining_Left_Angle_Below"; - CharCode[CharCode["U_Combining_Not_Tilde_Above"] = 842] = "U_Combining_Not_Tilde_Above"; - CharCode[CharCode["U_Combining_Homothetic_Above"] = 843] = "U_Combining_Homothetic_Above"; - CharCode[CharCode["U_Combining_Almost_Equal_To_Above"] = 844] = "U_Combining_Almost_Equal_To_Above"; - CharCode[CharCode["U_Combining_Left_Right_Arrow_Below"] = 845] = "U_Combining_Left_Right_Arrow_Below"; - CharCode[CharCode["U_Combining_Upwards_Arrow_Below"] = 846] = "U_Combining_Upwards_Arrow_Below"; - CharCode[CharCode["U_Combining_Grapheme_Joiner"] = 847] = "U_Combining_Grapheme_Joiner"; - CharCode[CharCode["U_Combining_Right_Arrowhead_Above"] = 848] = "U_Combining_Right_Arrowhead_Above"; - CharCode[CharCode["U_Combining_Left_Half_Ring_Above"] = 849] = "U_Combining_Left_Half_Ring_Above"; - CharCode[CharCode["U_Combining_Fermata"] = 850] = "U_Combining_Fermata"; - CharCode[CharCode["U_Combining_X_Below"] = 851] = "U_Combining_X_Below"; - CharCode[CharCode["U_Combining_Left_Arrowhead_Below"] = 852] = "U_Combining_Left_Arrowhead_Below"; - CharCode[CharCode["U_Combining_Right_Arrowhead_Below"] = 853] = "U_Combining_Right_Arrowhead_Below"; - CharCode[CharCode["U_Combining_Right_Arrowhead_And_Up_Arrowhead_Below"] = 854] = "U_Combining_Right_Arrowhead_And_Up_Arrowhead_Below"; - CharCode[CharCode["U_Combining_Right_Half_Ring_Above"] = 855] = "U_Combining_Right_Half_Ring_Above"; - CharCode[CharCode["U_Combining_Dot_Above_Right"] = 856] = "U_Combining_Dot_Above_Right"; - CharCode[CharCode["U_Combining_Asterisk_Below"] = 857] = "U_Combining_Asterisk_Below"; - CharCode[CharCode["U_Combining_Double_Ring_Below"] = 858] = "U_Combining_Double_Ring_Below"; - CharCode[CharCode["U_Combining_Zigzag_Above"] = 859] = "U_Combining_Zigzag_Above"; - CharCode[CharCode["U_Combining_Double_Breve_Below"] = 860] = "U_Combining_Double_Breve_Below"; - CharCode[CharCode["U_Combining_Double_Breve"] = 861] = "U_Combining_Double_Breve"; - CharCode[CharCode["U_Combining_Double_Macron"] = 862] = "U_Combining_Double_Macron"; - CharCode[CharCode["U_Combining_Double_Macron_Below"] = 863] = "U_Combining_Double_Macron_Below"; - CharCode[CharCode["U_Combining_Double_Tilde"] = 864] = "U_Combining_Double_Tilde"; - CharCode[CharCode["U_Combining_Double_Inverted_Breve"] = 865] = "U_Combining_Double_Inverted_Breve"; - CharCode[CharCode["U_Combining_Double_Rightwards_Arrow_Below"] = 866] = "U_Combining_Double_Rightwards_Arrow_Below"; - CharCode[CharCode["U_Combining_Latin_Small_Letter_A"] = 867] = "U_Combining_Latin_Small_Letter_A"; - CharCode[CharCode["U_Combining_Latin_Small_Letter_E"] = 868] = "U_Combining_Latin_Small_Letter_E"; - CharCode[CharCode["U_Combining_Latin_Small_Letter_I"] = 869] = "U_Combining_Latin_Small_Letter_I"; - CharCode[CharCode["U_Combining_Latin_Small_Letter_O"] = 870] = "U_Combining_Latin_Small_Letter_O"; - CharCode[CharCode["U_Combining_Latin_Small_Letter_U"] = 871] = "U_Combining_Latin_Small_Letter_U"; - CharCode[CharCode["U_Combining_Latin_Small_Letter_C"] = 872] = "U_Combining_Latin_Small_Letter_C"; - CharCode[CharCode["U_Combining_Latin_Small_Letter_D"] = 873] = "U_Combining_Latin_Small_Letter_D"; - CharCode[CharCode["U_Combining_Latin_Small_Letter_H"] = 874] = "U_Combining_Latin_Small_Letter_H"; - CharCode[CharCode["U_Combining_Latin_Small_Letter_M"] = 875] = "U_Combining_Latin_Small_Letter_M"; - CharCode[CharCode["U_Combining_Latin_Small_Letter_R"] = 876] = "U_Combining_Latin_Small_Letter_R"; - CharCode[CharCode["U_Combining_Latin_Small_Letter_T"] = 877] = "U_Combining_Latin_Small_Letter_T"; - CharCode[CharCode["U_Combining_Latin_Small_Letter_V"] = 878] = "U_Combining_Latin_Small_Letter_V"; - CharCode[CharCode["U_Combining_Latin_Small_Letter_X"] = 879] = "U_Combining_Latin_Small_Letter_X"; - /** - * Unicode Character 'LINE SEPARATOR' (U+2028) - * http://www.fileformat.info/info/unicode/char/2028/index.htm - */ - CharCode[CharCode["LINE_SEPARATOR_2028"] = 8232] = "LINE_SEPARATOR_2028"; - // http://www.fileformat.info/info/unicode/category/Sk/list.htm - CharCode[CharCode["U_CIRCUMFLEX"] = 94] = "U_CIRCUMFLEX"; - CharCode[CharCode["U_GRAVE_ACCENT"] = 96] = "U_GRAVE_ACCENT"; - CharCode[CharCode["U_DIAERESIS"] = 168] = "U_DIAERESIS"; - CharCode[CharCode["U_MACRON"] = 175] = "U_MACRON"; - CharCode[CharCode["U_ACUTE_ACCENT"] = 180] = "U_ACUTE_ACCENT"; - CharCode[CharCode["U_CEDILLA"] = 184] = "U_CEDILLA"; - CharCode[CharCode["U_MODIFIER_LETTER_LEFT_ARROWHEAD"] = 706] = "U_MODIFIER_LETTER_LEFT_ARROWHEAD"; - CharCode[CharCode["U_MODIFIER_LETTER_RIGHT_ARROWHEAD"] = 707] = "U_MODIFIER_LETTER_RIGHT_ARROWHEAD"; - CharCode[CharCode["U_MODIFIER_LETTER_UP_ARROWHEAD"] = 708] = "U_MODIFIER_LETTER_UP_ARROWHEAD"; - CharCode[CharCode["U_MODIFIER_LETTER_DOWN_ARROWHEAD"] = 709] = "U_MODIFIER_LETTER_DOWN_ARROWHEAD"; - CharCode[CharCode["U_MODIFIER_LETTER_CENTRED_RIGHT_HALF_RING"] = 722] = "U_MODIFIER_LETTER_CENTRED_RIGHT_HALF_RING"; - CharCode[CharCode["U_MODIFIER_LETTER_CENTRED_LEFT_HALF_RING"] = 723] = "U_MODIFIER_LETTER_CENTRED_LEFT_HALF_RING"; - CharCode[CharCode["U_MODIFIER_LETTER_UP_TACK"] = 724] = "U_MODIFIER_LETTER_UP_TACK"; - CharCode[CharCode["U_MODIFIER_LETTER_DOWN_TACK"] = 725] = "U_MODIFIER_LETTER_DOWN_TACK"; - CharCode[CharCode["U_MODIFIER_LETTER_PLUS_SIGN"] = 726] = "U_MODIFIER_LETTER_PLUS_SIGN"; - CharCode[CharCode["U_MODIFIER_LETTER_MINUS_SIGN"] = 727] = "U_MODIFIER_LETTER_MINUS_SIGN"; - CharCode[CharCode["U_BREVE"] = 728] = "U_BREVE"; - CharCode[CharCode["U_DOT_ABOVE"] = 729] = "U_DOT_ABOVE"; - CharCode[CharCode["U_RING_ABOVE"] = 730] = "U_RING_ABOVE"; - CharCode[CharCode["U_OGONEK"] = 731] = "U_OGONEK"; - CharCode[CharCode["U_SMALL_TILDE"] = 732] = "U_SMALL_TILDE"; - CharCode[CharCode["U_DOUBLE_ACUTE_ACCENT"] = 733] = "U_DOUBLE_ACUTE_ACCENT"; - CharCode[CharCode["U_MODIFIER_LETTER_RHOTIC_HOOK"] = 734] = "U_MODIFIER_LETTER_RHOTIC_HOOK"; - CharCode[CharCode["U_MODIFIER_LETTER_CROSS_ACCENT"] = 735] = "U_MODIFIER_LETTER_CROSS_ACCENT"; - CharCode[CharCode["U_MODIFIER_LETTER_EXTRA_HIGH_TONE_BAR"] = 741] = "U_MODIFIER_LETTER_EXTRA_HIGH_TONE_BAR"; - CharCode[CharCode["U_MODIFIER_LETTER_HIGH_TONE_BAR"] = 742] = "U_MODIFIER_LETTER_HIGH_TONE_BAR"; - CharCode[CharCode["U_MODIFIER_LETTER_MID_TONE_BAR"] = 743] = "U_MODIFIER_LETTER_MID_TONE_BAR"; - CharCode[CharCode["U_MODIFIER_LETTER_LOW_TONE_BAR"] = 744] = "U_MODIFIER_LETTER_LOW_TONE_BAR"; - CharCode[CharCode["U_MODIFIER_LETTER_EXTRA_LOW_TONE_BAR"] = 745] = "U_MODIFIER_LETTER_EXTRA_LOW_TONE_BAR"; - CharCode[CharCode["U_MODIFIER_LETTER_YIN_DEPARTING_TONE_MARK"] = 746] = "U_MODIFIER_LETTER_YIN_DEPARTING_TONE_MARK"; - CharCode[CharCode["U_MODIFIER_LETTER_YANG_DEPARTING_TONE_MARK"] = 747] = "U_MODIFIER_LETTER_YANG_DEPARTING_TONE_MARK"; - CharCode[CharCode["U_MODIFIER_LETTER_UNASPIRATED"] = 749] = "U_MODIFIER_LETTER_UNASPIRATED"; - CharCode[CharCode["U_MODIFIER_LETTER_LOW_DOWN_ARROWHEAD"] = 751] = "U_MODIFIER_LETTER_LOW_DOWN_ARROWHEAD"; - CharCode[CharCode["U_MODIFIER_LETTER_LOW_UP_ARROWHEAD"] = 752] = "U_MODIFIER_LETTER_LOW_UP_ARROWHEAD"; - CharCode[CharCode["U_MODIFIER_LETTER_LOW_LEFT_ARROWHEAD"] = 753] = "U_MODIFIER_LETTER_LOW_LEFT_ARROWHEAD"; - CharCode[CharCode["U_MODIFIER_LETTER_LOW_RIGHT_ARROWHEAD"] = 754] = "U_MODIFIER_LETTER_LOW_RIGHT_ARROWHEAD"; - CharCode[CharCode["U_MODIFIER_LETTER_LOW_RING"] = 755] = "U_MODIFIER_LETTER_LOW_RING"; - CharCode[CharCode["U_MODIFIER_LETTER_MIDDLE_GRAVE_ACCENT"] = 756] = "U_MODIFIER_LETTER_MIDDLE_GRAVE_ACCENT"; - CharCode[CharCode["U_MODIFIER_LETTER_MIDDLE_DOUBLE_GRAVE_ACCENT"] = 757] = "U_MODIFIER_LETTER_MIDDLE_DOUBLE_GRAVE_ACCENT"; - CharCode[CharCode["U_MODIFIER_LETTER_MIDDLE_DOUBLE_ACUTE_ACCENT"] = 758] = "U_MODIFIER_LETTER_MIDDLE_DOUBLE_ACUTE_ACCENT"; - CharCode[CharCode["U_MODIFIER_LETTER_LOW_TILDE"] = 759] = "U_MODIFIER_LETTER_LOW_TILDE"; - CharCode[CharCode["U_MODIFIER_LETTER_RAISED_COLON"] = 760] = "U_MODIFIER_LETTER_RAISED_COLON"; - CharCode[CharCode["U_MODIFIER_LETTER_BEGIN_HIGH_TONE"] = 761] = "U_MODIFIER_LETTER_BEGIN_HIGH_TONE"; - CharCode[CharCode["U_MODIFIER_LETTER_END_HIGH_TONE"] = 762] = "U_MODIFIER_LETTER_END_HIGH_TONE"; - CharCode[CharCode["U_MODIFIER_LETTER_BEGIN_LOW_TONE"] = 763] = "U_MODIFIER_LETTER_BEGIN_LOW_TONE"; - CharCode[CharCode["U_MODIFIER_LETTER_END_LOW_TONE"] = 764] = "U_MODIFIER_LETTER_END_LOW_TONE"; - CharCode[CharCode["U_MODIFIER_LETTER_SHELF"] = 765] = "U_MODIFIER_LETTER_SHELF"; - CharCode[CharCode["U_MODIFIER_LETTER_OPEN_SHELF"] = 766] = "U_MODIFIER_LETTER_OPEN_SHELF"; - CharCode[CharCode["U_MODIFIER_LETTER_LOW_LEFT_ARROW"] = 767] = "U_MODIFIER_LETTER_LOW_LEFT_ARROW"; - CharCode[CharCode["U_GREEK_LOWER_NUMERAL_SIGN"] = 885] = "U_GREEK_LOWER_NUMERAL_SIGN"; - CharCode[CharCode["U_GREEK_TONOS"] = 900] = "U_GREEK_TONOS"; - CharCode[CharCode["U_GREEK_DIALYTIKA_TONOS"] = 901] = "U_GREEK_DIALYTIKA_TONOS"; - CharCode[CharCode["U_GREEK_KORONIS"] = 8125] = "U_GREEK_KORONIS"; - CharCode[CharCode["U_GREEK_PSILI"] = 8127] = "U_GREEK_PSILI"; - CharCode[CharCode["U_GREEK_PERISPOMENI"] = 8128] = "U_GREEK_PERISPOMENI"; - CharCode[CharCode["U_GREEK_DIALYTIKA_AND_PERISPOMENI"] = 8129] = "U_GREEK_DIALYTIKA_AND_PERISPOMENI"; - CharCode[CharCode["U_GREEK_PSILI_AND_VARIA"] = 8141] = "U_GREEK_PSILI_AND_VARIA"; - CharCode[CharCode["U_GREEK_PSILI_AND_OXIA"] = 8142] = "U_GREEK_PSILI_AND_OXIA"; - CharCode[CharCode["U_GREEK_PSILI_AND_PERISPOMENI"] = 8143] = "U_GREEK_PSILI_AND_PERISPOMENI"; - CharCode[CharCode["U_GREEK_DASIA_AND_VARIA"] = 8157] = "U_GREEK_DASIA_AND_VARIA"; - CharCode[CharCode["U_GREEK_DASIA_AND_OXIA"] = 8158] = "U_GREEK_DASIA_AND_OXIA"; - CharCode[CharCode["U_GREEK_DASIA_AND_PERISPOMENI"] = 8159] = "U_GREEK_DASIA_AND_PERISPOMENI"; - CharCode[CharCode["U_GREEK_DIALYTIKA_AND_VARIA"] = 8173] = "U_GREEK_DIALYTIKA_AND_VARIA"; - CharCode[CharCode["U_GREEK_DIALYTIKA_AND_OXIA"] = 8174] = "U_GREEK_DIALYTIKA_AND_OXIA"; - CharCode[CharCode["U_GREEK_VARIA"] = 8175] = "U_GREEK_VARIA"; - CharCode[CharCode["U_GREEK_OXIA"] = 8189] = "U_GREEK_OXIA"; - CharCode[CharCode["U_GREEK_DASIA"] = 8190] = "U_GREEK_DASIA"; - CharCode[CharCode["U_OVERLINE"] = 8254] = "U_OVERLINE"; - /** - * UTF-8 BOM - * Unicode Character 'ZERO WIDTH NO-BREAK SPACE' (U+FEFF) - * http://www.fileformat.info/info/unicode/char/feff/index.htm - */ - CharCode[CharCode["UTF8_BOM"] = 65279] = "UTF8_BOM"; -})(CharCode = CharCode || (CharCode = {})); +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +'use strict'; +// Names from https://blog.codinghorror.com/ascii-pronunciation-rules-for-programmers/ +/** + * An inlined enum containing useful character codes (to be used with String.charCodeAt). + * Please leave the const keyword such that it gets inlined when compiled to JavaScript! + */ +export var CharCode; +(function (CharCode) { + CharCode[CharCode["Null"] = 0] = "Null"; + /** + * The `\t` character. + */ + CharCode[CharCode["Tab"] = 9] = "Tab"; + /** + * The `\n` character. + */ + CharCode[CharCode["LineFeed"] = 10] = "LineFeed"; + /** + * The `\r` character. + */ + CharCode[CharCode["CarriageReturn"] = 13] = "CarriageReturn"; + CharCode[CharCode["Space"] = 32] = "Space"; + /** + * The `!` character. + */ + CharCode[CharCode["ExclamationMark"] = 33] = "ExclamationMark"; + /** + * The `"` character. + */ + CharCode[CharCode["DoubleQuote"] = 34] = "DoubleQuote"; + /** + * The `#` character. + */ + CharCode[CharCode["Hash"] = 35] = "Hash"; + /** + * The `$` character. + */ + CharCode[CharCode["DollarSign"] = 36] = "DollarSign"; + /** + * The `%` character. + */ + CharCode[CharCode["PercentSign"] = 37] = "PercentSign"; + /** + * The `&` character. + */ + CharCode[CharCode["Ampersand"] = 38] = "Ampersand"; + /** + * The `'` character. + */ + CharCode[CharCode["SingleQuote"] = 39] = "SingleQuote"; + /** + * The `(` character. + */ + CharCode[CharCode["OpenParen"] = 40] = "OpenParen"; + /** + * The `)` character. + */ + CharCode[CharCode["CloseParen"] = 41] = "CloseParen"; + /** + * The `*` character. + */ + CharCode[CharCode["Asterisk"] = 42] = "Asterisk"; + /** + * The `+` character. + */ + CharCode[CharCode["Plus"] = 43] = "Plus"; + /** + * The `,` character. + */ + CharCode[CharCode["Comma"] = 44] = "Comma"; + /** + * The `-` character. + */ + CharCode[CharCode["Dash"] = 45] = "Dash"; + /** + * The `.` character. + */ + CharCode[CharCode["Period"] = 46] = "Period"; + /** + * The `/` character. + */ + CharCode[CharCode["Slash"] = 47] = "Slash"; + CharCode[CharCode["Digit0"] = 48] = "Digit0"; + CharCode[CharCode["Digit1"] = 49] = "Digit1"; + CharCode[CharCode["Digit2"] = 50] = "Digit2"; + CharCode[CharCode["Digit3"] = 51] = "Digit3"; + CharCode[CharCode["Digit4"] = 52] = "Digit4"; + CharCode[CharCode["Digit5"] = 53] = "Digit5"; + CharCode[CharCode["Digit6"] = 54] = "Digit6"; + CharCode[CharCode["Digit7"] = 55] = "Digit7"; + CharCode[CharCode["Digit8"] = 56] = "Digit8"; + CharCode[CharCode["Digit9"] = 57] = "Digit9"; + /** + * The `:` character. + */ + CharCode[CharCode["Colon"] = 58] = "Colon"; + /** + * The `;` character. + */ + CharCode[CharCode["Semicolon"] = 59] = "Semicolon"; + /** + * The `<` character. + */ + CharCode[CharCode["LessThan"] = 60] = "LessThan"; + /** + * The `=` character. + */ + CharCode[CharCode["Equals"] = 61] = "Equals"; + /** + * The `>` character. + */ + CharCode[CharCode["GreaterThan"] = 62] = "GreaterThan"; + /** + * The `?` character. + */ + CharCode[CharCode["QuestionMark"] = 63] = "QuestionMark"; + /** + * The `@` character. + */ + CharCode[CharCode["AtSign"] = 64] = "AtSign"; + CharCode[CharCode["A"] = 65] = "A"; + CharCode[CharCode["B"] = 66] = "B"; + CharCode[CharCode["C"] = 67] = "C"; + CharCode[CharCode["D"] = 68] = "D"; + CharCode[CharCode["E"] = 69] = "E"; + CharCode[CharCode["F"] = 70] = "F"; + CharCode[CharCode["G"] = 71] = "G"; + CharCode[CharCode["H"] = 72] = "H"; + CharCode[CharCode["I"] = 73] = "I"; + CharCode[CharCode["J"] = 74] = "J"; + CharCode[CharCode["K"] = 75] = "K"; + CharCode[CharCode["L"] = 76] = "L"; + CharCode[CharCode["M"] = 77] = "M"; + CharCode[CharCode["N"] = 78] = "N"; + CharCode[CharCode["O"] = 79] = "O"; + CharCode[CharCode["P"] = 80] = "P"; + CharCode[CharCode["Q"] = 81] = "Q"; + CharCode[CharCode["R"] = 82] = "R"; + CharCode[CharCode["S"] = 83] = "S"; + CharCode[CharCode["T"] = 84] = "T"; + CharCode[CharCode["U"] = 85] = "U"; + CharCode[CharCode["V"] = 86] = "V"; + CharCode[CharCode["W"] = 87] = "W"; + CharCode[CharCode["X"] = 88] = "X"; + CharCode[CharCode["Y"] = 89] = "Y"; + CharCode[CharCode["Z"] = 90] = "Z"; + /** + * The `[` character. + */ + CharCode[CharCode["OpenSquareBracket"] = 91] = "OpenSquareBracket"; + /** + * The `\` character. + */ + CharCode[CharCode["Backslash"] = 92] = "Backslash"; + /** + * The `]` character. + */ + CharCode[CharCode["CloseSquareBracket"] = 93] = "CloseSquareBracket"; + /** + * The `^` character. + */ + CharCode[CharCode["Caret"] = 94] = "Caret"; + /** + * The `_` character. + */ + CharCode[CharCode["Underline"] = 95] = "Underline"; + /** + * The ``(`)`` character. + */ + CharCode[CharCode["BackTick"] = 96] = "BackTick"; + CharCode[CharCode["a"] = 97] = "a"; + CharCode[CharCode["b"] = 98] = "b"; + CharCode[CharCode["c"] = 99] = "c"; + CharCode[CharCode["d"] = 100] = "d"; + CharCode[CharCode["e"] = 101] = "e"; + CharCode[CharCode["f"] = 102] = "f"; + CharCode[CharCode["g"] = 103] = "g"; + CharCode[CharCode["h"] = 104] = "h"; + CharCode[CharCode["i"] = 105] = "i"; + CharCode[CharCode["j"] = 106] = "j"; + CharCode[CharCode["k"] = 107] = "k"; + CharCode[CharCode["l"] = 108] = "l"; + CharCode[CharCode["m"] = 109] = "m"; + CharCode[CharCode["n"] = 110] = "n"; + CharCode[CharCode["o"] = 111] = "o"; + CharCode[CharCode["p"] = 112] = "p"; + CharCode[CharCode["q"] = 113] = "q"; + CharCode[CharCode["r"] = 114] = "r"; + CharCode[CharCode["s"] = 115] = "s"; + CharCode[CharCode["t"] = 116] = "t"; + CharCode[CharCode["u"] = 117] = "u"; + CharCode[CharCode["v"] = 118] = "v"; + CharCode[CharCode["w"] = 119] = "w"; + CharCode[CharCode["x"] = 120] = "x"; + CharCode[CharCode["y"] = 121] = "y"; + CharCode[CharCode["z"] = 122] = "z"; + /** + * The `{` character. + */ + CharCode[CharCode["OpenCurlyBrace"] = 123] = "OpenCurlyBrace"; + /** + * The `|` character. + */ + CharCode[CharCode["Pipe"] = 124] = "Pipe"; + /** + * The `}` character. + */ + CharCode[CharCode["CloseCurlyBrace"] = 125] = "CloseCurlyBrace"; + /** + * The `~` character. + */ + CharCode[CharCode["Tilde"] = 126] = "Tilde"; + CharCode[CharCode["U_Combining_Grave_Accent"] = 768] = "U_Combining_Grave_Accent"; + CharCode[CharCode["U_Combining_Acute_Accent"] = 769] = "U_Combining_Acute_Accent"; + CharCode[CharCode["U_Combining_Circumflex_Accent"] = 770] = "U_Combining_Circumflex_Accent"; + CharCode[CharCode["U_Combining_Tilde"] = 771] = "U_Combining_Tilde"; + CharCode[CharCode["U_Combining_Macron"] = 772] = "U_Combining_Macron"; + CharCode[CharCode["U_Combining_Overline"] = 773] = "U_Combining_Overline"; + CharCode[CharCode["U_Combining_Breve"] = 774] = "U_Combining_Breve"; + CharCode[CharCode["U_Combining_Dot_Above"] = 775] = "U_Combining_Dot_Above"; + CharCode[CharCode["U_Combining_Diaeresis"] = 776] = "U_Combining_Diaeresis"; + CharCode[CharCode["U_Combining_Hook_Above"] = 777] = "U_Combining_Hook_Above"; + CharCode[CharCode["U_Combining_Ring_Above"] = 778] = "U_Combining_Ring_Above"; + CharCode[CharCode["U_Combining_Double_Acute_Accent"] = 779] = "U_Combining_Double_Acute_Accent"; + CharCode[CharCode["U_Combining_Caron"] = 780] = "U_Combining_Caron"; + CharCode[CharCode["U_Combining_Vertical_Line_Above"] = 781] = "U_Combining_Vertical_Line_Above"; + CharCode[CharCode["U_Combining_Double_Vertical_Line_Above"] = 782] = "U_Combining_Double_Vertical_Line_Above"; + CharCode[CharCode["U_Combining_Double_Grave_Accent"] = 783] = "U_Combining_Double_Grave_Accent"; + CharCode[CharCode["U_Combining_Candrabindu"] = 784] = "U_Combining_Candrabindu"; + CharCode[CharCode["U_Combining_Inverted_Breve"] = 785] = "U_Combining_Inverted_Breve"; + CharCode[CharCode["U_Combining_Turned_Comma_Above"] = 786] = "U_Combining_Turned_Comma_Above"; + CharCode[CharCode["U_Combining_Comma_Above"] = 787] = "U_Combining_Comma_Above"; + CharCode[CharCode["U_Combining_Reversed_Comma_Above"] = 788] = "U_Combining_Reversed_Comma_Above"; + CharCode[CharCode["U_Combining_Comma_Above_Right"] = 789] = "U_Combining_Comma_Above_Right"; + CharCode[CharCode["U_Combining_Grave_Accent_Below"] = 790] = "U_Combining_Grave_Accent_Below"; + CharCode[CharCode["U_Combining_Acute_Accent_Below"] = 791] = "U_Combining_Acute_Accent_Below"; + CharCode[CharCode["U_Combining_Left_Tack_Below"] = 792] = "U_Combining_Left_Tack_Below"; + CharCode[CharCode["U_Combining_Right_Tack_Below"] = 793] = "U_Combining_Right_Tack_Below"; + CharCode[CharCode["U_Combining_Left_Angle_Above"] = 794] = "U_Combining_Left_Angle_Above"; + CharCode[CharCode["U_Combining_Horn"] = 795] = "U_Combining_Horn"; + CharCode[CharCode["U_Combining_Left_Half_Ring_Below"] = 796] = "U_Combining_Left_Half_Ring_Below"; + CharCode[CharCode["U_Combining_Up_Tack_Below"] = 797] = "U_Combining_Up_Tack_Below"; + CharCode[CharCode["U_Combining_Down_Tack_Below"] = 798] = "U_Combining_Down_Tack_Below"; + CharCode[CharCode["U_Combining_Plus_Sign_Below"] = 799] = "U_Combining_Plus_Sign_Below"; + CharCode[CharCode["U_Combining_Minus_Sign_Below"] = 800] = "U_Combining_Minus_Sign_Below"; + CharCode[CharCode["U_Combining_Palatalized_Hook_Below"] = 801] = "U_Combining_Palatalized_Hook_Below"; + CharCode[CharCode["U_Combining_Retroflex_Hook_Below"] = 802] = "U_Combining_Retroflex_Hook_Below"; + CharCode[CharCode["U_Combining_Dot_Below"] = 803] = "U_Combining_Dot_Below"; + CharCode[CharCode["U_Combining_Diaeresis_Below"] = 804] = "U_Combining_Diaeresis_Below"; + CharCode[CharCode["U_Combining_Ring_Below"] = 805] = "U_Combining_Ring_Below"; + CharCode[CharCode["U_Combining_Comma_Below"] = 806] = "U_Combining_Comma_Below"; + CharCode[CharCode["U_Combining_Cedilla"] = 807] = "U_Combining_Cedilla"; + CharCode[CharCode["U_Combining_Ogonek"] = 808] = "U_Combining_Ogonek"; + CharCode[CharCode["U_Combining_Vertical_Line_Below"] = 809] = "U_Combining_Vertical_Line_Below"; + CharCode[CharCode["U_Combining_Bridge_Below"] = 810] = "U_Combining_Bridge_Below"; + CharCode[CharCode["U_Combining_Inverted_Double_Arch_Below"] = 811] = "U_Combining_Inverted_Double_Arch_Below"; + CharCode[CharCode["U_Combining_Caron_Below"] = 812] = "U_Combining_Caron_Below"; + CharCode[CharCode["U_Combining_Circumflex_Accent_Below"] = 813] = "U_Combining_Circumflex_Accent_Below"; + CharCode[CharCode["U_Combining_Breve_Below"] = 814] = "U_Combining_Breve_Below"; + CharCode[CharCode["U_Combining_Inverted_Breve_Below"] = 815] = "U_Combining_Inverted_Breve_Below"; + CharCode[CharCode["U_Combining_Tilde_Below"] = 816] = "U_Combining_Tilde_Below"; + CharCode[CharCode["U_Combining_Macron_Below"] = 817] = "U_Combining_Macron_Below"; + CharCode[CharCode["U_Combining_Low_Line"] = 818] = "U_Combining_Low_Line"; + CharCode[CharCode["U_Combining_Double_Low_Line"] = 819] = "U_Combining_Double_Low_Line"; + CharCode[CharCode["U_Combining_Tilde_Overlay"] = 820] = "U_Combining_Tilde_Overlay"; + CharCode[CharCode["U_Combining_Short_Stroke_Overlay"] = 821] = "U_Combining_Short_Stroke_Overlay"; + CharCode[CharCode["U_Combining_Long_Stroke_Overlay"] = 822] = "U_Combining_Long_Stroke_Overlay"; + CharCode[CharCode["U_Combining_Short_Solidus_Overlay"] = 823] = "U_Combining_Short_Solidus_Overlay"; + CharCode[CharCode["U_Combining_Long_Solidus_Overlay"] = 824] = "U_Combining_Long_Solidus_Overlay"; + CharCode[CharCode["U_Combining_Right_Half_Ring_Below"] = 825] = "U_Combining_Right_Half_Ring_Below"; + CharCode[CharCode["U_Combining_Inverted_Bridge_Below"] = 826] = "U_Combining_Inverted_Bridge_Below"; + CharCode[CharCode["U_Combining_Square_Below"] = 827] = "U_Combining_Square_Below"; + CharCode[CharCode["U_Combining_Seagull_Below"] = 828] = "U_Combining_Seagull_Below"; + CharCode[CharCode["U_Combining_X_Above"] = 829] = "U_Combining_X_Above"; + CharCode[CharCode["U_Combining_Vertical_Tilde"] = 830] = "U_Combining_Vertical_Tilde"; + CharCode[CharCode["U_Combining_Double_Overline"] = 831] = "U_Combining_Double_Overline"; + CharCode[CharCode["U_Combining_Grave_Tone_Mark"] = 832] = "U_Combining_Grave_Tone_Mark"; + CharCode[CharCode["U_Combining_Acute_Tone_Mark"] = 833] = "U_Combining_Acute_Tone_Mark"; + CharCode[CharCode["U_Combining_Greek_Perispomeni"] = 834] = "U_Combining_Greek_Perispomeni"; + CharCode[CharCode["U_Combining_Greek_Koronis"] = 835] = "U_Combining_Greek_Koronis"; + CharCode[CharCode["U_Combining_Greek_Dialytika_Tonos"] = 836] = "U_Combining_Greek_Dialytika_Tonos"; + CharCode[CharCode["U_Combining_Greek_Ypogegrammeni"] = 837] = "U_Combining_Greek_Ypogegrammeni"; + CharCode[CharCode["U_Combining_Bridge_Above"] = 838] = "U_Combining_Bridge_Above"; + CharCode[CharCode["U_Combining_Equals_Sign_Below"] = 839] = "U_Combining_Equals_Sign_Below"; + CharCode[CharCode["U_Combining_Double_Vertical_Line_Below"] = 840] = "U_Combining_Double_Vertical_Line_Below"; + CharCode[CharCode["U_Combining_Left_Angle_Below"] = 841] = "U_Combining_Left_Angle_Below"; + CharCode[CharCode["U_Combining_Not_Tilde_Above"] = 842] = "U_Combining_Not_Tilde_Above"; + CharCode[CharCode["U_Combining_Homothetic_Above"] = 843] = "U_Combining_Homothetic_Above"; + CharCode[CharCode["U_Combining_Almost_Equal_To_Above"] = 844] = "U_Combining_Almost_Equal_To_Above"; + CharCode[CharCode["U_Combining_Left_Right_Arrow_Below"] = 845] = "U_Combining_Left_Right_Arrow_Below"; + CharCode[CharCode["U_Combining_Upwards_Arrow_Below"] = 846] = "U_Combining_Upwards_Arrow_Below"; + CharCode[CharCode["U_Combining_Grapheme_Joiner"] = 847] = "U_Combining_Grapheme_Joiner"; + CharCode[CharCode["U_Combining_Right_Arrowhead_Above"] = 848] = "U_Combining_Right_Arrowhead_Above"; + CharCode[CharCode["U_Combining_Left_Half_Ring_Above"] = 849] = "U_Combining_Left_Half_Ring_Above"; + CharCode[CharCode["U_Combining_Fermata"] = 850] = "U_Combining_Fermata"; + CharCode[CharCode["U_Combining_X_Below"] = 851] = "U_Combining_X_Below"; + CharCode[CharCode["U_Combining_Left_Arrowhead_Below"] = 852] = "U_Combining_Left_Arrowhead_Below"; + CharCode[CharCode["U_Combining_Right_Arrowhead_Below"] = 853] = "U_Combining_Right_Arrowhead_Below"; + CharCode[CharCode["U_Combining_Right_Arrowhead_And_Up_Arrowhead_Below"] = 854] = "U_Combining_Right_Arrowhead_And_Up_Arrowhead_Below"; + CharCode[CharCode["U_Combining_Right_Half_Ring_Above"] = 855] = "U_Combining_Right_Half_Ring_Above"; + CharCode[CharCode["U_Combining_Dot_Above_Right"] = 856] = "U_Combining_Dot_Above_Right"; + CharCode[CharCode["U_Combining_Asterisk_Below"] = 857] = "U_Combining_Asterisk_Below"; + CharCode[CharCode["U_Combining_Double_Ring_Below"] = 858] = "U_Combining_Double_Ring_Below"; + CharCode[CharCode["U_Combining_Zigzag_Above"] = 859] = "U_Combining_Zigzag_Above"; + CharCode[CharCode["U_Combining_Double_Breve_Below"] = 860] = "U_Combining_Double_Breve_Below"; + CharCode[CharCode["U_Combining_Double_Breve"] = 861] = "U_Combining_Double_Breve"; + CharCode[CharCode["U_Combining_Double_Macron"] = 862] = "U_Combining_Double_Macron"; + CharCode[CharCode["U_Combining_Double_Macron_Below"] = 863] = "U_Combining_Double_Macron_Below"; + CharCode[CharCode["U_Combining_Double_Tilde"] = 864] = "U_Combining_Double_Tilde"; + CharCode[CharCode["U_Combining_Double_Inverted_Breve"] = 865] = "U_Combining_Double_Inverted_Breve"; + CharCode[CharCode["U_Combining_Double_Rightwards_Arrow_Below"] = 866] = "U_Combining_Double_Rightwards_Arrow_Below"; + CharCode[CharCode["U_Combining_Latin_Small_Letter_A"] = 867] = "U_Combining_Latin_Small_Letter_A"; + CharCode[CharCode["U_Combining_Latin_Small_Letter_E"] = 868] = "U_Combining_Latin_Small_Letter_E"; + CharCode[CharCode["U_Combining_Latin_Small_Letter_I"] = 869] = "U_Combining_Latin_Small_Letter_I"; + CharCode[CharCode["U_Combining_Latin_Small_Letter_O"] = 870] = "U_Combining_Latin_Small_Letter_O"; + CharCode[CharCode["U_Combining_Latin_Small_Letter_U"] = 871] = "U_Combining_Latin_Small_Letter_U"; + CharCode[CharCode["U_Combining_Latin_Small_Letter_C"] = 872] = "U_Combining_Latin_Small_Letter_C"; + CharCode[CharCode["U_Combining_Latin_Small_Letter_D"] = 873] = "U_Combining_Latin_Small_Letter_D"; + CharCode[CharCode["U_Combining_Latin_Small_Letter_H"] = 874] = "U_Combining_Latin_Small_Letter_H"; + CharCode[CharCode["U_Combining_Latin_Small_Letter_M"] = 875] = "U_Combining_Latin_Small_Letter_M"; + CharCode[CharCode["U_Combining_Latin_Small_Letter_R"] = 876] = "U_Combining_Latin_Small_Letter_R"; + CharCode[CharCode["U_Combining_Latin_Small_Letter_T"] = 877] = "U_Combining_Latin_Small_Letter_T"; + CharCode[CharCode["U_Combining_Latin_Small_Letter_V"] = 878] = "U_Combining_Latin_Small_Letter_V"; + CharCode[CharCode["U_Combining_Latin_Small_Letter_X"] = 879] = "U_Combining_Latin_Small_Letter_X"; + /** + * Unicode Character 'LINE SEPARATOR' (U+2028) + * http://www.fileformat.info/info/unicode/char/2028/index.htm + */ + CharCode[CharCode["LINE_SEPARATOR_2028"] = 8232] = "LINE_SEPARATOR_2028"; + // http://www.fileformat.info/info/unicode/category/Sk/list.htm + CharCode[CharCode["U_CIRCUMFLEX"] = 94] = "U_CIRCUMFLEX"; + CharCode[CharCode["U_GRAVE_ACCENT"] = 96] = "U_GRAVE_ACCENT"; + CharCode[CharCode["U_DIAERESIS"] = 168] = "U_DIAERESIS"; + CharCode[CharCode["U_MACRON"] = 175] = "U_MACRON"; + CharCode[CharCode["U_ACUTE_ACCENT"] = 180] = "U_ACUTE_ACCENT"; + CharCode[CharCode["U_CEDILLA"] = 184] = "U_CEDILLA"; + CharCode[CharCode["U_MODIFIER_LETTER_LEFT_ARROWHEAD"] = 706] = "U_MODIFIER_LETTER_LEFT_ARROWHEAD"; + CharCode[CharCode["U_MODIFIER_LETTER_RIGHT_ARROWHEAD"] = 707] = "U_MODIFIER_LETTER_RIGHT_ARROWHEAD"; + CharCode[CharCode["U_MODIFIER_LETTER_UP_ARROWHEAD"] = 708] = "U_MODIFIER_LETTER_UP_ARROWHEAD"; + CharCode[CharCode["U_MODIFIER_LETTER_DOWN_ARROWHEAD"] = 709] = "U_MODIFIER_LETTER_DOWN_ARROWHEAD"; + CharCode[CharCode["U_MODIFIER_LETTER_CENTRED_RIGHT_HALF_RING"] = 722] = "U_MODIFIER_LETTER_CENTRED_RIGHT_HALF_RING"; + CharCode[CharCode["U_MODIFIER_LETTER_CENTRED_LEFT_HALF_RING"] = 723] = "U_MODIFIER_LETTER_CENTRED_LEFT_HALF_RING"; + CharCode[CharCode["U_MODIFIER_LETTER_UP_TACK"] = 724] = "U_MODIFIER_LETTER_UP_TACK"; + CharCode[CharCode["U_MODIFIER_LETTER_DOWN_TACK"] = 725] = "U_MODIFIER_LETTER_DOWN_TACK"; + CharCode[CharCode["U_MODIFIER_LETTER_PLUS_SIGN"] = 726] = "U_MODIFIER_LETTER_PLUS_SIGN"; + CharCode[CharCode["U_MODIFIER_LETTER_MINUS_SIGN"] = 727] = "U_MODIFIER_LETTER_MINUS_SIGN"; + CharCode[CharCode["U_BREVE"] = 728] = "U_BREVE"; + CharCode[CharCode["U_DOT_ABOVE"] = 729] = "U_DOT_ABOVE"; + CharCode[CharCode["U_RING_ABOVE"] = 730] = "U_RING_ABOVE"; + CharCode[CharCode["U_OGONEK"] = 731] = "U_OGONEK"; + CharCode[CharCode["U_SMALL_TILDE"] = 732] = "U_SMALL_TILDE"; + CharCode[CharCode["U_DOUBLE_ACUTE_ACCENT"] = 733] = "U_DOUBLE_ACUTE_ACCENT"; + CharCode[CharCode["U_MODIFIER_LETTER_RHOTIC_HOOK"] = 734] = "U_MODIFIER_LETTER_RHOTIC_HOOK"; + CharCode[CharCode["U_MODIFIER_LETTER_CROSS_ACCENT"] = 735] = "U_MODIFIER_LETTER_CROSS_ACCENT"; + CharCode[CharCode["U_MODIFIER_LETTER_EXTRA_HIGH_TONE_BAR"] = 741] = "U_MODIFIER_LETTER_EXTRA_HIGH_TONE_BAR"; + CharCode[CharCode["U_MODIFIER_LETTER_HIGH_TONE_BAR"] = 742] = "U_MODIFIER_LETTER_HIGH_TONE_BAR"; + CharCode[CharCode["U_MODIFIER_LETTER_MID_TONE_BAR"] = 743] = "U_MODIFIER_LETTER_MID_TONE_BAR"; + CharCode[CharCode["U_MODIFIER_LETTER_LOW_TONE_BAR"] = 744] = "U_MODIFIER_LETTER_LOW_TONE_BAR"; + CharCode[CharCode["U_MODIFIER_LETTER_EXTRA_LOW_TONE_BAR"] = 745] = "U_MODIFIER_LETTER_EXTRA_LOW_TONE_BAR"; + CharCode[CharCode["U_MODIFIER_LETTER_YIN_DEPARTING_TONE_MARK"] = 746] = "U_MODIFIER_LETTER_YIN_DEPARTING_TONE_MARK"; + CharCode[CharCode["U_MODIFIER_LETTER_YANG_DEPARTING_TONE_MARK"] = 747] = "U_MODIFIER_LETTER_YANG_DEPARTING_TONE_MARK"; + CharCode[CharCode["U_MODIFIER_LETTER_UNASPIRATED"] = 749] = "U_MODIFIER_LETTER_UNASPIRATED"; + CharCode[CharCode["U_MODIFIER_LETTER_LOW_DOWN_ARROWHEAD"] = 751] = "U_MODIFIER_LETTER_LOW_DOWN_ARROWHEAD"; + CharCode[CharCode["U_MODIFIER_LETTER_LOW_UP_ARROWHEAD"] = 752] = "U_MODIFIER_LETTER_LOW_UP_ARROWHEAD"; + CharCode[CharCode["U_MODIFIER_LETTER_LOW_LEFT_ARROWHEAD"] = 753] = "U_MODIFIER_LETTER_LOW_LEFT_ARROWHEAD"; + CharCode[CharCode["U_MODIFIER_LETTER_LOW_RIGHT_ARROWHEAD"] = 754] = "U_MODIFIER_LETTER_LOW_RIGHT_ARROWHEAD"; + CharCode[CharCode["U_MODIFIER_LETTER_LOW_RING"] = 755] = "U_MODIFIER_LETTER_LOW_RING"; + CharCode[CharCode["U_MODIFIER_LETTER_MIDDLE_GRAVE_ACCENT"] = 756] = "U_MODIFIER_LETTER_MIDDLE_GRAVE_ACCENT"; + CharCode[CharCode["U_MODIFIER_LETTER_MIDDLE_DOUBLE_GRAVE_ACCENT"] = 757] = "U_MODIFIER_LETTER_MIDDLE_DOUBLE_GRAVE_ACCENT"; + CharCode[CharCode["U_MODIFIER_LETTER_MIDDLE_DOUBLE_ACUTE_ACCENT"] = 758] = "U_MODIFIER_LETTER_MIDDLE_DOUBLE_ACUTE_ACCENT"; + CharCode[CharCode["U_MODIFIER_LETTER_LOW_TILDE"] = 759] = "U_MODIFIER_LETTER_LOW_TILDE"; + CharCode[CharCode["U_MODIFIER_LETTER_RAISED_COLON"] = 760] = "U_MODIFIER_LETTER_RAISED_COLON"; + CharCode[CharCode["U_MODIFIER_LETTER_BEGIN_HIGH_TONE"] = 761] = "U_MODIFIER_LETTER_BEGIN_HIGH_TONE"; + CharCode[CharCode["U_MODIFIER_LETTER_END_HIGH_TONE"] = 762] = "U_MODIFIER_LETTER_END_HIGH_TONE"; + CharCode[CharCode["U_MODIFIER_LETTER_BEGIN_LOW_TONE"] = 763] = "U_MODIFIER_LETTER_BEGIN_LOW_TONE"; + CharCode[CharCode["U_MODIFIER_LETTER_END_LOW_TONE"] = 764] = "U_MODIFIER_LETTER_END_LOW_TONE"; + CharCode[CharCode["U_MODIFIER_LETTER_SHELF"] = 765] = "U_MODIFIER_LETTER_SHELF"; + CharCode[CharCode["U_MODIFIER_LETTER_OPEN_SHELF"] = 766] = "U_MODIFIER_LETTER_OPEN_SHELF"; + CharCode[CharCode["U_MODIFIER_LETTER_LOW_LEFT_ARROW"] = 767] = "U_MODIFIER_LETTER_LOW_LEFT_ARROW"; + CharCode[CharCode["U_GREEK_LOWER_NUMERAL_SIGN"] = 885] = "U_GREEK_LOWER_NUMERAL_SIGN"; + CharCode[CharCode["U_GREEK_TONOS"] = 900] = "U_GREEK_TONOS"; + CharCode[CharCode["U_GREEK_DIALYTIKA_TONOS"] = 901] = "U_GREEK_DIALYTIKA_TONOS"; + CharCode[CharCode["U_GREEK_KORONIS"] = 8125] = "U_GREEK_KORONIS"; + CharCode[CharCode["U_GREEK_PSILI"] = 8127] = "U_GREEK_PSILI"; + CharCode[CharCode["U_GREEK_PERISPOMENI"] = 8128] = "U_GREEK_PERISPOMENI"; + CharCode[CharCode["U_GREEK_DIALYTIKA_AND_PERISPOMENI"] = 8129] = "U_GREEK_DIALYTIKA_AND_PERISPOMENI"; + CharCode[CharCode["U_GREEK_PSILI_AND_VARIA"] = 8141] = "U_GREEK_PSILI_AND_VARIA"; + CharCode[CharCode["U_GREEK_PSILI_AND_OXIA"] = 8142] = "U_GREEK_PSILI_AND_OXIA"; + CharCode[CharCode["U_GREEK_PSILI_AND_PERISPOMENI"] = 8143] = "U_GREEK_PSILI_AND_PERISPOMENI"; + CharCode[CharCode["U_GREEK_DASIA_AND_VARIA"] = 8157] = "U_GREEK_DASIA_AND_VARIA"; + CharCode[CharCode["U_GREEK_DASIA_AND_OXIA"] = 8158] = "U_GREEK_DASIA_AND_OXIA"; + CharCode[CharCode["U_GREEK_DASIA_AND_PERISPOMENI"] = 8159] = "U_GREEK_DASIA_AND_PERISPOMENI"; + CharCode[CharCode["U_GREEK_DIALYTIKA_AND_VARIA"] = 8173] = "U_GREEK_DIALYTIKA_AND_VARIA"; + CharCode[CharCode["U_GREEK_DIALYTIKA_AND_OXIA"] = 8174] = "U_GREEK_DIALYTIKA_AND_OXIA"; + CharCode[CharCode["U_GREEK_VARIA"] = 8175] = "U_GREEK_VARIA"; + CharCode[CharCode["U_GREEK_OXIA"] = 8189] = "U_GREEK_OXIA"; + CharCode[CharCode["U_GREEK_DASIA"] = 8190] = "U_GREEK_DASIA"; + CharCode[CharCode["U_OVERLINE"] = 8254] = "U_OVERLINE"; + /** + * UTF-8 BOM + * Unicode Character 'ZERO WIDTH NO-BREAK SPACE' (U+FEFF) + * http://www.fileformat.info/info/unicode/char/feff/index.htm + */ + CharCode[CharCode["UTF8_BOM"] = 65279] = "UTF8_BOM"; +})(CharCode || (CharCode = {})); //# sourceMappingURL=charCode.js.map \ No newline at end of file diff --git a/packages/core/dist/charCode.js.map b/packages/core/dist/charCode.js.map index 06dc6bf3..c7bca9c7 100644 --- a/packages/core/dist/charCode.js.map +++ b/packages/core/dist/charCode.js.map @@ -1 +1 @@ -{"version":3,"file":"charCode.js","sourceRoot":"","sources":["../src/charCode.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"charCode.js","sourceRoot":"","sources":["../src/charCode.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/dist/collections.d.ts b/packages/core/dist/collections.d.ts index 2fde39d0..77b7650c 100644 --- a/packages/core/dist/collections.d.ts +++ b/packages/core/dist/collections.d.ts @@ -1,47 +1,47 @@ -/** - * An interface for a JavaScript object that - * acts a dictionary. The keys are strings. - */ -export type IStringDictionary = Record; -/** - * An interface for a JavaScript object that - * acts a dictionary. The keys are numbers. - */ -export type INumberDictionary = Record; -/** - * Groups the collection into a dictionary based on the provided - * group function. - */ -export declare function groupBy(data: V[], groupFn: (element: V) => K): Record; -export declare function diffSets(before: ReadonlySet, after: ReadonlySet): { - removed: T[]; - added: T[]; -}; -export declare function diffMaps(before: Map, after: Map): { - removed: V[]; - added: V[]; -}; -/** - * Computes the intersection of two sets. - * - * @param setA - The first set. - * @param setB - The second iterable. - * @returns A new set containing the elements that are in both `setA` and `setB`. - */ -export declare function intersection(setA: Set, setB: Iterable): Set; -export declare class SetWithKey implements Set { - private toKey; - private _map; - constructor(values: T[], toKey: (t: T) => unknown); - get size(): number; - add(value: T): this; - delete(value: T): boolean; - has(value: T): boolean; - entries(): IterableIterator<[T, T]>; - keys(): IterableIterator; - values(): IterableIterator; - clear(): void; - forEach(callbackfn: (value: T, value2: T, set: Set) => void, thisArg?: any): void; - [Symbol.iterator](): IterableIterator; - [Symbol.toStringTag]: string; -} +/** + * An interface for a JavaScript object that + * acts a dictionary. The keys are strings. + */ +export type IStringDictionary = Record; +/** + * An interface for a JavaScript object that + * acts a dictionary. The keys are numbers. + */ +export type INumberDictionary = Record; +/** + * Groups the collection into a dictionary based on the provided + * group function. + */ +export declare function groupBy(data: V[], groupFn: (element: V) => K): Record; +export declare function diffSets(before: ReadonlySet, after: ReadonlySet): { + removed: T[]; + added: T[]; +}; +export declare function diffMaps(before: Map, after: Map): { + removed: V[]; + added: V[]; +}; +/** + * Computes the intersection of two sets. + * + * @param setA - The first set. + * @param setB - The second iterable. + * @returns A new set containing the elements that are in both `setA` and `setB`. + */ +export declare function intersection(setA: Set, setB: Iterable): Set; +export declare class SetWithKey implements Set { + private toKey; + private _map; + constructor(values: T[], toKey: (t: T) => unknown); + get size(): number; + add(value: T): this; + delete(value: T): boolean; + has(value: T): boolean; + entries(): IterableIterator<[T, T]>; + keys(): IterableIterator; + values(): IterableIterator; + clear(): void; + forEach(callbackfn: (value: T, value2: T, set: Set) => void, thisArg?: any): void; + [Symbol.iterator](): IterableIterator; + [Symbol.toStringTag]: string; +} diff --git a/packages/core/dist/collections.js b/packages/core/dist/collections.js index b9208005..d12f2859 100644 --- a/packages/core/dist/collections.js +++ b/packages/core/dist/collections.js @@ -1,114 +1,114 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ -/** - * Groups the collection into a dictionary based on the provided - * group function. - */ -export function groupBy(data, groupFn) { - const result = Object.create(null); - for (const element of data) { - const key = groupFn(element); - let target = result[key]; - if (!target) { - target = result[key] = []; - } - target.push(element); - } - return result; -} -export function diffSets(before, after) { - const removed = []; - const added = []; - for (const element of before) { - if (!after.has(element)) { - removed.push(element); - } - } - for (const element of after) { - if (!before.has(element)) { - added.push(element); - } - } - return { removed, added }; -} -export function diffMaps(before, after) { - const removed = []; - const added = []; - for (const [index, value] of before) { - if (!after.has(index)) { - removed.push(value); - } - } - for (const [index, value] of after) { - if (!before.has(index)) { - added.push(value); - } - } - return { removed, added }; -} -/** - * Computes the intersection of two sets. - * - * @param setA - The first set. - * @param setB - The second iterable. - * @returns A new set containing the elements that are in both `setA` and `setB`. - */ -export function intersection(setA, setB) { - const result = new Set(); - for (const elem of setB) { - if (setA.has(elem)) { - result.add(elem); - } - } - return result; -} -export class SetWithKey { - toKey; - _map = new Map(); - constructor(values, toKey) { - this.toKey = toKey; - for (const value of values) { - this.add(value); - } - } - get size() { - return this._map.size; - } - add(value) { - const key = this.toKey(value); - this._map.set(key, value); - return this; - } - delete(value) { - return this._map.delete(this.toKey(value)); - } - has(value) { - return this._map.has(this.toKey(value)); - } - *entries() { - for (const entry of this._map.values()) { - yield [entry, entry]; - } - } - keys() { - return this.values(); - } - *values() { - for (const entry of this._map.values()) { - yield entry; - } - } - clear() { - this._map.clear(); - } - forEach(callbackfn, thisArg) { - this._map.forEach(entry => callbackfn.call(thisArg, entry, entry, this)); - } - [Symbol.iterator]() { - return this.values(); - } - [Symbol.toStringTag] = 'SetWithKey'; -} +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +/** + * Groups the collection into a dictionary based on the provided + * group function. + */ +export function groupBy(data, groupFn) { + const result = Object.create(null); + for (const element of data) { + const key = groupFn(element); + let target = result[key]; + if (!target) { + target = result[key] = []; + } + target.push(element); + } + return result; +} +export function diffSets(before, after) { + const removed = []; + const added = []; + for (const element of before) { + if (!after.has(element)) { + removed.push(element); + } + } + for (const element of after) { + if (!before.has(element)) { + added.push(element); + } + } + return { removed, added }; +} +export function diffMaps(before, after) { + const removed = []; + const added = []; + for (const [index, value] of before) { + if (!after.has(index)) { + removed.push(value); + } + } + for (const [index, value] of after) { + if (!before.has(index)) { + added.push(value); + } + } + return { removed, added }; +} +/** + * Computes the intersection of two sets. + * + * @param setA - The first set. + * @param setB - The second iterable. + * @returns A new set containing the elements that are in both `setA` and `setB`. + */ +export function intersection(setA, setB) { + const result = new Set(); + for (const elem of setB) { + if (setA.has(elem)) { + result.add(elem); + } + } + return result; +} +export class SetWithKey { + toKey; + _map = new Map(); + constructor(values, toKey) { + this.toKey = toKey; + for (const value of values) { + this.add(value); + } + } + get size() { + return this._map.size; + } + add(value) { + const key = this.toKey(value); + this._map.set(key, value); + return this; + } + delete(value) { + return this._map.delete(this.toKey(value)); + } + has(value) { + return this._map.has(this.toKey(value)); + } + *entries() { + for (const entry of this._map.values()) { + yield [entry, entry]; + } + } + keys() { + return this.values(); + } + *values() { + for (const entry of this._map.values()) { + yield entry; + } + } + clear() { + this._map.clear(); + } + forEach(callbackfn, thisArg) { + this._map.forEach(entry => callbackfn.call(thisArg, entry, entry, this)); + } + [Symbol.iterator]() { + return this.values(); + } + [Symbol.toStringTag] = 'SetWithKey'; +} //# sourceMappingURL=collections.js.map \ No newline at end of file diff --git a/packages/core/dist/collections.js.map b/packages/core/dist/collections.js.map index 233d8f47..028c944a 100644 --- a/packages/core/dist/collections.js.map +++ b/packages/core/dist/collections.js.map @@ -1 +1 @@ -{"version":3,"file":"collections.js","sourceRoot":"","sources":["../src/collections.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAchG;;;GAGG;AACH,MAAM,UAAU,OAAO,CAAwC,IAAS,EAAE,OAA0B;IACnG,MAAM,MAAM,GAAmB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACnD,KAAK,MAAM,OAAO,IAAI,IAAI,EAAE;QAC3B,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;QAC7B,IAAI,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QACzB,IAAI,CAAC,MAAM,EAAE;YACZ,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;SAC1B;QACD,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACrB;IACD,OAAO,MAAM,CAAC;AACf,CAAC;AAED,MAAM,UAAU,QAAQ,CAAI,MAAsB,EAAE,KAAqB;IACxE,MAAM,OAAO,GAAQ,EAAE,CAAC;IACxB,MAAM,KAAK,GAAQ,EAAE,CAAC;IACtB,KAAK,MAAM,OAAO,IAAI,MAAM,EAAE;QAC7B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;YACxB,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SACtB;KACD;IACD,KAAK,MAAM,OAAO,IAAI,KAAK,EAAE;QAC5B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;YACzB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SACpB;KACD;IACD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,QAAQ,CAAO,MAAiB,EAAE,KAAgB;IACjE,MAAM,OAAO,GAAQ,EAAE,CAAC;IACxB,MAAM,KAAK,GAAQ,EAAE,CAAC;IACtB,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,MAAM,EAAE;QACpC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;YACtB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACpB;KACD;IACD,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,KAAK,EAAE;QACnC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;YACvB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAClB;KACD;IACD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AAC3B,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAAI,IAAY,EAAE,IAAiB;IAC9D,MAAM,MAAM,GAAG,IAAI,GAAG,EAAK,CAAC;IAC5B,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE;QACxB,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YACnB,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;SACjB;KACD;IACD,OAAO,MAAM,CAAC;AACf,CAAC;AAED,MAAM,OAAO,UAAU;IAGW;IAFzB,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAEjC,YAAY,MAAW,EAAU,KAAwB;QAAxB,UAAK,GAAL,KAAK,CAAmB;QACxD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;YAC3B,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;SAChB;IACF,CAAC;IAED,IAAI,IAAI;QACP,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;IACvB,CAAC;IAED,GAAG,CAAC,KAAQ;QACX,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC9B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC1B,OAAO,IAAI,CAAC;IACb,CAAC;IAED,MAAM,CAAC,KAAQ;QACd,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IAC5C,CAAC;IAED,GAAG,CAAC,KAAQ;QACX,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IACzC,CAAC;IAED,CAAC,OAAO;QACP,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE;YACvC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;SACrB;IACF,CAAC;IAED,IAAI;QACH,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;IACtB,CAAC;IAED,CAAC,MAAM;QACN,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE;YACvC,MAAM,KAAK,CAAC;SACZ;IACF,CAAC;IAED,KAAK;QACJ,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;IACnB,CAAC;IAED,OAAO,CAAC,UAAsD,EAAE,OAAa;QAC5E,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;IAC1E,CAAC;IAED,CAAC,MAAM,CAAC,QAAQ,CAAC;QAChB,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;IACtB,CAAC;IAED,CAAC,MAAM,CAAC,WAAW,CAAC,GAAW,YAAY,CAAC;CAC5C"} \ No newline at end of file +{"version":3,"file":"collections.js","sourceRoot":"","sources":["../src/collections.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/dist/constants.d.ts b/packages/core/dist/constants.d.ts index cfd4a271..c462902a 100644 --- a/packages/core/dist/constants.d.ts +++ b/packages/core/dist/constants.d.ts @@ -1,2 +1,2 @@ -export declare const REGEX_VAR: RegExp; -export declare const REGEX_VAR_ALT: RegExp; +export declare const REGEX_VAR: RegExp; +export declare const REGEX_VAR_ALT: RegExp; diff --git a/packages/core/dist/constants.js b/packages/core/dist/constants.js index 5a6047a7..d9c75759 100644 --- a/packages/core/dist/constants.js +++ b/packages/core/dist/constants.js @@ -1,6 +1,6 @@ -// standard expression for variables, eg : ${foo} -export const REGEX_VAR = /\$\{([^\s:}]+)(?::([^\s:}]+))?\}/g; -// alternate expression for variables, eg : %{foo}. this is required -// to deal with parent expression parsers where '$' is reserved, eg: %{my_var} -export const REGEX_VAR_ALT = /&\{([^\s:}]+)(?::([^\s:}]+))?\}/g; +// standard expression for variables, eg : ${foo} +export const REGEX_VAR = /\$\{([^\s:}]+)(?::([^\s:}]+))?\}/g; +// alternate expression for variables, eg : %{foo}. this is required +// to deal with parent expression parsers where '$' is reserved, eg: %{my_var} +export const REGEX_VAR_ALT = /&\{([^\s:}]+)(?::([^\s:}]+))?\}/g; //# sourceMappingURL=constants.js.map \ No newline at end of file diff --git a/packages/core/dist/equals.d.ts b/packages/core/dist/equals.d.ts index 433bacec..1087a79a 100644 --- a/packages/core/dist/equals.d.ts +++ b/packages/core/dist/equals.d.ts @@ -1,37 +1,37 @@ -export type EqualityComparer = (a: T, b: T) => boolean; -/** - * Compares two items for equality using strict equality. -*/ -export declare const strictEquals: EqualityComparer; -/** - * Checks if the items of two arrays are equal. - * By default, strict equality is used to compare elements, but a custom equality comparer can be provided. - */ -export declare function itemsEquals(itemEquals?: EqualityComparer): EqualityComparer; -/** - * Two items are considered equal, if their stringified representations are equal. -*/ -export declare function jsonStringifyEquals(): EqualityComparer; -/** - * Uses `item.equals(other)` to determine equality. - */ -export declare function itemEquals(): EqualityComparer; -/** - * Checks if two items are both null or undefined, or are equal according to the provided equality comparer. -*/ -export declare function equalsIfDefined(v1: T | undefined | null, v2: T | undefined | null, equals: EqualityComparer): boolean; -/** - * Returns an equality comparer that checks if two items are both null or undefined, or are equal according to the provided equality comparer. -*/ -export declare function equalsIfDefined(equals: EqualityComparer): EqualityComparer; -/** - * Drills into arrays (items ordered) and objects (keys unordered) and uses strict equality on everything else. -*/ -export declare function structuralEquals(a: T, b: T): boolean; -/** - * `getStructuralKey(a) === getStructuralKey(b) <=> structuralEquals(a, b)` - * (assuming that a and b are not cyclic structures and nothing extends globalThis Array). -*/ -export declare function getStructuralKey(t: unknown): string; +export type EqualityComparer = (a: T, b: T) => boolean; +/** + * Compares two items for equality using strict equality. +*/ +export declare const strictEquals: EqualityComparer; +/** + * Checks if the items of two arrays are equal. + * By default, strict equality is used to compare elements, but a custom equality comparer can be provided. + */ +export declare function itemsEquals(itemEquals?: EqualityComparer): EqualityComparer; +/** + * Two items are considered equal, if their stringified representations are equal. +*/ +export declare function jsonStringifyEquals(): EqualityComparer; +/** + * Uses `item.equals(other)` to determine equality. + */ +export declare function itemEquals(): EqualityComparer; +/** + * Checks if two items are both null or undefined, or are equal according to the provided equality comparer. +*/ +export declare function equalsIfDefined(v1: T | undefined | null, v2: T | undefined | null, equals: EqualityComparer): boolean; +/** + * Returns an equality comparer that checks if two items are both null or undefined, or are equal according to the provided equality comparer. +*/ +export declare function equalsIfDefined(equals: EqualityComparer): EqualityComparer; +/** + * Drills into arrays (items ordered) and objects (keys unordered) and uses strict equality on everything else. +*/ +export declare function structuralEquals(a: T, b: T): boolean; +/** + * `getStructuralKey(a) === getStructuralKey(b) <=> structuralEquals(a, b)` + * (assuming that a and b are not cyclic structures and nothing extends globalThis Array). +*/ +export declare function getStructuralKey(t: unknown): string; diff --git a/packages/core/dist/equals.js b/packages/core/dist/equals.js index 4a9c467b..1fbbb56f 100644 --- a/packages/core/dist/equals.js +++ b/packages/core/dist/equals.js @@ -1,122 +1,122 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ -import * as arrays from './arrays.js'; -/** - * Compares two items for equality using strict equality. -*/ -export const strictEquals = (a, b) => a === b; -/** - * Checks if the items of two arrays are equal. - * By default, strict equality is used to compare elements, but a custom equality comparer can be provided. - */ -export function itemsEquals(itemEquals = strictEquals) { - return (a, b) => arrays.equals(a, b, itemEquals); -} -/** - * Two items are considered equal, if their stringified representations are equal. -*/ -export function jsonStringifyEquals() { - return (a, b) => JSON.stringify(a) === JSON.stringify(b); -} -/** - * Uses `item.equals(other)` to determine equality. - */ -export function itemEquals() { - return (a, b) => a.equals(b); -} -export function equalsIfDefined(equalsOrV1, v2, equals) { - if (equals !== undefined) { - const v1 = equalsOrV1; - if (v1 === undefined || v1 === null || v2 === undefined || v2 === null) { - return v2 === v1; - } - return equals(v1, v2); - } - else { - const equals = equalsOrV1; - return (v1, v2) => { - if (v1 === undefined || v1 === null || v2 === undefined || v2 === null) { - return v2 === v1; - } - return equals(v1, v2); - }; - } -} -/** - * Drills into arrays (items ordered) and objects (keys unordered) and uses strict equality on everything else. -*/ -export function structuralEquals(a, b) { - if (a === b) { - return true; - } - if (Array.isArray(a) && Array.isArray(b)) { - if (a.length !== b.length) { - return false; - } - for (let i = 0; i < a.length; i++) { - if (!structuralEquals(a[i], b[i])) { - return false; - } - } - return true; - } - if (a && typeof a === 'object' && b && typeof b === 'object') { - if (Object.getPrototypeOf(a) === Object.prototype && Object.getPrototypeOf(b) === Object.prototype) { - const aObj = a; - const bObj = b; - const keysA = Object.keys(aObj); - const keysB = Object.keys(bObj); - const keysBSet = new Set(keysB); - if (keysA.length !== keysB.length) { - return false; - } - for (const key of keysA) { - if (!keysBSet.has(key)) { - return false; - } - if (!structuralEquals(aObj[key], bObj[key])) { - return false; - } - } - return true; - } - } - return false; -} -/** - * `getStructuralKey(a) === getStructuralKey(b) <=> structuralEquals(a, b)` - * (assuming that a and b are not cyclic structures and nothing extends globalThis Array). -*/ -export function getStructuralKey(t) { - return JSON.stringify(toNormalizedJsonStructure(t)); -} -let objectId = 0; -const objIds = new WeakMap(); -function toNormalizedJsonStructure(t) { - if (Array.isArray(t)) { - return t.map(toNormalizedJsonStructure); - } - if (t && typeof t === 'object') { - if (Object.getPrototypeOf(t) === Object.prototype) { - const tObj = t; - const res = Object.create(null); - for (const key of Object.keys(tObj).sort()) { - res[key] = toNormalizedJsonStructure(tObj[key]); - } - return res; - } - else { - let objId = objIds.get(t); - if (objId === undefined) { - objId = objectId++; - objIds.set(t, objId); - } - // Random string to prevent collisions - return objId + '----2b76a038c20c4bcc'; - } - } - return t; -} +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +import * as arrays from './arrays.js'; +/** + * Compares two items for equality using strict equality. +*/ +export const strictEquals = (a, b) => a === b; +/** + * Checks if the items of two arrays are equal. + * By default, strict equality is used to compare elements, but a custom equality comparer can be provided. + */ +export function itemsEquals(itemEquals = strictEquals) { + return (a, b) => arrays.equals(a, b, itemEquals); +} +/** + * Two items are considered equal, if their stringified representations are equal. +*/ +export function jsonStringifyEquals() { + return (a, b) => JSON.stringify(a) === JSON.stringify(b); +} +/** + * Uses `item.equals(other)` to determine equality. + */ +export function itemEquals() { + return (a, b) => a.equals(b); +} +export function equalsIfDefined(equalsOrV1, v2, equals) { + if (equals !== undefined) { + const v1 = equalsOrV1; + if (v1 === undefined || v1 === null || v2 === undefined || v2 === null) { + return v2 === v1; + } + return equals(v1, v2); + } + else { + const equals = equalsOrV1; + return (v1, v2) => { + if (v1 === undefined || v1 === null || v2 === undefined || v2 === null) { + return v2 === v1; + } + return equals(v1, v2); + }; + } +} +/** + * Drills into arrays (items ordered) and objects (keys unordered) and uses strict equality on everything else. +*/ +export function structuralEquals(a, b) { + if (a === b) { + return true; + } + if (Array.isArray(a) && Array.isArray(b)) { + if (a.length !== b.length) { + return false; + } + for (let i = 0; i < a.length; i++) { + if (!structuralEquals(a[i], b[i])) { + return false; + } + } + return true; + } + if (a && typeof a === 'object' && b && typeof b === 'object') { + if (Object.getPrototypeOf(a) === Object.prototype && Object.getPrototypeOf(b) === Object.prototype) { + const aObj = a; + const bObj = b; + const keysA = Object.keys(aObj); + const keysB = Object.keys(bObj); + const keysBSet = new Set(keysB); + if (keysA.length !== keysB.length) { + return false; + } + for (const key of keysA) { + if (!keysBSet.has(key)) { + return false; + } + if (!structuralEquals(aObj[key], bObj[key])) { + return false; + } + } + return true; + } + } + return false; +} +/** + * `getStructuralKey(a) === getStructuralKey(b) <=> structuralEquals(a, b)` + * (assuming that a and b are not cyclic structures and nothing extends globalThis Array). +*/ +export function getStructuralKey(t) { + return JSON.stringify(toNormalizedJsonStructure(t)); +} +let objectId = 0; +const objIds = new WeakMap(); +function toNormalizedJsonStructure(t) { + if (Array.isArray(t)) { + return t.map(toNormalizedJsonStructure); + } + if (t && typeof t === 'object') { + if (Object.getPrototypeOf(t) === Object.prototype) { + const tObj = t; + const res = Object.create(null); + for (const key of Object.keys(tObj).sort()) { + res[key] = toNormalizedJsonStructure(tObj[key]); + } + return res; + } + else { + let objId = objIds.get(t); + if (objId === undefined) { + objId = objectId++; + objIds.set(t, objId); + } + // Random string to prevent collisions + return objId + '----2b76a038c20c4bcc'; + } + } + return t; +} //# sourceMappingURL=equals.js.map \ No newline at end of file diff --git a/packages/core/dist/equals.js.map b/packages/core/dist/equals.js.map index 76b4d94f..4057cbf3 100644 --- a/packages/core/dist/equals.js.map +++ b/packages/core/dist/equals.js.map @@ -1 +1 @@ -{"version":3,"file":"equals.js","sourceRoot":"","sources":["../src/equals.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"equals.js","sourceRoot":"","sources":["../src/equals.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/dist/errors.d.ts b/packages/core/dist/errors.d.ts index 80c2c1cb..abdd6449 100644 --- a/packages/core/dist/errors.d.ts +++ b/packages/core/dist/errors.d.ts @@ -1,107 +1,107 @@ -export interface ErrorListenerCallback { - (error: any): void; -} -export interface ErrorListenerUnbind { - (): void; -} -export declare class ErrorHandler { - private unexpectedErrorHandler; - private listeners; - constructor(); - addListener(listener: ErrorListenerCallback): ErrorListenerUnbind; - private emit; - private _removeListener; - setUnexpectedErrorHandler(newUnexpectedErrorHandler: (e: any) => void): void; - getUnexpectedErrorHandler(): (e: any) => void; - onUnexpectedError(e: any): void; - onUnexpectedExternalError(e: any): void; -} -export declare const errorHandler: ErrorHandler; -/** @skipMangle */ -export declare function setUnexpectedErrorHandler(newUnexpectedErrorHandler: (e: any) => void): void; -/** - * Returns if the error is a SIGPIPE error. SIGPIPE errors should generally be - * logged at most once, to avoid a loop. - * - * @see https://github.com/microsoft/vscode-remote-release/issues/6481 - */ -export declare function isSigPipeError(e: unknown): e is Error; -/** - * This function should only be called with errors that indicate a bug in the product. - * E.g. buggy extensions/invalid user-input/network issues should not be able to trigger this code path. - * If they are, this indicates there is also a bug in the product. -*/ -export declare function onBugIndicatingError(e: any): undefined; -export declare function onUnexpectedError(e: any): undefined; -export declare function onUnexpectedExternalError(e: any): undefined; -export interface SerializedError { - readonly $isError: true; - readonly name: string; - readonly message: string; - readonly stack: string; - readonly noTelemetry: boolean; - readonly code?: string; - readonly cause?: SerializedError; -} -export declare function transformErrorForSerialization(error: Error): SerializedError; -export declare function transformErrorForSerialization(error: any): any; -export declare function transformErrorFromSerialization(data: SerializedError): Error; -export interface V8CallSite { - getThis(): unknown; - getTypeName(): string | null; - getFunction(): Function | undefined; - getFunctionName(): string | null; - getMethodName(): string | null; - getFileName(): string | null; - getLineNumber(): number | null; - getColumnNumber(): number | null; - getEvalOrigin(): string | undefined; - isToplevel(): boolean; - isEval(): boolean; - isNative(): boolean; - isConstructor(): boolean; - toString(): string; -} -/** - * Checks if the given error is a promise in canceled state - */ -export declare function isCancellationError(error: any): boolean; -export declare class CancellationError extends Error { - constructor(); -} -/** - * @deprecated use {@link CancellationError `new CancellationError()`} instead - */ -export declare function canceled(): Error; -export declare function illegalArgument(name?: string): Error; -export declare function illegalState(name?: string): Error; -export declare class ReadonlyError extends TypeError { - constructor(name?: string); -} -export declare function getErrorMessage(err: any): string; -export declare class NotImplementedError extends Error { - constructor(message?: string); -} -export declare class NotSupportedError extends Error { - constructor(message?: string); -} -export declare class ExpectedError extends Error { - readonly isExpected = true; -} -/** - * Error that when thrown won't be logged in telemetry as an unhandled error. - */ -export declare class ErrorNoTelemetry extends Error { - readonly name: string; - constructor(msg?: string); - static fromError(err: Error): ErrorNoTelemetry; - static isErrorNoTelemetry(err: Error): err is ErrorNoTelemetry; -} -/** - * This error indicates a bug. - * Do not throw this for invalid user input. - * Only catch this error to recover gracefully from bugs. - */ -export declare class BugIndicatingError extends Error { - constructor(message?: string); -} +export interface ErrorListenerCallback { + (error: any): void; +} +export interface ErrorListenerUnbind { + (): void; +} +export declare class ErrorHandler { + private unexpectedErrorHandler; + private listeners; + constructor(); + addListener(listener: ErrorListenerCallback): ErrorListenerUnbind; + private emit; + private _removeListener; + setUnexpectedErrorHandler(newUnexpectedErrorHandler: (e: any) => void): void; + getUnexpectedErrorHandler(): (e: any) => void; + onUnexpectedError(e: any): void; + onUnexpectedExternalError(e: any): void; +} +export declare const errorHandler: ErrorHandler; +/** @skipMangle */ +export declare function setUnexpectedErrorHandler(newUnexpectedErrorHandler: (e: any) => void): void; +/** + * Returns if the error is a SIGPIPE error. SIGPIPE errors should generally be + * logged at most once, to avoid a loop. + * + * @see https://github.com/microsoft/vscode-remote-release/issues/6481 + */ +export declare function isSigPipeError(e: unknown): e is Error; +/** + * This function should only be called with errors that indicate a bug in the product. + * E.g. buggy extensions/invalid user-input/network issues should not be able to trigger this code path. + * If they are, this indicates there is also a bug in the product. +*/ +export declare function onBugIndicatingError(e: any): undefined; +export declare function onUnexpectedError(e: any): undefined; +export declare function onUnexpectedExternalError(e: any): undefined; +export interface SerializedError { + readonly $isError: true; + readonly name: string; + readonly message: string; + readonly stack: string; + readonly noTelemetry: boolean; + readonly code?: string; + readonly cause?: SerializedError; +} +export declare function transformErrorForSerialization(error: Error): SerializedError; +export declare function transformErrorForSerialization(error: any): any; +export declare function transformErrorFromSerialization(data: SerializedError): Error; +export interface V8CallSite { + getThis(): unknown; + getTypeName(): string | null; + getFunction(): Function | undefined; + getFunctionName(): string | null; + getMethodName(): string | null; + getFileName(): string | null; + getLineNumber(): number | null; + getColumnNumber(): number | null; + getEvalOrigin(): string | undefined; + isToplevel(): boolean; + isEval(): boolean; + isNative(): boolean; + isConstructor(): boolean; + toString(): string; +} +/** + * Checks if the given error is a promise in canceled state + */ +export declare function isCancellationError(error: any): boolean; +export declare class CancellationError extends Error { + constructor(); +} +/** + * @deprecated use {@link CancellationError `new CancellationError()`} instead + */ +export declare function canceled(): Error; +export declare function illegalArgument(name?: string): Error; +export declare function illegalState(name?: string): Error; +export declare class ReadonlyError extends TypeError { + constructor(name?: string); +} +export declare function getErrorMessage(err: any): string; +export declare class NotImplementedError extends Error { + constructor(message?: string); +} +export declare class NotSupportedError extends Error { + constructor(message?: string); +} +export declare class ExpectedError extends Error { + readonly isExpected = true; +} +/** + * Error that when thrown won't be logged in telemetry as an unhandled error. + */ +export declare class ErrorNoTelemetry extends Error { + readonly name: string; + constructor(msg?: string); + static fromError(err: Error): ErrorNoTelemetry; + static isErrorNoTelemetry(err: Error): err is ErrorNoTelemetry; +} +/** + * This error indicates a bug. + * Do not throw this for invalid user input. + * Only catch this error to recover gracefully from bugs. + */ +export declare class BugIndicatingError extends Error { + constructor(message?: string); +} diff --git a/packages/core/dist/errors.js b/packages/core/dist/errors.js index 72e68708..db669716 100644 --- a/packages/core/dist/errors.js +++ b/packages/core/dist/errors.js @@ -1,243 +1,243 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ -// Avoid circular dependency on EventEmitter by implementing a subset of the interface. -export class ErrorHandler { - unexpectedErrorHandler; - listeners; - constructor() { - this.listeners = []; - this.unexpectedErrorHandler = function (e) { - setTimeout(() => { - if (e.stack) { - if (ErrorNoTelemetry.isErrorNoTelemetry(e)) { - throw new ErrorNoTelemetry(e.message + '\n\n' + e.stack); - } - throw new Error(e.message + '\n\n' + e.stack); - } - throw e; - }, 0); - }; - } - addListener(listener) { - this.listeners.push(listener); - return () => { - this._removeListener(listener); - }; - } - emit(e) { - this.listeners.forEach((listener) => { - listener(e); - }); - } - _removeListener(listener) { - this.listeners.splice(this.listeners.indexOf(listener), 1); - } - setUnexpectedErrorHandler(newUnexpectedErrorHandler) { - this.unexpectedErrorHandler = newUnexpectedErrorHandler; - } - getUnexpectedErrorHandler() { - return this.unexpectedErrorHandler; - } - onUnexpectedError(e) { - this.unexpectedErrorHandler(e); - this.emit(e); - } - // For external errors, we don't want the listeners to be called - onUnexpectedExternalError(e) { - this.unexpectedErrorHandler(e); - } -} -export const errorHandler = new ErrorHandler(); -/** @skipMangle */ -export function setUnexpectedErrorHandler(newUnexpectedErrorHandler) { - errorHandler.setUnexpectedErrorHandler(newUnexpectedErrorHandler); -} -/** - * Returns if the error is a SIGPIPE error. SIGPIPE errors should generally be - * logged at most once, to avoid a loop. - * - * @see https://github.com/microsoft/vscode-remote-release/issues/6481 - */ -export function isSigPipeError(e) { - if (!e || typeof e !== 'object') { - return false; - } - const cast = e; - return cast.code === 'EPIPE' && cast.syscall?.toUpperCase() === 'WRITE'; -} -/** - * This function should only be called with errors that indicate a bug in the product. - * E.g. buggy extensions/invalid user-input/network issues should not be able to trigger this code path. - * If they are, this indicates there is also a bug in the product. -*/ -export function onBugIndicatingError(e) { - errorHandler.onUnexpectedError(e); - return undefined; -} -export function onUnexpectedError(e) { - // ignore errors from cancelled promises - if (!isCancellationError(e)) { - errorHandler.onUnexpectedError(e); - } - return undefined; -} -export function onUnexpectedExternalError(e) { - // ignore errors from cancelled promises - if (!isCancellationError(e)) { - errorHandler.onUnexpectedExternalError(e); - } - return undefined; -} -export function transformErrorForSerialization(error) { - if (error instanceof Error) { - const { name, message, cause } = error; - const stack = error.stacktrace || error.stack; - return { - $isError: true, - name, - message, - stack, - noTelemetry: ErrorNoTelemetry.isErrorNoTelemetry(error), - cause: cause ? transformErrorForSerialization(cause) : undefined, - code: error.code - }; - } - // return as is - return error; -} -export function transformErrorFromSerialization(data) { - let error; - if (data.noTelemetry) { - error = new ErrorNoTelemetry(); - } - else { - error = new Error(); - error.name = data.name; - } - error.message = data.message; - error.stack = data.stack; - if (data.code) { - error.code = data.code; - } - if (data.cause) { - error.cause = transformErrorFromSerialization(data.cause); - } - return error; -} -const canceledName = 'Canceled'; -/** - * Checks if the given error is a promise in canceled state - */ -export function isCancellationError(error) { - if (error instanceof CancellationError) { - return true; - } - return error instanceof Error && error.name === canceledName && error.message === canceledName; -} -// !!!IMPORTANT!!! -// Do NOT change this class because it is also used as an API-type. -export class CancellationError extends Error { - constructor() { - super(canceledName); - this.name = this.message; - } -} -/** - * @deprecated use {@link CancellationError `new CancellationError()`} instead - */ -export function canceled() { - const error = new Error(canceledName); - error.name = error.message; - return error; -} -export function illegalArgument(name) { - if (name) { - return new Error(`Illegal argument: ${name}`); - } - else { - return new Error('Illegal argument'); - } -} -export function illegalState(name) { - if (name) { - return new Error(`Illegal state: ${name}`); - } - else { - return new Error('Illegal state'); - } -} -export class ReadonlyError extends TypeError { - constructor(name) { - super(name ? `${name} is read-only and cannot be changed` : 'Cannot change read-only property'); - } -} -export function getErrorMessage(err) { - if (!err) { - return 'Error'; - } - if (err.message) { - return err.message; - } - if (err.stack) { - return err.stack.split('\n')[0]; - } - return String(err); -} -export class NotImplementedError extends Error { - constructor(message) { - super('NotImplemented'); - if (message) { - this.message = message; - } - } -} -export class NotSupportedError extends Error { - constructor(message) { - super('NotSupported'); - if (message) { - this.message = message; - } - } -} -export class ExpectedError extends Error { - isExpected = true; -} -/** - * Error that when thrown won't be logged in telemetry as an unhandled error. - */ -export class ErrorNoTelemetry extends Error { - name; - constructor(msg) { - super(msg); - this.name = 'CodeExpectedError'; - } - static fromError(err) { - if (err instanceof ErrorNoTelemetry) { - return err; - } - const result = new ErrorNoTelemetry(); - result.message = err.message; - result.stack = err.stack; - return result; - } - static isErrorNoTelemetry(err) { - return err.name === 'CodeExpectedError'; - } -} -/** - * This error indicates a bug. - * Do not throw this for invalid user input. - * Only catch this error to recover gracefully from bugs. - */ -export class BugIndicatingError extends Error { - constructor(message) { - super(message || 'An unexpected bug occurred.'); - Object.setPrototypeOf(this, BugIndicatingError.prototype); - // Because we know for sure only buggy code throws this, - // we definitely want to break here and fix the bug. - // debugger; - } -} +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +// Avoid circular dependency on EventEmitter by implementing a subset of the interface. +export class ErrorHandler { + unexpectedErrorHandler; + listeners; + constructor() { + this.listeners = []; + this.unexpectedErrorHandler = function (e) { + setTimeout(() => { + if (e.stack) { + if (ErrorNoTelemetry.isErrorNoTelemetry(e)) { + throw new ErrorNoTelemetry(e.message + '\n\n' + e.stack); + } + throw new Error(e.message + '\n\n' + e.stack); + } + throw e; + }, 0); + }; + } + addListener(listener) { + this.listeners.push(listener); + return () => { + this._removeListener(listener); + }; + } + emit(e) { + this.listeners.forEach((listener) => { + listener(e); + }); + } + _removeListener(listener) { + this.listeners.splice(this.listeners.indexOf(listener), 1); + } + setUnexpectedErrorHandler(newUnexpectedErrorHandler) { + this.unexpectedErrorHandler = newUnexpectedErrorHandler; + } + getUnexpectedErrorHandler() { + return this.unexpectedErrorHandler; + } + onUnexpectedError(e) { + this.unexpectedErrorHandler(e); + this.emit(e); + } + // For external errors, we don't want the listeners to be called + onUnexpectedExternalError(e) { + this.unexpectedErrorHandler(e); + } +} +export const errorHandler = new ErrorHandler(); +/** @skipMangle */ +export function setUnexpectedErrorHandler(newUnexpectedErrorHandler) { + errorHandler.setUnexpectedErrorHandler(newUnexpectedErrorHandler); +} +/** + * Returns if the error is a SIGPIPE error. SIGPIPE errors should generally be + * logged at most once, to avoid a loop. + * + * @see https://github.com/microsoft/vscode-remote-release/issues/6481 + */ +export function isSigPipeError(e) { + if (!e || typeof e !== 'object') { + return false; + } + const cast = e; + return cast.code === 'EPIPE' && cast.syscall?.toUpperCase() === 'WRITE'; +} +/** + * This function should only be called with errors that indicate a bug in the product. + * E.g. buggy extensions/invalid user-input/network issues should not be able to trigger this code path. + * If they are, this indicates there is also a bug in the product. +*/ +export function onBugIndicatingError(e) { + errorHandler.onUnexpectedError(e); + return undefined; +} +export function onUnexpectedError(e) { + // ignore errors from cancelled promises + if (!isCancellationError(e)) { + errorHandler.onUnexpectedError(e); + } + return undefined; +} +export function onUnexpectedExternalError(e) { + // ignore errors from cancelled promises + if (!isCancellationError(e)) { + errorHandler.onUnexpectedExternalError(e); + } + return undefined; +} +export function transformErrorForSerialization(error) { + if (error instanceof Error) { + const { name, message, cause } = error; + const stack = error.stacktrace || error.stack; + return { + $isError: true, + name, + message, + stack, + noTelemetry: ErrorNoTelemetry.isErrorNoTelemetry(error), + cause: cause ? transformErrorForSerialization(cause) : undefined, + code: error.code + }; + } + // return as is + return error; +} +export function transformErrorFromSerialization(data) { + let error; + if (data.noTelemetry) { + error = new ErrorNoTelemetry(); + } + else { + error = new Error(); + error.name = data.name; + } + error.message = data.message; + error.stack = data.stack; + if (data.code) { + error.code = data.code; + } + if (data.cause) { + error.cause = transformErrorFromSerialization(data.cause); + } + return error; +} +const canceledName = 'Canceled'; +/** + * Checks if the given error is a promise in canceled state + */ +export function isCancellationError(error) { + if (error instanceof CancellationError) { + return true; + } + return error instanceof Error && error.name === canceledName && error.message === canceledName; +} +// !!!IMPORTANT!!! +// Do NOT change this class because it is also used as an API-type. +export class CancellationError extends Error { + constructor() { + super(canceledName); + this.name = this.message; + } +} +/** + * @deprecated use {@link CancellationError `new CancellationError()`} instead + */ +export function canceled() { + const error = new Error(canceledName); + error.name = error.message; + return error; +} +export function illegalArgument(name) { + if (name) { + return new Error(`Illegal argument: ${name}`); + } + else { + return new Error('Illegal argument'); + } +} +export function illegalState(name) { + if (name) { + return new Error(`Illegal state: ${name}`); + } + else { + return new Error('Illegal state'); + } +} +export class ReadonlyError extends TypeError { + constructor(name) { + super(name ? `${name} is read-only and cannot be changed` : 'Cannot change read-only property'); + } +} +export function getErrorMessage(err) { + if (!err) { + return 'Error'; + } + if (err.message) { + return err.message; + } + if (err.stack) { + return err.stack.split('\n')[0]; + } + return String(err); +} +export class NotImplementedError extends Error { + constructor(message) { + super('NotImplemented'); + if (message) { + this.message = message; + } + } +} +export class NotSupportedError extends Error { + constructor(message) { + super('NotSupported'); + if (message) { + this.message = message; + } + } +} +export class ExpectedError extends Error { + isExpected = true; +} +/** + * Error that when thrown won't be logged in telemetry as an unhandled error. + */ +export class ErrorNoTelemetry extends Error { + name; + constructor(msg) { + super(msg); + this.name = 'CodeExpectedError'; + } + static fromError(err) { + if (err instanceof ErrorNoTelemetry) { + return err; + } + const result = new ErrorNoTelemetry(); + result.message = err.message; + result.stack = err.stack; + return result; + } + static isErrorNoTelemetry(err) { + return err.name === 'CodeExpectedError'; + } +} +/** + * This error indicates a bug. + * Do not throw this for invalid user input. + * Only catch this error to recover gracefully from bugs. + */ +export class BugIndicatingError extends Error { + constructor(message) { + super(message || 'An unexpected bug occurred.'); + Object.setPrototypeOf(this, BugIndicatingError.prototype); + // Because we know for sure only buggy code throws this, + // we definitely want to break here and fix the bug. + // debugger; + } +} //# sourceMappingURL=errors.js.map \ No newline at end of file diff --git a/packages/core/dist/errors.js.map b/packages/core/dist/errors.js.map index fc9400d5..93c882a8 100644 --- a/packages/core/dist/errors.js.map +++ b/packages/core/dist/errors.js.map @@ -1 +1 @@ -{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAUhG,uFAAuF;AACvF,MAAM,OAAO,YAAY;IAChB,sBAAsB,CAAmB;IACzC,SAAS,CAA0B;IAE3C;QAEC,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QAEpB,IAAI,CAAC,sBAAsB,GAAG,UAAU,CAAM;YAC7C,UAAU,CAAC,GAAG,EAAE;gBACf,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;oBACb,IAAI,gBAAgB,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC;wBAC5C,MAAM,IAAI,gBAAgB,CAAC,CAAC,CAAC,OAAO,GAAG,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;oBAC1D,CAAC;oBAED,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,OAAO,GAAG,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;gBAC/C,CAAC;gBAED,MAAM,CAAC,CAAC;YACT,CAAC,EAAE,CAAC,CAAC,CAAC;QACP,CAAC,CAAC;IACH,CAAC;IAED,WAAW,CAAC,QAA+B;QAC1C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAE9B,OAAO,GAAG,EAAE;YACX,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QAChC,CAAC,CAAC;IACH,CAAC;IAEO,IAAI,CAAC,CAAM;QAClB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;YACnC,QAAQ,CAAC,CAAC,CAAC,CAAC;QACb,CAAC,CAAC,CAAC;IACJ,CAAC;IAEO,eAAe,CAAC,QAA+B;QACtD,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5D,CAAC;IAED,yBAAyB,CAAC,yBAA2C;QACpE,IAAI,CAAC,sBAAsB,GAAG,yBAAyB,CAAC;IACzD,CAAC;IAED,yBAAyB;QACxB,OAAO,IAAI,CAAC,sBAAsB,CAAC;IACpC,CAAC;IAED,iBAAiB,CAAC,CAAM;QACvB,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;QAC/B,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACd,CAAC;IAED,gEAAgE;IAChE,yBAAyB,CAAC,CAAM;QAC/B,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;IAChC,CAAC;CACD;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC;AAE/C,kBAAkB;AAClB,MAAM,UAAU,yBAAyB,CAAC,yBAA2C;IACpF,YAAY,CAAC,yBAAyB,CAAC,yBAAyB,CAAC,CAAC;AACnE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,CAAU;IACxC,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;QACjC,OAAO,KAAK,CAAC;IACd,CAAC;IAED,MAAM,IAAI,GAAG,CAAuC,CAAC;IACrD,OAAO,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,KAAK,OAAO,CAAC;AACzE,CAAC;AAED;;;;EAIE;AACF,MAAM,UAAU,oBAAoB,CAAC,CAAM;IAC1C,YAAY,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;IAClC,OAAO,SAAS,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,CAAM;IACvC,wCAAwC;IACxC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7B,YAAY,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC;IACD,OAAO,SAAS,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,CAAM;IAC/C,wCAAwC;IACxC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7B,YAAY,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC;IAC3C,CAAC;IACD,OAAO,SAAS,CAAC;AAClB,CAAC;AAkBD,MAAM,UAAU,8BAA8B,CAAC,KAAU;IACxD,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC5B,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;QACvC,MAAM,KAAK,GAAiB,KAAM,CAAC,UAAU,IAAU,KAAM,CAAC,KAAK,CAAC;QACpE,OAAO;YACN,QAAQ,EAAE,IAAI;YACd,IAAI;YACJ,OAAO;YACP,KAAK;YACL,WAAW,EAAE,gBAAgB,CAAC,kBAAkB,CAAC,KAAK,CAAC;YACvD,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,8BAA8B,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS;YAChE,IAAI,EAAkB,KAAM,CAAC,IAAI;SACjC,CAAC;IACH,CAAC;IAED,eAAe;IACf,OAAO,KAAK,CAAC;AACd,CAAC;AAED,MAAM,UAAU,+BAA+B,CAAC,IAAqB;IACpE,IAAI,KAAY,CAAC;IACjB,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;QACtB,KAAK,GAAG,IAAI,gBAAgB,EAAE,CAAC;IAChC,CAAC;SAAM,CAAC;QACP,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC;QACpB,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACxB,CAAC;IACD,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;IAC7B,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IACzB,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACC,KAAM,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACzC,CAAC;IACD,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QAChB,KAAK,CAAC,KAAK,GAAG,+BAA+B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3D,CAAC;IACD,OAAO,KAAK,CAAC;AACd,CAAC;AAoBD,MAAM,YAAY,GAAG,UAAU,CAAC;AAEhC;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAU;IAC7C,IAAI,KAAK,YAAY,iBAAiB,EAAE,CAAC;QACxC,OAAO,IAAI,CAAC;IACb,CAAC;IACD,OAAO,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,IAAI,KAAK,CAAC,OAAO,KAAK,YAAY,CAAC;AAChG,CAAC;AAED,kBAAkB;AAClB,mEAAmE;AACnE,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IAC3C;QACC,KAAK,CAAC,YAAY,CAAC,CAAC;QACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC;IAC1B,CAAC;CACD;AAED;;GAEG;AACH,MAAM,UAAU,QAAQ;IACvB,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;IACtC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC;IAC3B,OAAO,KAAK,CAAC;AACd,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAa;IAC5C,IAAI,IAAI,EAAE,CAAC;QACV,OAAO,IAAI,KAAK,CAAC,qBAAqB,IAAI,EAAE,CAAC,CAAC;IAC/C,CAAC;SAAM,CAAC;QACP,OAAO,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;IACtC,CAAC;AACF,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAa;IACzC,IAAI,IAAI,EAAE,CAAC;QACV,OAAO,IAAI,KAAK,CAAC,kBAAkB,IAAI,EAAE,CAAC,CAAC;IAC5C,CAAC;SAAM,CAAC;QACP,OAAO,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;IACnC,CAAC;AACF,CAAC;AAED,MAAM,OAAO,aAAc,SAAQ,SAAS;IAC3C,YAAY,IAAa;QACxB,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,qCAAqC,CAAC,CAAC,CAAC,kCAAkC,CAAC,CAAC;IACjG,CAAC;CACD;AAED,MAAM,UAAU,eAAe,CAAC,GAAQ;IACvC,IAAI,CAAC,GAAG,EAAE,CAAC;QACV,OAAO,OAAO,CAAC;IAChB,CAAC;IAED,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;QACjB,OAAO,GAAG,CAAC,OAAO,CAAC;IACpB,CAAC;IAED,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;QACf,OAAO,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACjC,CAAC;IAED,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;AACpB,CAAC;AAED,MAAM,OAAO,mBAAoB,SAAQ,KAAK;IAC7C,YAAY,OAAgB;QAC3B,KAAK,CAAC,gBAAgB,CAAC,CAAC;QACxB,IAAI,OAAO,EAAE,CAAC;YACb,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACxB,CAAC;IACF,CAAC;CACD;AAED,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IAC3C,YAAY,OAAgB;QAC3B,KAAK,CAAC,cAAc,CAAC,CAAC;QACtB,IAAI,OAAO,EAAE,CAAC;YACb,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACxB,CAAC;IACF,CAAC;CACD;AAED,MAAM,OAAO,aAAc,SAAQ,KAAK;IAC9B,UAAU,GAAG,IAAI,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IACxB,IAAI,CAAS;IAE/B,YAAY,GAAY;QACvB,KAAK,CAAC,GAAG,CAAC,CAAC;QACX,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IACjC,CAAC;IAEM,MAAM,CAAC,SAAS,CAAC,GAAU;QACjC,IAAI,GAAG,YAAY,gBAAgB,EAAE,CAAC;YACrC,OAAO,GAAG,CAAC;QACZ,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,gBAAgB,EAAE,CAAC;QACtC,MAAM,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;QAC7B,MAAM,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;QACzB,OAAO,MAAM,CAAC;IACf,CAAC;IAEM,MAAM,CAAC,kBAAkB,CAAC,GAAU;QAC1C,OAAO,GAAG,CAAC,IAAI,KAAK,mBAAmB,CAAC;IACzC,CAAC;CACD;AAED;;;;GAIG;AACH,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAC5C,YAAY,OAAgB;QAC3B,KAAK,CAAC,OAAO,IAAI,6BAA6B,CAAC,CAAC;QAChD,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,kBAAkB,CAAC,SAAS,CAAC,CAAC;QAE1D,wDAAwD;QACxD,oDAAoD;QACpD,YAAY;IACb,CAAC;CACD"} \ No newline at end of file diff --git a/packages/core/dist/event.d.ts b/packages/core/dist/event.d.ts index 9f34589a..cad72daa 100644 --- a/packages/core/dist/event.d.ts +++ b/packages/core/dist/event.d.ts @@ -1,570 +1,570 @@ -import { CancellationToken } from './cancellation.js'; -import { DisposableStore, IDisposable } from './lifecycle.js'; -import { LinkedList } from './linkedList.js'; -import { IObservable } from './observable.js'; -import { MicrotaskDelay } from './symbols.js'; -/** - * An event with zero or one parameters that can be subscribed to. The event is a function itself. - */ -export interface Event { - (listener: (e: T) => unknown, thisArgs?: any, disposables?: IDisposable[] | DisposableStore): IDisposable; -} -export declare namespace Event { - const None: Event; - /** - * Given an event, returns another event which debounces calls and defers the listeners to a later task via a shared - * `setTimeout`. The event is converted into a signal (`Event`) to avoid additional object creation as a - * result of merging events and to try prevent race conditions that could arise when using related deferred and - * non-deferred events. - * - * This is useful for deferring non-critical work (eg. general UI updates) to ensure it does not block critical work - * (eg. latency of keypress to text rendered). - * - * *NOTE* that this function returns an `Event` and it MUST be called with a `DisposableStore` whenever the returned - * event is accessible to "third parties", e.g the event is a public property. Otherwise a leaked listener on the - * returned event causes this utility to leak a listener on the original event. - * - * @param event The event source for the new event. - * @param disposable A disposable store to add the new EventEmitter to. - */ - function defer(event: Event, disposable?: DisposableStore): Event; - /** - * Given an event, returns another event which only fires once. - * - * @param event The event source for the new event. - */ - function once(event: Event): Event; - /** - * Given an event, returns another event which only fires once, and only when the condition is met. - * - * @param event The event source for the new event. - */ - function onceIf(event: Event, condition: (e: T) => boolean): Event; - /** - * Maps an event of one type into an event of another type using a mapping function, similar to how - * `Array.prototype.map` works. - * - * *NOTE* that this function returns an `Event` and it MUST be called with a `DisposableStore` whenever the returned - * event is accessible to "third parties", e.g the event is a public property. Otherwise a leaked listener on the - * returned event causes this utility to leak a listener on the original event. - * - * @param event The event source for the new event. - * @param map The mapping function. - * @param disposable A disposable store to add the new EventEmitter to. - */ - function map(event: Event, map: (i: I) => O, disposable?: DisposableStore): Event; - /** - * Wraps an event in another event that performs some function on the event object before firing. - * - * *NOTE* that this function returns an `Event` and it MUST be called with a `DisposableStore` whenever the returned - * event is accessible to "third parties", e.g the event is a public property. Otherwise a leaked listener on the - * returned event causes this utility to leak a listener on the original event. - * - * @param event The event source for the new event. - * @param each The function to perform on the event object. - * @param disposable A disposable store to add the new EventEmitter to. - */ - function forEach(event: Event, each: (i: I) => void, disposable?: DisposableStore): Event; - /** - * Wraps an event in another event that fires only when some condition is met. - * - * *NOTE* that this function returns an `Event` and it MUST be called with a `DisposableStore` whenever the returned - * event is accessible to "third parties", e.g the event is a public property. Otherwise a leaked listener on the - * returned event causes this utility to leak a listener on the original event. - * - * @param event The event source for the new event. - * @param filter The filter function that defines the condition. The event will fire for the object if this function - * returns true. - * @param disposable A disposable store to add the new EventEmitter to. - */ - function filter(event: Event, filter: (e: T | U) => e is T, disposable?: DisposableStore): Event; - function filter(event: Event, filter: (e: T) => boolean, disposable?: DisposableStore): Event; - function filter(event: Event, filter: (e: T | R) => e is R, disposable?: DisposableStore): Event; - /** - * Given an event, returns the same event but typed as `Event`. - */ - function signal(event: Event): Event; - /** - * Given a collection of events, returns a single event which emits whenever any of the provided events emit. - */ - function any(...events: Event[]): Event; - function any(...events: Event[]): Event; - /** - * *NOTE* that this function returns an `Event` and it MUST be called with a `DisposableStore` whenever the returned - * event is accessible to "third parties", e.g the event is a public property. Otherwise a leaked listener on the - * returned event causes this utility to leak a listener on the original event. - */ - function reduce(event: Event, merge: (last: O | undefined, event: I) => O, initial?: O, disposable?: DisposableStore): Event; - /** - * Given an event, creates a new emitter that event that will debounce events based on {@link delay} and give an - * array event object of all events that fired. - * - * *NOTE* that this function returns an `Event` and it MUST be called with a `DisposableStore` whenever the returned - * event is accessible to "third parties", e.g the event is a public property. Otherwise a leaked listener on the - * returned event causes this utility to leak a listener on the original event. - * - * @param event The original event to debounce. - * @param merge A function that reduces all events into a single event. - * @param delay The number of milliseconds to debounce. - * @param leading Whether to fire a leading event without debouncing. - * @param flushOnListenerRemove Whether to fire all debounced events when a listener is removed. If this is not - * specified, some events could go missing. Use this if it's important that all events are processed, even if the - * listener gets disposed before the debounced event fires. - * @param leakWarningThreshold See {@link EmitterOptions.leakWarningThreshold}. - * @param disposable A disposable store to register the debounce emitter to. - */ - function debounce(event: Event, merge: (last: T | undefined, event: T) => T, delay?: number | typeof MicrotaskDelay, leading?: boolean, flushOnListenerRemove?: boolean, leakWarningThreshold?: number, disposable?: DisposableStore): Event; - function debounce(event: Event, merge: (last: O | undefined, event: I) => O, delay?: number | typeof MicrotaskDelay, leading?: boolean, flushOnListenerRemove?: boolean, leakWarningThreshold?: number, disposable?: DisposableStore): Event; - /** - * Debounces an event, firing after some delay (default=0) with an array of all event original objects. - * - * *NOTE* that this function returns an `Event` and it MUST be called with a `DisposableStore` whenever the returned - * event is accessible to "third parties", e.g the event is a public property. Otherwise a leaked listener on the - * returned event causes this utility to leak a listener on the original event. - */ - function accumulate(event: Event, delay?: number, disposable?: DisposableStore): Event; - /** - * Filters an event such that some condition is _not_ met more than once in a row, effectively ensuring duplicate - * event objects from different sources do not fire the same event object. - * - * *NOTE* that this function returns an `Event` and it MUST be called with a `DisposableStore` whenever the returned - * event is accessible to "third parties", e.g the event is a public property. Otherwise a leaked listener on the - * returned event causes this utility to leak a listener on the original event. - * - * @param event The event source for the new event. - * @param equals The equality condition. - * @param disposable A disposable store to add the new EventEmitter to. - * - * @example - * ``` - * // Fire only one time when a single window is opened or focused - * Event.latch(Event.any(onDidOpenWindow, onDidFocusWindow)) - * ``` - */ - function latch(event: Event, equals?: (a: T, b: T) => boolean, disposable?: DisposableStore): Event; - /** - * Splits an event whose parameter is a union type into 2 separate events for each type in the union. - * - * *NOTE* that this function returns an `Event` and it MUST be called with a `DisposableStore` whenever the returned - * event is accessible to "third parties", e.g the event is a public property. Otherwise a leaked listener on the - * returned event causes this utility to leak a listener on the original event. - * - * @example - * ``` - * const event = new EventEmitter().event; - * const [numberEvent, undefinedEvent] = Event.split(event, isUndefined); - * ``` - * - * @param event The event source for the new event. - * @param isT A function that determines what event is of the first type. - * @param disposable A disposable store to add the new EventEmitter to. - */ - function split(event: Event, isT: (e: T | U) => e is T, disposable?: DisposableStore): [Event, Event]; - /** - * Buffers an event until it has a listener attached. - * - * *NOTE* that this function returns an `Event` and it MUST be called with a `DisposableStore` whenever the returned - * event is accessible to "third parties", e.g the event is a public property. Otherwise a leaked listener on the - * returned event causes this utility to leak a listener on the original event. - * - * @param event The event source for the new event. - * @param flushAfterTimeout Determines whether to flush the buffer after a timeout immediately or after a - * `setTimeout` when the first event listener is added. - * @param _buffer Internal: A source event array used for tests. - * - * @example - * ``` - * // Start accumulating events, when the first listener is attached, flush - * // the event after a timeout such that multiple listeners attached before - * // the timeout would receive the event - * this.onInstallExtension = Event.buffer(service.onInstallExtension, true); - * ``` - */ - function buffer(event: Event, flushAfterTimeout?: boolean, _buffer?: T[], disposable?: DisposableStore): Event; - /** - * Wraps the event in an {@link IChainableEvent}, allowing a more functional programming style. - * - * @example - * ``` - * // Normal - * const onEnterPressNormal = Event.filter( - * Event.map(onKeyPress.event, e => new StandardKeyboardEvent(e)), - * e.keyCode === KeyCode.Enter - * ).event; - * - * // Using chain - * const onEnterPressChain = Event.chain(onKeyPress.event, $ => $ - * .map(e => new StandardKeyboardEvent(e)) - * .filter(e => e.keyCode === KeyCode.Enter) - * ); - * ``` - */ - function chain(event: Event, sythensize: ($: IChainableSythensis) => IChainableSythensis): Event; - interface IChainableSythensis { - map(fn: (i: T) => O): IChainableSythensis; - forEach(fn: (i: T) => void): IChainableSythensis; - filter(fn: (e: T) => e is R): IChainableSythensis; - filter(fn: (e: T) => boolean): IChainableSythensis; - reduce(merge: (last: R, event: T) => R, initial: R): IChainableSythensis; - reduce(merge: (last: R | undefined, event: T) => R): IChainableSythensis; - latch(equals?: (a: T, b: T) => boolean): IChainableSythensis; - } - interface NodeEventEmitter { - on(event: string | symbol, listener: Function): unknown; - removeListener(event: string | symbol, listener: Function): unknown; - } - /** - * Creates an {@link Event} from a node event emitter. - */ - function fromNodeEventEmitter(emitter: NodeEventEmitter, eventName: string, map?: (...args: any[]) => T): Event; - interface DOMEventEmitter { - addEventListener(event: string | symbol, listener: Function): void; - removeEventListener(event: string | symbol, listener: Function): void; - } - /** - * Creates an {@link Event} from a DOM event emitter. - */ - function fromDOMEventEmitter(emitter: DOMEventEmitter, eventName: string, map?: (...args: any[]) => T): Event; - /** - * Creates a promise out of an event, using the {@link Event.once} helper. - */ - function toPromise(event: Event): Promise; - /** - * Creates an event out of a promise that fires once when the promise is - * resolved with the result of the promise or `undefined`. - */ - function fromPromise(promise: Promise): Event; - /** - * A convenience function for forwarding an event to another emitter which - * improves readability. - * - * This is similar to {@link Relay} but allows instantiating and forwarding - * on a single line and also allows for multiple source events. - * @param from The event to forward. - * @param to The emitter to forward the event to. - * @example - * Event.forward(event, emitter); - * // equivalent to - * event(e => emitter.fire(e)); - * // equivalent to - * event(emitter.fire, emitter); - */ - function forward(from: Event, to: Emitter): IDisposable; - /** - * Adds a listener to an event and calls the listener immediately with undefined as the event object. - * - * @example - * ``` - * // Initialize the UI and update it when dataChangeEvent fires - * runAndSubscribe(dataChangeEvent, () => this._updateUI()); - * ``` - */ - function runAndSubscribe(event: Event, handler: (e: T) => unknown, initial: T): IDisposable; - function runAndSubscribe(event: Event, handler: (e: T | undefined) => unknown): IDisposable; - /** - * Creates an event emitter that is fired when the observable changes. - * Each listeners subscribes to the emitter. - */ - function fromObservable(obs: IObservable, store?: DisposableStore): Event; - /** - * Each listener is attached to the observable directly. - */ - function fromObservableLight(observable: IObservable): Event; -} -export interface EmitterOptions { - /** - * Optional function that's called *before* the very first listener is added - */ - onWillAddFirstListener?: Function; - /** - * Optional function that's called *after* the very first listener is added - */ - onDidAddFirstListener?: Function; - /** - * Optional function that's called after a listener is added - */ - onDidAddListener?: Function; - /** - * Optional function that's called *after* remove the very last listener - */ - onDidRemoveLastListener?: Function; - /** - * Optional function that's called *before* a listener is removed - */ - onWillRemoveListener?: Function; - /** - * Optional function that's called when a listener throws an error. Defaults to - * {@link onUnexpectedError} - */ - onListenerError?: (e: any) => void; - /** - * Number of listeners that are allowed before assuming a leak. Default to - * a globally configured value - * - * @see setGlobalLeakWarningThreshold - */ - leakWarningThreshold?: number; - /** - * Pass in a delivery queue, which is useful for ensuring - * in order event delivery across multiple emitters. - */ - deliveryQueue?: EventDeliveryQueue; - /** ONLY enable this during development */ - _profName?: string; -} -export declare class EventProfiling { - static readonly all: Set; - private static _idPool; - readonly name: string; - listenerCount: number; - invocationCount: number; - elapsedOverall: number; - durations: number[]; - private _stopWatch?; - constructor(name: string); - start(listenerCount: number): void; - stop(): void; -} -export declare function setGlobalLeakWarningThreshold(n: number): IDisposable; -declare class Stacktrace { - readonly value: string; - static create(): Stacktrace; - private constructor(); - print(): void; -} -export declare class ListenerLeakError extends Error { - constructor(message: string, stack: string); -} -export declare class ListenerRefusalError extends Error { - constructor(message: string, stack: string); -} -declare class UniqueContainer { - readonly value: T; - stack?: Stacktrace; - id: number; - constructor(value: T); -} -type ListenerContainer = UniqueContainer<(data: T) => void>; -type ListenerOrListeners = (ListenerContainer | undefined)[] | ListenerContainer; -/** - * The Emitter can be used to expose an Event to the public - * to fire it from the insides. - * Sample: - class Document { - - private readonly _onDidChange = new Emitter<(value:string)=>any>(); - - public onDidChange = this._onDidChange.event; - - // getter-style - // get onDidChange(): Event<(value:string)=>any> { - // return this._onDidChange.event; - // } - - private _doIt() { - //... - this._onDidChange.fire(value); - } - } - */ -export declare class Emitter { - private readonly _options?; - private readonly _leakageMon?; - private readonly _perfMon?; - private _disposed?; - private _event?; - /** - * A listener, or list of listeners. A single listener is the most common - * for event emitters (#185789), so we optimize that special case to avoid - * wrapping it in an array (just like Node.js itself.) - * - * A list of listeners never 'downgrades' back to a plain function if - * listeners are removed, for two reasons: - * - * 1. That's complicated (especially with the deliveryQueue) - * 2. A listener with >1 listener is likely to have >1 listener again at - * some point, and swapping between arrays and functions may[citation needed] - * introduce unnecessary work and garbage. - * - * The array listeners can be 'sparse', to avoid reallocating the array - * whenever any listener is added or removed. If more than `1 / compactionThreshold` - * of the array is empty, only then is it resized. - */ - protected _listeners?: ListenerOrListeners; - /** - * Always to be defined if _listeners is an array. It's no longer a true - * queue, but holds the dispatching 'state'. If `fire()` is called on an - * emitter, any work left in the _deliveryQueue is finished first. - */ - private _deliveryQueue?; - protected _size: number; - constructor(options?: EmitterOptions); - dispose(): void; - /** - * For the public to allow to subscribe - * to events from this Emitter - */ - get event(): Event; - private _removeListener; - private _deliver; - /** Delivers items in the queue. Assumes the queue is ready to go. */ - private _deliverQueue; - /** - * To be kept private to fire an event to - * subscribers - */ - fire(event: T): void; - hasListeners(): boolean; -} -export interface EventDeliveryQueue { - _isEventDeliveryQueue: true; -} -export declare const createEventDeliveryQueue: () => EventDeliveryQueue; -export interface IWaitUntil { - token: CancellationToken; - waitUntil(thenable: Promise): void; -} -export type IWaitUntilData = Omit, 'token'>; -export declare class AsyncEmitter extends Emitter { - private _asyncDeliveryQueue?; - fireAsync(data: IWaitUntilData, token: CancellationToken, promiseJoin?: (p: Promise, listener: Function) => Promise): Promise; -} -export declare class PauseableEmitter extends Emitter { - private _isPaused; - protected _eventQueue: LinkedList; - private _mergeFn?; - get isPaused(): boolean; - constructor(options?: EmitterOptions & { - merge?: (input: T[]) => T; - }); - pause(): void; - resume(): void; - fire(event: T): void; -} -export declare class DebounceEmitter extends PauseableEmitter { - private readonly _delay; - private _handle; - constructor(options: EmitterOptions & { - merge: (input: T[]) => T; - delay?: number; - }); - fire(event: T): void; -} -/** - * An emitter which queue all events and then process them at the - * end of the event loop. - */ -export declare class MicrotaskEmitter extends Emitter { - private _queuedEvents; - private _mergeFn?; - constructor(options?: EmitterOptions & { - merge?: (input: T[]) => T; - }); - fire(event: T): void; -} -/** - * An event emitter that multiplexes many events into a single event. - * - * @example Listen to the `onData` event of all `Thing`s, dynamically adding and removing `Thing`s - * to the multiplexer as needed. - * - * ```typescript - * const anythingDataMultiplexer = new EventMultiplexer<{ data: string }>(); - * - * const thingListeners = DisposableMap(); - * - * thingService.onDidAddThing(thing => { - * thingListeners.set(thing, anythingDataMultiplexer.add(thing.onData); - * }); - * thingService.onDidRemoveThing(thing => { - * thingListeners.deleteAndDispose(thing); - * }); - * - * anythingDataMultiplexer.event(e => { - * console.log('Something fired data ' + e.data) - * }); - * ``` - */ -export declare class EventMultiplexer implements IDisposable { - private readonly emitter; - private hasListeners; - private events; - constructor(); - get event(): Event; - add(event: Event): IDisposable; - private onFirstListenerAdd; - private onLastListenerRemove; - private hook; - private unhook; - dispose(): void; -} -export interface IDynamicListEventMultiplexer extends IDisposable { - readonly event: Event; -} -export declare class DynamicListEventMultiplexer implements IDynamicListEventMultiplexer { - private readonly _store; - readonly event: Event; - constructor(items: TItem[], onAddItem: Event, onRemoveItem: Event, getEvent: (item: TItem) => Event); - dispose(): void; -} -/** - * The EventBufferer is useful in situations in which you want - * to delay firing your events during some code. - * You can wrap that code and be sure that the event will not - * be fired during that wrap. - * - * ``` - * const emitter: Emitter; - * const delayer = new EventDelayer(); - * const delayedEvent = delayer.wrapEvent(emitter.event); - * - * delayedEvent(console.log); - * - * delayer.bufferEvents(() => { - * emitter.fire(); // event will not be fired yet - * }); - * - * // event will only be fired at this point - * ``` - */ -export declare class EventBufferer { - private data; - wrapEvent(event: Event): Event; - wrapEvent(event: Event, reduce: (last: T | undefined, event: T) => T): Event; - wrapEvent(event: Event, reduce: (last: O | undefined, event: T) => O, initial: O): Event; - bufferEvents(fn: () => R): R; -} -/** - * A Relay is an event forwarder which functions as a replugabble event pipe. - * Once created, you can connect an input event to it and it will simply forward - * events from that input event through its own `event` property. The `input` - * can be changed at any point in time. - */ -export declare class Relay implements IDisposable { - private listening; - private inputEvent; - private inputEventListener; - private readonly emitter; - readonly event: Event; - set input(event: Event); - dispose(): void; -} -export interface IValueWithChangeEvent { - readonly onDidChange: Event; - get value(): T; -} -export declare class ValueWithChangeEvent implements IValueWithChangeEvent { - private _value; - static const(value: T): IValueWithChangeEvent; - private readonly _onDidChange; - readonly onDidChange: Event; - constructor(_value: T); - get value(): T; - set value(value: T); -} -/** - * @param handleItem Is called for each item in the set (but only the first time the item is seen in the set). - * The returned disposable is disposed if the item is no longer in the set. - */ -export declare function trackSetChanges(getData: () => ReadonlySet, onDidChangeData: Event, handleItem: (d: T) => IDisposable): IDisposable; -export {}; +import { CancellationToken } from './cancellation.js'; +import { DisposableStore, IDisposable } from './lifecycle.js'; +import { LinkedList } from './linkedList.js'; +import { IObservable } from './observable.js'; +import { MicrotaskDelay } from './symbols.js'; +/** + * An event with zero or one parameters that can be subscribed to. The event is a function itself. + */ +export interface Event { + (listener: (e: T) => unknown, thisArgs?: any, disposables?: IDisposable[] | DisposableStore): IDisposable; +} +export declare namespace Event { + const None: Event; + /** + * Given an event, returns another event which debounces calls and defers the listeners to a later task via a shared + * `setTimeout`. The event is converted into a signal (`Event`) to avoid additional object creation as a + * result of merging events and to try prevent race conditions that could arise when using related deferred and + * non-deferred events. + * + * This is useful for deferring non-critical work (eg. general UI updates) to ensure it does not block critical work + * (eg. latency of keypress to text rendered). + * + * *NOTE* that this function returns an `Event` and it MUST be called with a `DisposableStore` whenever the returned + * event is accessible to "third parties", e.g the event is a public property. Otherwise a leaked listener on the + * returned event causes this utility to leak a listener on the original event. + * + * @param event The event source for the new event. + * @param disposable A disposable store to add the new EventEmitter to. + */ + function defer(event: Event, disposable?: DisposableStore): Event; + /** + * Given an event, returns another event which only fires once. + * + * @param event The event source for the new event. + */ + function once(event: Event): Event; + /** + * Given an event, returns another event which only fires once, and only when the condition is met. + * + * @param event The event source for the new event. + */ + function onceIf(event: Event, condition: (e: T) => boolean): Event; + /** + * Maps an event of one type into an event of another type using a mapping function, similar to how + * `Array.prototype.map` works. + * + * *NOTE* that this function returns an `Event` and it MUST be called with a `DisposableStore` whenever the returned + * event is accessible to "third parties", e.g the event is a public property. Otherwise a leaked listener on the + * returned event causes this utility to leak a listener on the original event. + * + * @param event The event source for the new event. + * @param map The mapping function. + * @param disposable A disposable store to add the new EventEmitter to. + */ + function map(event: Event, map: (i: I) => O, disposable?: DisposableStore): Event; + /** + * Wraps an event in another event that performs some function on the event object before firing. + * + * *NOTE* that this function returns an `Event` and it MUST be called with a `DisposableStore` whenever the returned + * event is accessible to "third parties", e.g the event is a public property. Otherwise a leaked listener on the + * returned event causes this utility to leak a listener on the original event. + * + * @param event The event source for the new event. + * @param each The function to perform on the event object. + * @param disposable A disposable store to add the new EventEmitter to. + */ + function forEach(event: Event, each: (i: I) => void, disposable?: DisposableStore): Event; + /** + * Wraps an event in another event that fires only when some condition is met. + * + * *NOTE* that this function returns an `Event` and it MUST be called with a `DisposableStore` whenever the returned + * event is accessible to "third parties", e.g the event is a public property. Otherwise a leaked listener on the + * returned event causes this utility to leak a listener on the original event. + * + * @param event The event source for the new event. + * @param filter The filter function that defines the condition. The event will fire for the object if this function + * returns true. + * @param disposable A disposable store to add the new EventEmitter to. + */ + function filter(event: Event, filter: (e: T | U) => e is T, disposable?: DisposableStore): Event; + function filter(event: Event, filter: (e: T) => boolean, disposable?: DisposableStore): Event; + function filter(event: Event, filter: (e: T | R) => e is R, disposable?: DisposableStore): Event; + /** + * Given an event, returns the same event but typed as `Event`. + */ + function signal(event: Event): Event; + /** + * Given a collection of events, returns a single event which emits whenever any of the provided events emit. + */ + function any(...events: Event[]): Event; + function any(...events: Event[]): Event; + /** + * *NOTE* that this function returns an `Event` and it MUST be called with a `DisposableStore` whenever the returned + * event is accessible to "third parties", e.g the event is a public property. Otherwise a leaked listener on the + * returned event causes this utility to leak a listener on the original event. + */ + function reduce(event: Event, merge: (last: O | undefined, event: I) => O, initial?: O, disposable?: DisposableStore): Event; + /** + * Given an event, creates a new emitter that event that will debounce events based on {@link delay} and give an + * array event object of all events that fired. + * + * *NOTE* that this function returns an `Event` and it MUST be called with a `DisposableStore` whenever the returned + * event is accessible to "third parties", e.g the event is a public property. Otherwise a leaked listener on the + * returned event causes this utility to leak a listener on the original event. + * + * @param event The original event to debounce. + * @param merge A function that reduces all events into a single event. + * @param delay The number of milliseconds to debounce. + * @param leading Whether to fire a leading event without debouncing. + * @param flushOnListenerRemove Whether to fire all debounced events when a listener is removed. If this is not + * specified, some events could go missing. Use this if it's important that all events are processed, even if the + * listener gets disposed before the debounced event fires. + * @param leakWarningThreshold See {@link EmitterOptions.leakWarningThreshold}. + * @param disposable A disposable store to register the debounce emitter to. + */ + function debounce(event: Event, merge: (last: T | undefined, event: T) => T, delay?: number | typeof MicrotaskDelay, leading?: boolean, flushOnListenerRemove?: boolean, leakWarningThreshold?: number, disposable?: DisposableStore): Event; + function debounce(event: Event, merge: (last: O | undefined, event: I) => O, delay?: number | typeof MicrotaskDelay, leading?: boolean, flushOnListenerRemove?: boolean, leakWarningThreshold?: number, disposable?: DisposableStore): Event; + /** + * Debounces an event, firing after some delay (default=0) with an array of all event original objects. + * + * *NOTE* that this function returns an `Event` and it MUST be called with a `DisposableStore` whenever the returned + * event is accessible to "third parties", e.g the event is a public property. Otherwise a leaked listener on the + * returned event causes this utility to leak a listener on the original event. + */ + function accumulate(event: Event, delay?: number, disposable?: DisposableStore): Event; + /** + * Filters an event such that some condition is _not_ met more than once in a row, effectively ensuring duplicate + * event objects from different sources do not fire the same event object. + * + * *NOTE* that this function returns an `Event` and it MUST be called with a `DisposableStore` whenever the returned + * event is accessible to "third parties", e.g the event is a public property. Otherwise a leaked listener on the + * returned event causes this utility to leak a listener on the original event. + * + * @param event The event source for the new event. + * @param equals The equality condition. + * @param disposable A disposable store to add the new EventEmitter to. + * + * @example + * ``` + * // Fire only one time when a single window is opened or focused + * Event.latch(Event.any(onDidOpenWindow, onDidFocusWindow)) + * ``` + */ + function latch(event: Event, equals?: (a: T, b: T) => boolean, disposable?: DisposableStore): Event; + /** + * Splits an event whose parameter is a union type into 2 separate events for each type in the union. + * + * *NOTE* that this function returns an `Event` and it MUST be called with a `DisposableStore` whenever the returned + * event is accessible to "third parties", e.g the event is a public property. Otherwise a leaked listener on the + * returned event causes this utility to leak a listener on the original event. + * + * @example + * ``` + * const event = new EventEmitter().event; + * const [numberEvent, undefinedEvent] = Event.split(event, isUndefined); + * ``` + * + * @param event The event source for the new event. + * @param isT A function that determines what event is of the first type. + * @param disposable A disposable store to add the new EventEmitter to. + */ + function split(event: Event, isT: (e: T | U) => e is T, disposable?: DisposableStore): [Event, Event]; + /** + * Buffers an event until it has a listener attached. + * + * *NOTE* that this function returns an `Event` and it MUST be called with a `DisposableStore` whenever the returned + * event is accessible to "third parties", e.g the event is a public property. Otherwise a leaked listener on the + * returned event causes this utility to leak a listener on the original event. + * + * @param event The event source for the new event. + * @param flushAfterTimeout Determines whether to flush the buffer after a timeout immediately or after a + * `setTimeout` when the first event listener is added. + * @param _buffer Internal: A source event array used for tests. + * + * @example + * ``` + * // Start accumulating events, when the first listener is attached, flush + * // the event after a timeout such that multiple listeners attached before + * // the timeout would receive the event + * this.onInstallExtension = Event.buffer(service.onInstallExtension, true); + * ``` + */ + function buffer(event: Event, flushAfterTimeout?: boolean, _buffer?: T[], disposable?: DisposableStore): Event; + /** + * Wraps the event in an {@link IChainableEvent}, allowing a more functional programming style. + * + * @example + * ``` + * // Normal + * const onEnterPressNormal = Event.filter( + * Event.map(onKeyPress.event, e => new StandardKeyboardEvent(e)), + * e.keyCode === KeyCode.Enter + * ).event; + * + * // Using chain + * const onEnterPressChain = Event.chain(onKeyPress.event, $ => $ + * .map(e => new StandardKeyboardEvent(e)) + * .filter(e => e.keyCode === KeyCode.Enter) + * ); + * ``` + */ + function chain(event: Event, sythensize: ($: IChainableSythensis) => IChainableSythensis): Event; + interface IChainableSythensis { + map(fn: (i: T) => O): IChainableSythensis; + forEach(fn: (i: T) => void): IChainableSythensis; + filter(fn: (e: T) => e is R): IChainableSythensis; + filter(fn: (e: T) => boolean): IChainableSythensis; + reduce(merge: (last: R, event: T) => R, initial: R): IChainableSythensis; + reduce(merge: (last: R | undefined, event: T) => R): IChainableSythensis; + latch(equals?: (a: T, b: T) => boolean): IChainableSythensis; + } + interface NodeEventEmitter { + on(event: string | symbol, listener: Function): unknown; + removeListener(event: string | symbol, listener: Function): unknown; + } + /** + * Creates an {@link Event} from a node event emitter. + */ + function fromNodeEventEmitter(emitter: NodeEventEmitter, eventName: string, map?: (...args: any[]) => T): Event; + interface DOMEventEmitter { + addEventListener(event: string | symbol, listener: Function): void; + removeEventListener(event: string | symbol, listener: Function): void; + } + /** + * Creates an {@link Event} from a DOM event emitter. + */ + function fromDOMEventEmitter(emitter: DOMEventEmitter, eventName: string, map?: (...args: any[]) => T): Event; + /** + * Creates a promise out of an event, using the {@link Event.once} helper. + */ + function toPromise(event: Event): Promise; + /** + * Creates an event out of a promise that fires once when the promise is + * resolved with the result of the promise or `undefined`. + */ + function fromPromise(promise: Promise): Event; + /** + * A convenience function for forwarding an event to another emitter which + * improves readability. + * + * This is similar to {@link Relay} but allows instantiating and forwarding + * on a single line and also allows for multiple source events. + * @param from The event to forward. + * @param to The emitter to forward the event to. + * @example + * Event.forward(event, emitter); + * // equivalent to + * event(e => emitter.fire(e)); + * // equivalent to + * event(emitter.fire, emitter); + */ + function forward(from: Event, to: Emitter): IDisposable; + /** + * Adds a listener to an event and calls the listener immediately with undefined as the event object. + * + * @example + * ``` + * // Initialize the UI and update it when dataChangeEvent fires + * runAndSubscribe(dataChangeEvent, () => this._updateUI()); + * ``` + */ + function runAndSubscribe(event: Event, handler: (e: T) => unknown, initial: T): IDisposable; + function runAndSubscribe(event: Event, handler: (e: T | undefined) => unknown): IDisposable; + /** + * Creates an event emitter that is fired when the observable changes. + * Each listeners subscribes to the emitter. + */ + function fromObservable(obs: IObservable, store?: DisposableStore): Event; + /** + * Each listener is attached to the observable directly. + */ + function fromObservableLight(observable: IObservable): Event; +} +export interface EmitterOptions { + /** + * Optional function that's called *before* the very first listener is added + */ + onWillAddFirstListener?: Function; + /** + * Optional function that's called *after* the very first listener is added + */ + onDidAddFirstListener?: Function; + /** + * Optional function that's called after a listener is added + */ + onDidAddListener?: Function; + /** + * Optional function that's called *after* remove the very last listener + */ + onDidRemoveLastListener?: Function; + /** + * Optional function that's called *before* a listener is removed + */ + onWillRemoveListener?: Function; + /** + * Optional function that's called when a listener throws an error. Defaults to + * {@link onUnexpectedError} + */ + onListenerError?: (e: any) => void; + /** + * Number of listeners that are allowed before assuming a leak. Default to + * a globally configured value + * + * @see setGlobalLeakWarningThreshold + */ + leakWarningThreshold?: number; + /** + * Pass in a delivery queue, which is useful for ensuring + * in order event delivery across multiple emitters. + */ + deliveryQueue?: EventDeliveryQueue; + /** ONLY enable this during development */ + _profName?: string; +} +export declare class EventProfiling { + static readonly all: Set; + private static _idPool; + readonly name: string; + listenerCount: number; + invocationCount: number; + elapsedOverall: number; + durations: number[]; + private _stopWatch?; + constructor(name: string); + start(listenerCount: number): void; + stop(): void; +} +export declare function setGlobalLeakWarningThreshold(n: number): IDisposable; +declare class Stacktrace { + readonly value: string; + static create(): Stacktrace; + private constructor(); + print(): void; +} +export declare class ListenerLeakError extends Error { + constructor(message: string, stack: string); +} +export declare class ListenerRefusalError extends Error { + constructor(message: string, stack: string); +} +declare class UniqueContainer { + readonly value: T; + stack?: Stacktrace; + id: number; + constructor(value: T); +} +type ListenerContainer = UniqueContainer<(data: T) => void>; +type ListenerOrListeners = (ListenerContainer | undefined)[] | ListenerContainer; +/** + * The Emitter can be used to expose an Event to the public + * to fire it from the insides. + * Sample: + class Document { + + private readonly _onDidChange = new Emitter<(value:string)=>any>(); + + public onDidChange = this._onDidChange.event; + + // getter-style + // get onDidChange(): Event<(value:string)=>any> { + // return this._onDidChange.event; + // } + + private _doIt() { + //... + this._onDidChange.fire(value); + } + } + */ +export declare class Emitter { + private readonly _options?; + private readonly _leakageMon?; + private readonly _perfMon?; + private _disposed?; + private _event?; + /** + * A listener, or list of listeners. A single listener is the most common + * for event emitters (#185789), so we optimize that special case to avoid + * wrapping it in an array (just like Node.js itself.) + * + * A list of listeners never 'downgrades' back to a plain function if + * listeners are removed, for two reasons: + * + * 1. That's complicated (especially with the deliveryQueue) + * 2. A listener with >1 listener is likely to have >1 listener again at + * some point, and swapping between arrays and functions may[citation needed] + * introduce unnecessary work and garbage. + * + * The array listeners can be 'sparse', to avoid reallocating the array + * whenever any listener is added or removed. If more than `1 / compactionThreshold` + * of the array is empty, only then is it resized. + */ + protected _listeners?: ListenerOrListeners; + /** + * Always to be defined if _listeners is an array. It's no longer a true + * queue, but holds the dispatching 'state'. If `fire()` is called on an + * emitter, any work left in the _deliveryQueue is finished first. + */ + private _deliveryQueue?; + protected _size: number; + constructor(options?: EmitterOptions); + dispose(): void; + /** + * For the public to allow to subscribe + * to events from this Emitter + */ + get event(): Event; + private _removeListener; + private _deliver; + /** Delivers items in the queue. Assumes the queue is ready to go. */ + private _deliverQueue; + /** + * To be kept private to fire an event to + * subscribers + */ + fire(event: T): void; + hasListeners(): boolean; +} +export interface EventDeliveryQueue { + _isEventDeliveryQueue: true; +} +export declare const createEventDeliveryQueue: () => EventDeliveryQueue; +export interface IWaitUntil { + token: CancellationToken; + waitUntil(thenable: Promise): void; +} +export type IWaitUntilData = Omit, 'token'>; +export declare class AsyncEmitter extends Emitter { + private _asyncDeliveryQueue?; + fireAsync(data: IWaitUntilData, token: CancellationToken, promiseJoin?: (p: Promise, listener: Function) => Promise): Promise; +} +export declare class PauseableEmitter extends Emitter { + private _isPaused; + protected _eventQueue: LinkedList; + private _mergeFn?; + get isPaused(): boolean; + constructor(options?: EmitterOptions & { + merge?: (input: T[]) => T; + }); + pause(): void; + resume(): void; + fire(event: T): void; +} +export declare class DebounceEmitter extends PauseableEmitter { + private readonly _delay; + private _handle; + constructor(options: EmitterOptions & { + merge: (input: T[]) => T; + delay?: number; + }); + fire(event: T): void; +} +/** + * An emitter which queue all events and then process them at the + * end of the event loop. + */ +export declare class MicrotaskEmitter extends Emitter { + private _queuedEvents; + private _mergeFn?; + constructor(options?: EmitterOptions & { + merge?: (input: T[]) => T; + }); + fire(event: T): void; +} +/** + * An event emitter that multiplexes many events into a single event. + * + * @example Listen to the `onData` event of all `Thing`s, dynamically adding and removing `Thing`s + * to the multiplexer as needed. + * + * ```typescript + * const anythingDataMultiplexer = new EventMultiplexer<{ data: string }>(); + * + * const thingListeners = DisposableMap(); + * + * thingService.onDidAddThing(thing => { + * thingListeners.set(thing, anythingDataMultiplexer.add(thing.onData); + * }); + * thingService.onDidRemoveThing(thing => { + * thingListeners.deleteAndDispose(thing); + * }); + * + * anythingDataMultiplexer.event(e => { + * console.log('Something fired data ' + e.data) + * }); + * ``` + */ +export declare class EventMultiplexer implements IDisposable { + private readonly emitter; + private hasListeners; + private events; + constructor(); + get event(): Event; + add(event: Event): IDisposable; + private onFirstListenerAdd; + private onLastListenerRemove; + private hook; + private unhook; + dispose(): void; +} +export interface IDynamicListEventMultiplexer extends IDisposable { + readonly event: Event; +} +export declare class DynamicListEventMultiplexer implements IDynamicListEventMultiplexer { + private readonly _store; + readonly event: Event; + constructor(items: TItem[], onAddItem: Event, onRemoveItem: Event, getEvent: (item: TItem) => Event); + dispose(): void; +} +/** + * The EventBufferer is useful in situations in which you want + * to delay firing your events during some code. + * You can wrap that code and be sure that the event will not + * be fired during that wrap. + * + * ``` + * const emitter: Emitter; + * const delayer = new EventDelayer(); + * const delayedEvent = delayer.wrapEvent(emitter.event); + * + * delayedEvent(console.log); + * + * delayer.bufferEvents(() => { + * emitter.fire(); // event will not be fired yet + * }); + * + * // event will only be fired at this point + * ``` + */ +export declare class EventBufferer { + private data; + wrapEvent(event: Event): Event; + wrapEvent(event: Event, reduce: (last: T | undefined, event: T) => T): Event; + wrapEvent(event: Event, reduce: (last: O | undefined, event: T) => O, initial: O): Event; + bufferEvents(fn: () => R): R; +} +/** + * A Relay is an event forwarder which functions as a replugabble event pipe. + * Once created, you can connect an input event to it and it will simply forward + * events from that input event through its own `event` property. The `input` + * can be changed at any point in time. + */ +export declare class Relay implements IDisposable { + private listening; + private inputEvent; + private inputEventListener; + private readonly emitter; + readonly event: Event; + set input(event: Event); + dispose(): void; +} +export interface IValueWithChangeEvent { + readonly onDidChange: Event; + get value(): T; +} +export declare class ValueWithChangeEvent implements IValueWithChangeEvent { + private _value; + static const(value: T): IValueWithChangeEvent; + private readonly _onDidChange; + readonly onDidChange: Event; + constructor(_value: T); + get value(): T; + set value(value: T); +} +/** + * @param handleItem Is called for each item in the set (but only the first time the item is seen in the set). + * The returned disposable is disposed if the item is no longer in the set. + */ +export declare function trackSetChanges(getData: () => ReadonlySet, onDidChangeData: Event, handleItem: (d: T) => IDisposable): IDisposable; +export {}; diff --git a/packages/core/dist/event.js b/packages/core/dist/event.js index a3fcfbe6..d633883f 100644 --- a/packages/core/dist/event.js +++ b/packages/core/dist/event.js @@ -1,1445 +1,1445 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ -import { diffSets } from './collections.js'; -import { onUnexpectedError } from './errors.js'; -import { createSingleCallFunction } from './functional.js'; -import { combinedDisposable, Disposable, DisposableMap, DisposableStore, toDisposable } from './lifecycle.js'; -import { LinkedList } from './linkedList.js'; -import { StopWatch } from './stopwatch.js'; -// ----------------------------------------------------------------------------------------------------------------------- -// Uncomment the next line to print warnings whenever an emitter with listeners is disposed. That is a sign of code smell. -// ----------------------------------------------------------------------------------------------------------------------- -const _enableDisposeWithListenerWarning = false; -// ----------------------------------------------------------------------------------------------------------------------- -// Uncomment the next line to print warnings whenever a snapshotted event is used repeatedly without cleanup. -// See https://github.com/microsoft/vscode/issues/142851 -// ----------------------------------------------------------------------------------------------------------------------- -const _enableSnapshotPotentialLeakWarning = false; -export var Event; -(function (Event) { - Event.None = () => Disposable.None; - function _addLeakageTraceLogic(options) { - if (_enableSnapshotPotentialLeakWarning) { - const { onDidAddListener: origListenerDidAdd } = options; - const stack = Stacktrace.create(); - let count = 0; - options.onDidAddListener = () => { - if (++count === 2) { - console.warn('snapshotted emitter LIKELY used public and SHOULD HAVE BEEN created with DisposableStore. snapshotted here'); - stack.print(); - } - origListenerDidAdd?.(); - }; - } - } - /** - * Given an event, returns another event which debounces calls and defers the listeners to a later task via a shared - * `setTimeout`. The event is converted into a signal (`Event`) to avoid additional object creation as a - * result of merging events and to try prevent race conditions that could arise when using related deferred and - * non-deferred events. - * - * This is useful for deferring non-critical work (eg. general UI updates) to ensure it does not block critical work - * (eg. latency of keypress to text rendered). - * - * *NOTE* that this function returns an `Event` and it MUST be called with a `DisposableStore` whenever the returned - * event is accessible to "third parties", e.g the event is a public property. Otherwise a leaked listener on the - * returned event causes this utility to leak a listener on the original event. - * - * @param event The event source for the new event. - * @param disposable A disposable store to add the new EventEmitter to. - */ - function defer(event, disposable) { - return debounce(event, () => void 0, 0, undefined, true, undefined, disposable); - } - Event.defer = defer; - /** - * Given an event, returns another event which only fires once. - * - * @param event The event source for the new event. - */ - function once(event) { - return (listener, thisArgs = null, disposables) => { - // we need this, in case the event fires during the listener call - let didFire = false; - let result = undefined; - result = event(e => { - if (didFire) { - return; - } - else if (result) { - result.dispose(); - } - else { - didFire = true; - } - return listener.call(thisArgs, e); - }, null, disposables); - if (didFire) { - result.dispose(); - } - return result; - }; - } - Event.once = once; - /** - * Given an event, returns another event which only fires once, and only when the condition is met. - * - * @param event The event source for the new event. - */ - function onceIf(event, condition) { - return Event.once(Event.filter(event, condition)); - } - Event.onceIf = onceIf; - /** - * Maps an event of one type into an event of another type using a mapping function, similar to how - * `Array.prototype.map` works. - * - * *NOTE* that this function returns an `Event` and it MUST be called with a `DisposableStore` whenever the returned - * event is accessible to "third parties", e.g the event is a public property. Otherwise a leaked listener on the - * returned event causes this utility to leak a listener on the original event. - * - * @param event The event source for the new event. - * @param map The mapping function. - * @param disposable A disposable store to add the new EventEmitter to. - */ - function map(event, map, disposable) { - return snapshot((listener, thisArgs = null, disposables) => event(i => listener.call(thisArgs, map(i)), null, disposables), disposable); - } - Event.map = map; - /** - * Wraps an event in another event that performs some function on the event object before firing. - * - * *NOTE* that this function returns an `Event` and it MUST be called with a `DisposableStore` whenever the returned - * event is accessible to "third parties", e.g the event is a public property. Otherwise a leaked listener on the - * returned event causes this utility to leak a listener on the original event. - * - * @param event The event source for the new event. - * @param each The function to perform on the event object. - * @param disposable A disposable store to add the new EventEmitter to. - */ - function forEach(event, each, disposable) { - return snapshot((listener, thisArgs = null, disposables) => event(i => { each(i); listener.call(thisArgs, i); }, null, disposables), disposable); - } - Event.forEach = forEach; - function filter(event, filter, disposable) { - return snapshot((listener, thisArgs = null, disposables) => event(e => filter(e) && listener.call(thisArgs, e), null, disposables), disposable); - } - Event.filter = filter; - /** - * Given an event, returns the same event but typed as `Event`. - */ - function signal(event) { - return event; - } - Event.signal = signal; - function any(...events) { - return (listener, thisArgs = null, disposables) => { - const disposable = combinedDisposable(...events.map(event => event(e => listener.call(thisArgs, e)))); - return addAndReturnDisposable(disposable, disposables); - }; - } - Event.any = any; - /** - * *NOTE* that this function returns an `Event` and it MUST be called with a `DisposableStore` whenever the returned - * event is accessible to "third parties", e.g the event is a public property. Otherwise a leaked listener on the - * returned event causes this utility to leak a listener on the original event. - */ - function reduce(event, merge, initial, disposable) { - let output = initial; - return map(event, e => { - output = merge(output, e); - return output; - }, disposable); - } - Event.reduce = reduce; - function snapshot(event, disposable) { - let listener; - const options = { - onWillAddFirstListener() { - listener = event(emitter.fire, emitter); - }, - onDidRemoveLastListener() { - listener?.dispose(); - } - }; - if (!disposable) { - _addLeakageTraceLogic(options); - } - const emitter = new Emitter(options); - disposable?.add(emitter); - return emitter.event; - } - /** - * Adds the IDisposable to the store if it's set, and returns it. Useful to - * Event function implementation. - */ - function addAndReturnDisposable(d, store) { - if (store instanceof Array) { - store.push(d); - } - else if (store) { - store.add(d); - } - return d; - } - function debounce(event, merge, delay = 100, leading = false, flushOnListenerRemove = false, leakWarningThreshold, disposable) { - let subscription; - let output = undefined; - let handle = undefined; - let numDebouncedCalls = 0; - let doFire; - const options = { - leakWarningThreshold, - onWillAddFirstListener() { - subscription = event(cur => { - numDebouncedCalls++; - output = merge(output, cur); - if (leading && !handle) { - emitter.fire(output); - output = undefined; - } - doFire = () => { - const _output = output; - output = undefined; - handle = undefined; - if (!leading || numDebouncedCalls > 1) { - emitter.fire(_output); - } - numDebouncedCalls = 0; - }; - if (typeof delay === 'number') { - clearTimeout(handle); - handle = setTimeout(doFire, delay); - } - else { - if (handle === undefined) { - handle = 0; - queueMicrotask(doFire); - } - } - }); - }, - onWillRemoveListener() { - if (flushOnListenerRemove && numDebouncedCalls > 0) { - doFire?.(); - } - }, - onDidRemoveLastListener() { - doFire = undefined; - subscription.dispose(); - } - }; - if (!disposable) { - _addLeakageTraceLogic(options); - } - const emitter = new Emitter(options); - disposable?.add(emitter); - return emitter.event; - } - Event.debounce = debounce; - /** - * Debounces an event, firing after some delay (default=0) with an array of all event original objects. - * - * *NOTE* that this function returns an `Event` and it MUST be called with a `DisposableStore` whenever the returned - * event is accessible to "third parties", e.g the event is a public property. Otherwise a leaked listener on the - * returned event causes this utility to leak a listener on the original event. - */ - function accumulate(event, delay = 0, disposable) { - return Event.debounce(event, (last, e) => { - if (!last) { - return [e]; - } - last.push(e); - return last; - }, delay, undefined, true, undefined, disposable); - } - Event.accumulate = accumulate; - /** - * Filters an event such that some condition is _not_ met more than once in a row, effectively ensuring duplicate - * event objects from different sources do not fire the same event object. - * - * *NOTE* that this function returns an `Event` and it MUST be called with a `DisposableStore` whenever the returned - * event is accessible to "third parties", e.g the event is a public property. Otherwise a leaked listener on the - * returned event causes this utility to leak a listener on the original event. - * - * @param event The event source for the new event. - * @param equals The equality condition. - * @param disposable A disposable store to add the new EventEmitter to. - * - * @example - * ``` - * // Fire only one time when a single window is opened or focused - * Event.latch(Event.any(onDidOpenWindow, onDidFocusWindow)) - * ``` - */ - function latch(event, equals = (a, b) => a === b, disposable) { - let firstCall = true; - let cache; - return filter(event, value => { - const shouldEmit = firstCall || !equals(value, cache); - firstCall = false; - cache = value; - return shouldEmit; - }, disposable); - } - Event.latch = latch; - /** - * Splits an event whose parameter is a union type into 2 separate events for each type in the union. - * - * *NOTE* that this function returns an `Event` and it MUST be called with a `DisposableStore` whenever the returned - * event is accessible to "third parties", e.g the event is a public property. Otherwise a leaked listener on the - * returned event causes this utility to leak a listener on the original event. - * - * @example - * ``` - * const event = new EventEmitter().event; - * const [numberEvent, undefinedEvent] = Event.split(event, isUndefined); - * ``` - * - * @param event The event source for the new event. - * @param isT A function that determines what event is of the first type. - * @param disposable A disposable store to add the new EventEmitter to. - */ - function split(event, isT, disposable) { - return [ - Event.filter(event, isT, disposable), - Event.filter(event, e => !isT(e), disposable), - ]; - } - Event.split = split; - /** - * Buffers an event until it has a listener attached. - * - * *NOTE* that this function returns an `Event` and it MUST be called with a `DisposableStore` whenever the returned - * event is accessible to "third parties", e.g the event is a public property. Otherwise a leaked listener on the - * returned event causes this utility to leak a listener on the original event. - * - * @param event The event source for the new event. - * @param flushAfterTimeout Determines whether to flush the buffer after a timeout immediately or after a - * `setTimeout` when the first event listener is added. - * @param _buffer Internal: A source event array used for tests. - * - * @example - * ``` - * // Start accumulating events, when the first listener is attached, flush - * // the event after a timeout such that multiple listeners attached before - * // the timeout would receive the event - * this.onInstallExtension = Event.buffer(service.onInstallExtension, true); - * ``` - */ - function buffer(event, flushAfterTimeout = false, _buffer = [], disposable) { - let buffer = _buffer.slice(); - let listener = event(e => { - if (buffer) { - buffer.push(e); - } - else { - emitter.fire(e); - } - }); - if (disposable) { - disposable.add(listener); - } - const flush = () => { - buffer?.forEach(e => emitter.fire(e)); - buffer = null; - }; - const emitter = new Emitter({ - onWillAddFirstListener() { - if (!listener) { - listener = event(e => emitter.fire(e)); - if (disposable) { - disposable.add(listener); - } - } - }, - onDidAddFirstListener() { - if (buffer) { - if (flushAfterTimeout) { - setTimeout(flush); - } - else { - flush(); - } - } - }, - onDidRemoveLastListener() { - if (listener) { - listener.dispose(); - } - listener = null; - } - }); - if (disposable) { - disposable.add(emitter); - } - return emitter.event; - } - Event.buffer = buffer; - /** - * Wraps the event in an {@link IChainableEvent}, allowing a more functional programming style. - * - * @example - * ``` - * // Normal - * const onEnterPressNormal = Event.filter( - * Event.map(onKeyPress.event, e => new StandardKeyboardEvent(e)), - * e.keyCode === KeyCode.Enter - * ).event; - * - * // Using chain - * const onEnterPressChain = Event.chain(onKeyPress.event, $ => $ - * .map(e => new StandardKeyboardEvent(e)) - * .filter(e => e.keyCode === KeyCode.Enter) - * ); - * ``` - */ - function chain(event, sythensize) { - const fn = (listener, thisArgs, disposables) => { - const cs = sythensize(new ChainableSynthesis()); - return event(function (value) { - const result = cs.evaluate(value); - if (result !== HaltChainable) { - listener.call(thisArgs, result); - } - }, undefined, disposables); - }; - return fn; - } - Event.chain = chain; - const HaltChainable = Symbol('HaltChainable'); - class ChainableSynthesis { - steps = []; - map(fn) { - this.steps.push(fn); - return this; - } - forEach(fn) { - this.steps.push(v => { - fn(v); - return v; - }); - return this; - } - filter(fn) { - this.steps.push(v => fn(v) ? v : HaltChainable); - return this; - } - reduce(merge, initial) { - let last = initial; - this.steps.push(v => { - last = merge(last, v); - return last; - }); - return this; - } - latch(equals = (a, b) => a === b) { - let firstCall = true; - let cache; - this.steps.push(value => { - const shouldEmit = firstCall || !equals(value, cache); - firstCall = false; - cache = value; - return shouldEmit ? value : HaltChainable; - }); - return this; - } - evaluate(value) { - for (const step of this.steps) { - value = step(value); - if (value === HaltChainable) { - break; - } - } - return value; - } - } - /** - * Creates an {@link Event} from a node event emitter. - */ - function fromNodeEventEmitter(emitter, eventName, map = id => id) { - const fn = (...args) => result.fire(map(...args)); - const onFirstListenerAdd = () => emitter.on(eventName, fn); - const onLastListenerRemove = () => emitter.removeListener(eventName, fn); - const result = new Emitter({ onWillAddFirstListener: onFirstListenerAdd, onDidRemoveLastListener: onLastListenerRemove }); - return result.event; - } - Event.fromNodeEventEmitter = fromNodeEventEmitter; - /** - * Creates an {@link Event} from a DOM event emitter. - */ - function fromDOMEventEmitter(emitter, eventName, map = id => id) { - const fn = (...args) => result.fire(map(...args)); - const onFirstListenerAdd = () => emitter.addEventListener(eventName, fn); - const onLastListenerRemove = () => emitter.removeEventListener(eventName, fn); - const result = new Emitter({ onWillAddFirstListener: onFirstListenerAdd, onDidRemoveLastListener: onLastListenerRemove }); - return result.event; - } - Event.fromDOMEventEmitter = fromDOMEventEmitter; - /** - * Creates a promise out of an event, using the {@link Event.once} helper. - */ - function toPromise(event) { - return new Promise(resolve => once(event)(resolve)); - } - Event.toPromise = toPromise; - /** - * Creates an event out of a promise that fires once when the promise is - * resolved with the result of the promise or `undefined`. - */ - function fromPromise(promise) { - const result = new Emitter(); - promise.then(res => { - result.fire(res); - }, () => { - result.fire(undefined); - }).finally(() => { - result.dispose(); - }); - return result.event; - } - Event.fromPromise = fromPromise; - /** - * A convenience function for forwarding an event to another emitter which - * improves readability. - * - * This is similar to {@link Relay} but allows instantiating and forwarding - * on a single line and also allows for multiple source events. - * @param from The event to forward. - * @param to The emitter to forward the event to. - * @example - * Event.forward(event, emitter); - * // equivalent to - * event(e => emitter.fire(e)); - * // equivalent to - * event(emitter.fire, emitter); - */ - function forward(from, to) { - return from(e => to.fire(e)); - } - Event.forward = forward; - function runAndSubscribe(event, handler, initial) { - handler(initial); - return event(e => handler(e)); - } - Event.runAndSubscribe = runAndSubscribe; - class EmitterObserver { - _observable; - emitter; - _counter = 0; - _hasChanged = false; - constructor(_observable, store) { - this._observable = _observable; - const options = { - onWillAddFirstListener: () => { - _observable.addObserver(this); - // Communicate to the observable that we received its current value and would like to be notified about future changes. - this._observable.reportChanges(); - }, - onDidRemoveLastListener: () => { - _observable.removeObserver(this); - } - }; - if (!store) { - _addLeakageTraceLogic(options); - } - this.emitter = new Emitter(options); - if (store) { - store.add(this.emitter); - } - } - beginUpdate(_observable) { - // assert(_observable === this.obs); - this._counter++; - } - handlePossibleChange(_observable) { - // assert(_observable === this.obs); - } - handleChange(_observable, _change) { - // assert(_observable === this.obs); - this._hasChanged = true; - } - endUpdate(_observable) { - // assert(_observable === this.obs); - this._counter--; - if (this._counter === 0) { - this._observable.reportChanges(); - if (this._hasChanged) { - this._hasChanged = false; - this.emitter.fire(this._observable.get()); - } - } - } - } - /** - * Creates an event emitter that is fired when the observable changes. - * Each listeners subscribes to the emitter. - */ - function fromObservable(obs, store) { - const observer = new EmitterObserver(obs, store); - return observer.emitter.event; - } - Event.fromObservable = fromObservable; - /** - * Each listener is attached to the observable directly. - */ - function fromObservableLight(observable) { - return (listener, thisArgs, disposables) => { - let count = 0; - let didChange = false; - const observer = { - beginUpdate() { - count++; - }, - endUpdate() { - count--; - if (count === 0) { - observable.reportChanges(); - if (didChange) { - didChange = false; - listener.call(thisArgs); - } - } - }, - handlePossibleChange() { - // noop - }, - handleChange() { - didChange = true; - } - }; - observable.addObserver(observer); - observable.reportChanges(); - const disposable = { - dispose() { - observable.removeObserver(observer); - } - }; - if (disposables instanceof DisposableStore) { - disposables.add(disposable); - } - else if (Array.isArray(disposables)) { - disposables.push(disposable); - } - return disposable; - }; - } - Event.fromObservableLight = fromObservableLight; -})(Event = Event || (Event = {})); -export class EventProfiling { - static all = new Set(); - static _idPool = 0; - name; - listenerCount = 0; - invocationCount = 0; - elapsedOverall = 0; - durations = []; - _stopWatch; - constructor(name) { - this.name = `${name}_${EventProfiling._idPool++}`; - EventProfiling.all.add(this); - } - start(listenerCount) { - this._stopWatch = new StopWatch(); - this.listenerCount = listenerCount; - } - stop() { - if (this._stopWatch) { - const elapsed = this._stopWatch.elapsed(); - this.durations.push(elapsed); - this.elapsedOverall += elapsed; - this.invocationCount += 1; - this._stopWatch = undefined; - } - } -} -let _globalLeakWarningThreshold = -1; -export function setGlobalLeakWarningThreshold(n) { - const oldValue = _globalLeakWarningThreshold; - _globalLeakWarningThreshold = n; - return { - dispose() { - _globalLeakWarningThreshold = oldValue; - } - }; -} -class LeakageMonitor { - _errorHandler; - threshold; - name; - static _idPool = 1; - _stacks; - _warnCountdown = 0; - constructor(_errorHandler, threshold, name = (LeakageMonitor._idPool++).toString(16).padStart(3, '0')) { - this._errorHandler = _errorHandler; - this.threshold = threshold; - this.name = name; - } - dispose() { - this._stacks?.clear(); - } - check(stack, listenerCount) { - const threshold = this.threshold; - if (threshold <= 0 || listenerCount < threshold) { - return undefined; - } - if (!this._stacks) { - this._stacks = new Map(); - } - const count = (this._stacks.get(stack.value) || 0); - this._stacks.set(stack.value, count + 1); - this._warnCountdown -= 1; - if (this._warnCountdown <= 0) { - // only warn on first exceed and then every time the limit - // is exceeded by 50% again - this._warnCountdown = threshold * 0.5; - const [topStack, topCount] = this.getMostFrequentStack(); - const message = `[${this.name}] potential listener LEAK detected, having ${listenerCount} listeners already. MOST frequent listener (${topCount}):`; - console.warn(message); - console.warn(topStack); - const error = new ListenerLeakError(message, topStack); - this._errorHandler(error); - } - return () => { - const count = (this._stacks.get(stack.value) || 0); - this._stacks.set(stack.value, count - 1); - }; - } - getMostFrequentStack() { - if (!this._stacks) { - return undefined; - } - let topStack; - let topCount = 0; - for (const [stack, count] of this._stacks) { - if (!topStack || topCount < count) { - topStack = [stack, count]; - topCount = count; - } - } - return topStack; - } -} -class Stacktrace { - value; - static create() { - const err = new Error(); - return new Stacktrace(err.stack ?? ''); - } - constructor(value) { - this.value = value; - } - print() { - console.warn(this.value.split('\n').slice(2).join('\n')); - } -} -// error that is logged when going over the configured listener threshold -export class ListenerLeakError extends Error { - constructor(message, stack) { - super(message); - this.name = 'ListenerLeakError'; - this.stack = stack; - } -} -// SEVERE error that is logged when having gone way over the configured listener -// threshold so that the emitter refuses to accept more listeners -export class ListenerRefusalError extends Error { - constructor(message, stack) { - super(message); - this.name = 'ListenerRefusalError'; - this.stack = stack; - } -} -let id = 0; -class UniqueContainer { - value; - stack; - id = id++; - constructor(value) { - this.value = value; - } -} -const compactionThreshold = 2; -const forEachListener = (listeners, fn) => { - if (listeners instanceof UniqueContainer) { - fn(listeners); - } - else { - for (let i = 0; i < listeners.length; i++) { - const l = listeners[i]; - if (l) { - fn(l); - } - } - } -}; -/** - * The Emitter can be used to expose an Event to the public - * to fire it from the insides. - * Sample: - class Document { - - private readonly _onDidChange = new Emitter<(value:string)=>any>(); - - public onDidChange = this._onDidChange.event; - - // getter-style - // get onDidChange(): Event<(value:string)=>any> { - // return this._onDidChange.event; - // } - - private _doIt() { - //... - this._onDidChange.fire(value); - } - } - */ -export class Emitter { - _options; - _leakageMon; - _perfMon; - _disposed; - _event; - /** - * A listener, or list of listeners. A single listener is the most common - * for event emitters (#185789), so we optimize that special case to avoid - * wrapping it in an array (just like Node.js itself.) - * - * A list of listeners never 'downgrades' back to a plain function if - * listeners are removed, for two reasons: - * - * 1. That's complicated (especially with the deliveryQueue) - * 2. A listener with >1 listener is likely to have >1 listener again at - * some point, and swapping between arrays and functions may[citation needed] - * introduce unnecessary work and garbage. - * - * The array listeners can be 'sparse', to avoid reallocating the array - * whenever any listener is added or removed. If more than `1 / compactionThreshold` - * of the array is empty, only then is it resized. - */ - _listeners; - /** - * Always to be defined if _listeners is an array. It's no longer a true - * queue, but holds the dispatching 'state'. If `fire()` is called on an - * emitter, any work left in the _deliveryQueue is finished first. - */ - _deliveryQueue; - _size = 0; - constructor(options) { - this._options = options; - this._leakageMon = (_globalLeakWarningThreshold > 0 || this._options?.leakWarningThreshold) - ? new LeakageMonitor(options?.onListenerError ?? onUnexpectedError, this._options?.leakWarningThreshold ?? _globalLeakWarningThreshold) : - undefined; - this._perfMon = this._options?._profName ? new EventProfiling(this._options._profName) : undefined; - this._deliveryQueue = this._options?.deliveryQueue; - } - dispose() { - if (!this._disposed) { - this._disposed = true; - // It is bad to have listeners at the time of disposing an emitter, it is worst to have listeners keep the emitter - // alive via the reference that's embedded in their disposables. Therefore we loop over all remaining listeners and - // unset their subscriptions/disposables. Looping and blaming remaining listeners is done on next tick because the - // the following programming pattern is very popular: - // - // const someModel = this._disposables.add(new ModelObject()); // (1) create and register model - // this._disposables.add(someModel.onDidChange(() => { ... }); // (2) subscribe and register model-event listener - // ...later... - // this._disposables.dispose(); disposes (1) then (2): don't warn after (1) but after the "overall dispose" is done - if (this._deliveryQueue?.current === this) { - this._deliveryQueue.reset(); - } - if (this._listeners) { - if (_enableDisposeWithListenerWarning) { - const listeners = this._listeners; - queueMicrotask(() => { - forEachListener(listeners, l => l.stack?.print()); - }); - } - this._listeners = undefined; - this._size = 0; - } - this._options?.onDidRemoveLastListener?.(); - this._leakageMon?.dispose(); - } - } - /** - * For the public to allow to subscribe - * to events from this Emitter - */ - get event() { - this._event ??= (callback, thisArgs, disposables) => { - if (this._leakageMon && this._size > this._leakageMon.threshold ** 2) { - const message = `[${this._leakageMon.name}] REFUSES to accept new listeners because it exceeded its threshold by far (${this._size} vs ${this._leakageMon.threshold})`; - console.warn(message); - const tuple = this._leakageMon.getMostFrequentStack() ?? ['UNKNOWN stack', -1]; - const error = new ListenerRefusalError(`${message}. HINT: Stack shows most frequent listener (${tuple[1]}-times)`, tuple[0]); - const errorHandler = this._options?.onListenerError || onUnexpectedError; - errorHandler(error); - return Disposable.None; - } - if (this._disposed) { - // todo: should we warn if a listener is added to a disposed emitter? This happens often - return Disposable.None; - } - if (thisArgs) { - callback = callback.bind(thisArgs); - } - const contained = new UniqueContainer(callback); - let removeMonitor; - let stack; - if (this._leakageMon && this._size >= Math.ceil(this._leakageMon.threshold * 0.2)) { - // check and record this emitter for potential leakage - contained.stack = Stacktrace.create(); - removeMonitor = this._leakageMon.check(contained.stack, this._size + 1); - } - if (_enableDisposeWithListenerWarning) { - contained.stack = stack ?? Stacktrace.create(); - } - if (!this._listeners) { - this._options?.onWillAddFirstListener?.(this); - this._listeners = contained; - this._options?.onDidAddFirstListener?.(this); - } - else if (this._listeners instanceof UniqueContainer) { - this._deliveryQueue ??= new EventDeliveryQueuePrivate(); - this._listeners = [this._listeners, contained]; - } - else { - this._listeners.push(contained); - } - this._options?.onDidAddListener?.(this); - this._size++; - const result = toDisposable(() => { - removeMonitor?.(); - this._removeListener(contained); - }); - if (disposables instanceof DisposableStore) { - disposables.add(result); - } - else if (Array.isArray(disposables)) { - disposables.push(result); - } - return result; - }; - return this._event; - } - _removeListener(listener) { - this._options?.onWillRemoveListener?.(this); - if (!this._listeners) { - return; // expected if a listener gets disposed - } - if (this._size === 1) { - this._listeners = undefined; - this._options?.onDidRemoveLastListener?.(this); - this._size = 0; - return; - } - // size > 1 which requires that listeners be a list: - const listeners = this._listeners; - const index = listeners.indexOf(listener); - if (index === -1) { - console.log('disposed?', this._disposed); - console.log('size?', this._size); - console.log('arr?', JSON.stringify(this._listeners)); - throw new Error('Attempted to dispose unknown listener'); - } - this._size--; - listeners[index] = undefined; - const adjustDeliveryQueue = this._deliveryQueue.current === this; - if (this._size * compactionThreshold <= listeners.length) { - let n = 0; - for (let i = 0; i < listeners.length; i++) { - if (listeners[i]) { - listeners[n++] = listeners[i]; - } - else if (adjustDeliveryQueue && n < this._deliveryQueue.end) { - this._deliveryQueue.end--; - if (n < this._deliveryQueue.i) { - this._deliveryQueue.i--; - } - } - } - listeners.length = n; - } - } - _deliver(listener, value) { - if (!listener) { - return; - } - const errorHandler = this._options?.onListenerError || onUnexpectedError; - if (!errorHandler) { - listener.value(value); - return; - } - try { - listener.value(value); - } - catch (e) { - errorHandler(e); - } - } - /** Delivers items in the queue. Assumes the queue is ready to go. */ - _deliverQueue(dq) { - const listeners = dq.current._listeners; - while (dq.i < dq.end) { - // important: dq.i is incremented before calling deliver() because it might reenter deliverQueue() - this._deliver(listeners[dq.i++], dq.value); - } - dq.reset(); - } - /** - * To be kept private to fire an event to - * subscribers - */ - fire(event) { - if (this._deliveryQueue?.current) { - this._deliverQueue(this._deliveryQueue); - this._perfMon?.stop(); // last fire() will have starting perfmon, stop it before starting the next dispatch - } - this._perfMon?.start(this._size); - if (!this._listeners) { - // no-op - } - else if (this._listeners instanceof UniqueContainer) { - this._deliver(this._listeners, event); - } - else { - const dq = this._deliveryQueue; - dq.enqueue(this, event, this._listeners.length); - this._deliverQueue(dq); - } - this._perfMon?.stop(); - } - hasListeners() { - return this._size > 0; - } -} -export const createEventDeliveryQueue = () => new EventDeliveryQueuePrivate(); -class EventDeliveryQueuePrivate { - /** - * Index in current's listener list. - */ - i = -1; - /** - * The last index in the listener's list to deliver. - */ - end = 0; - /** - * Emitter currently being dispatched on. Emitter._listeners is always an array. - */ - current; - /** - * Currently emitting value. Defined whenever `current` is. - */ - value; - enqueue(emitter, value, end) { - this.i = 0; - this.end = end; - this.current = emitter; - this.value = value; - } - reset() { - this.i = this.end; // force any current emission loop to stop, mainly for during dispose - this.current = undefined; - this.value = undefined; - } -} -export class AsyncEmitter extends Emitter { - _asyncDeliveryQueue; - async fireAsync(data, token, promiseJoin) { - if (!this._listeners) { - return; - } - if (!this._asyncDeliveryQueue) { - this._asyncDeliveryQueue = new LinkedList(); - } - forEachListener(this._listeners, listener => this._asyncDeliveryQueue.push([listener.value, data])); - while (this._asyncDeliveryQueue.size > 0 && !token.isCancellationRequested) { - const [listener, data] = this._asyncDeliveryQueue.shift(); - const thenables = []; - // eslint-disable-next-line local/code-no-dangerous-type-assertions - const event = { - ...data, - token, - waitUntil: (p) => { - if (Object.isFrozen(thenables)) { - throw new Error('waitUntil can NOT be called asynchronous'); - } - if (promiseJoin) { - p = promiseJoin(p, listener); - } - thenables.push(p); - } - }; - try { - listener(event); - } - catch (e) { - onUnexpectedError(e); - continue; - } - // freeze thenables-collection to enforce sync-calls to - // wait until and then wait for all thenables to resolve - Object.freeze(thenables); - await Promise.allSettled(thenables).then(values => { - for (const value of values) { - if (value.status === 'rejected') { - onUnexpectedError(value.reason); - } - } - }); - } - } -} -export class PauseableEmitter extends Emitter { - _isPaused = 0; - _eventQueue = new LinkedList(); - _mergeFn; - get isPaused() { - return this._isPaused !== 0; - } - constructor(options) { - super(options); - this._mergeFn = options?.merge; - } - pause() { - this._isPaused++; - } - resume() { - if (this._isPaused !== 0 && --this._isPaused === 0) { - if (this._mergeFn) { - // use the merge function to create a single composite - // event. make a copy in case firing pauses this emitter - if (this._eventQueue.size > 0) { - const events = Array.from(this._eventQueue); - this._eventQueue.clear(); - super.fire(this._mergeFn(events)); - } - } - else { - // no merging, fire each event individually and test - // that this emitter isn't paused halfway through - while (!this._isPaused && this._eventQueue.size !== 0) { - super.fire(this._eventQueue.shift()); - } - } - } - } - fire(event) { - if (this._size) { - if (this._isPaused !== 0) { - this._eventQueue.push(event); - } - else { - super.fire(event); - } - } - } -} -export class DebounceEmitter extends PauseableEmitter { - _delay; - _handle; - constructor(options) { - super(options); - this._delay = options.delay ?? 100; - } - fire(event) { - if (!this._handle) { - this.pause(); - this._handle = setTimeout(() => { - this._handle = undefined; - this.resume(); - }, this._delay); - } - super.fire(event); - } -} -/** - * An emitter which queue all events and then process them at the - * end of the event loop. - */ -export class MicrotaskEmitter extends Emitter { - _queuedEvents = []; - _mergeFn; - constructor(options) { - super(options); - this._mergeFn = options?.merge; - } - fire(event) { - if (!this.hasListeners()) { - return; - } - this._queuedEvents.push(event); - if (this._queuedEvents.length === 1) { - queueMicrotask(() => { - if (this._mergeFn) { - super.fire(this._mergeFn(this._queuedEvents)); - } - else { - this._queuedEvents.forEach(e => super.fire(e)); - } - this._queuedEvents = []; - }); - } - } -} -/** - * An event emitter that multiplexes many events into a single event. - * - * @example Listen to the `onData` event of all `Thing`s, dynamically adding and removing `Thing`s - * to the multiplexer as needed. - * - * ```typescript - * const anythingDataMultiplexer = new EventMultiplexer<{ data: string }>(); - * - * const thingListeners = DisposableMap(); - * - * thingService.onDidAddThing(thing => { - * thingListeners.set(thing, anythingDataMultiplexer.add(thing.onData); - * }); - * thingService.onDidRemoveThing(thing => { - * thingListeners.deleteAndDispose(thing); - * }); - * - * anythingDataMultiplexer.event(e => { - * console.log('Something fired data ' + e.data) - * }); - * ``` - */ -export class EventMultiplexer { - emitter; - hasListeners = false; - events = []; - constructor() { - this.emitter = new Emitter({ - onWillAddFirstListener: () => this.onFirstListenerAdd(), - onDidRemoveLastListener: () => this.onLastListenerRemove() - }); - } - get event() { - return this.emitter.event; - } - add(event) { - const e = { event: event, listener: null }; - this.events.push(e); - if (this.hasListeners) { - this.hook(e); - } - const dispose = () => { - if (this.hasListeners) { - this.unhook(e); - } - const idx = this.events.indexOf(e); - this.events.splice(idx, 1); - }; - return toDisposable(createSingleCallFunction(dispose)); - } - onFirstListenerAdd() { - this.hasListeners = true; - this.events.forEach(e => this.hook(e)); - } - onLastListenerRemove() { - this.hasListeners = false; - this.events.forEach(e => this.unhook(e)); - } - hook(e) { - e.listener = e.event(r => this.emitter.fire(r)); - } - unhook(e) { - e.listener?.dispose(); - e.listener = null; - } - dispose() { - this.emitter.dispose(); - for (const e of this.events) { - e.listener?.dispose(); - } - this.events = []; - } -} -export class DynamicListEventMultiplexer { - _store = new DisposableStore(); - event; - constructor(items, onAddItem, onRemoveItem, getEvent) { - const multiplexer = this._store.add(new EventMultiplexer()); - const itemListeners = this._store.add(new DisposableMap()); - function addItem(instance) { - itemListeners.set(instance, multiplexer.add(getEvent(instance))); - } - // Existing items - for (const instance of items) { - addItem(instance); - } - // Added items - this._store.add(onAddItem(instance => { - addItem(instance); - })); - // Removed items - this._store.add(onRemoveItem(instance => { - itemListeners.deleteAndDispose(instance); - })); - this.event = multiplexer.event; - } - dispose() { - this._store.dispose(); - } -} -/** - * The EventBufferer is useful in situations in which you want - * to delay firing your events during some code. - * You can wrap that code and be sure that the event will not - * be fired during that wrap. - * - * ``` - * const emitter: Emitter; - * const delayer = new EventDelayer(); - * const delayedEvent = delayer.wrapEvent(emitter.event); - * - * delayedEvent(console.log); - * - * delayer.bufferEvents(() => { - * emitter.fire(); // event will not be fired yet - * }); - * - * // event will only be fired at this point - * ``` - */ -export class EventBufferer { - data = []; - wrapEvent(event, reduce, initial) { - return (listener, thisArgs, disposables) => { - return event(i => { - const data = this.data[this.data.length - 1]; - // Non-reduce scenario - if (!reduce) { - // Buffering case - if (data) { - data.buffers.push(() => listener.call(thisArgs, i)); - } - else { - // Not buffering case - listener.call(thisArgs, i); - } - return; - } - // Reduce scenario - const reduceData = data; - // Not buffering case - if (!reduceData) { - // TODO: Is there a way to cache this reduce call for all listeners? - listener.call(thisArgs, reduce(initial, i)); - return; - } - // Buffering case - reduceData.items ??= []; - reduceData.items.push(i); - if (reduceData.buffers.length === 0) { - // Include a single buffered function that will reduce all events when we're done buffering events - data.buffers.push(() => { - // cache the reduced result so that the value can be shared across all listeners - reduceData.reducedResult ??= initial - ? reduceData.items.reduce(reduce, initial) - : reduceData.items.reduce(reduce); - listener.call(thisArgs, reduceData.reducedResult); - }); - } - }, undefined, disposables); - }; - } - bufferEvents(fn) { - const data = { buffers: new Array() }; - this.data.push(data); - const r = fn(); - this.data.pop(); - data.buffers.forEach(flush => flush()); - return r; - } -} -/** - * A Relay is an event forwarder which functions as a replugabble event pipe. - * Once created, you can connect an input event to it and it will simply forward - * events from that input event through its own `event` property. The `input` - * can be changed at any point in time. - */ -export class Relay { - listening = false; - inputEvent = Event.None; - inputEventListener = Disposable.None; - emitter = new Emitter({ - onDidAddFirstListener: () => { - this.listening = true; - this.inputEventListener = this.inputEvent(this.emitter.fire, this.emitter); - }, - onDidRemoveLastListener: () => { - this.listening = false; - this.inputEventListener.dispose(); - } - }); - event = this.emitter.event; - set input(event) { - this.inputEvent = event; - if (this.listening) { - this.inputEventListener.dispose(); - this.inputEventListener = event(this.emitter.fire, this.emitter); - } - } - dispose() { - this.inputEventListener.dispose(); - this.emitter.dispose(); - } -} -export class ValueWithChangeEvent { - _value; - static const(value) { - return new ConstValueWithChangeEvent(value); - } - _onDidChange = new Emitter(); - onDidChange = this._onDidChange.event; - constructor(_value) { - this._value = _value; - } - get value() { - return this._value; - } - set value(value) { - if (value !== this._value) { - this._value = value; - this._onDidChange.fire(undefined); - } - } -} -class ConstValueWithChangeEvent { - value; - onDidChange = Event.None; - constructor(value) { - this.value = value; - } -} -/** - * @param handleItem Is called for each item in the set (but only the first time the item is seen in the set). - * The returned disposable is disposed if the item is no longer in the set. - */ -export function trackSetChanges(getData, onDidChangeData, handleItem) { - const map = new DisposableMap(); - let oldData = new Set(getData()); - for (const d of oldData) { - map.set(d, handleItem(d)); - } - const store = new DisposableStore(); - store.add(onDidChangeData(() => { - const newData = getData(); - const diff = diffSets(oldData, newData); - for (const r of diff.removed) { - map.deleteAndDispose(r); - } - for (const a of diff.added) { - map.set(a, handleItem(a)); - } - oldData = new Set(newData); - })); - store.add(map); - return store; -} +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +import { diffSets } from './collections.js'; +import { onUnexpectedError } from './errors.js'; +import { createSingleCallFunction } from './functional.js'; +import { combinedDisposable, Disposable, DisposableMap, DisposableStore, toDisposable } from './lifecycle.js'; +import { LinkedList } from './linkedList.js'; +import { StopWatch } from './stopwatch.js'; +// ----------------------------------------------------------------------------------------------------------------------- +// Uncomment the next line to print warnings whenever an emitter with listeners is disposed. That is a sign of code smell. +// ----------------------------------------------------------------------------------------------------------------------- +const _enableDisposeWithListenerWarning = false; +// ----------------------------------------------------------------------------------------------------------------------- +// Uncomment the next line to print warnings whenever a snapshotted event is used repeatedly without cleanup. +// See https://github.com/microsoft/vscode/issues/142851 +// ----------------------------------------------------------------------------------------------------------------------- +const _enableSnapshotPotentialLeakWarning = false; +export var Event; +(function (Event) { + Event.None = () => Disposable.None; + function _addLeakageTraceLogic(options) { + if (_enableSnapshotPotentialLeakWarning) { + const { onDidAddListener: origListenerDidAdd } = options; + const stack = Stacktrace.create(); + let count = 0; + options.onDidAddListener = () => { + if (++count === 2) { + console.warn('snapshotted emitter LIKELY used public and SHOULD HAVE BEEN created with DisposableStore. snapshotted here'); + stack.print(); + } + origListenerDidAdd?.(); + }; + } + } + /** + * Given an event, returns another event which debounces calls and defers the listeners to a later task via a shared + * `setTimeout`. The event is converted into a signal (`Event`) to avoid additional object creation as a + * result of merging events and to try prevent race conditions that could arise when using related deferred and + * non-deferred events. + * + * This is useful for deferring non-critical work (eg. general UI updates) to ensure it does not block critical work + * (eg. latency of keypress to text rendered). + * + * *NOTE* that this function returns an `Event` and it MUST be called with a `DisposableStore` whenever the returned + * event is accessible to "third parties", e.g the event is a public property. Otherwise a leaked listener on the + * returned event causes this utility to leak a listener on the original event. + * + * @param event The event source for the new event. + * @param disposable A disposable store to add the new EventEmitter to. + */ + function defer(event, disposable) { + return debounce(event, () => void 0, 0, undefined, true, undefined, disposable); + } + Event.defer = defer; + /** + * Given an event, returns another event which only fires once. + * + * @param event The event source for the new event. + */ + function once(event) { + return (listener, thisArgs = null, disposables) => { + // we need this, in case the event fires during the listener call + let didFire = false; + let result = undefined; + result = event(e => { + if (didFire) { + return; + } + else if (result) { + result.dispose(); + } + else { + didFire = true; + } + return listener.call(thisArgs, e); + }, null, disposables); + if (didFire) { + result.dispose(); + } + return result; + }; + } + Event.once = once; + /** + * Given an event, returns another event which only fires once, and only when the condition is met. + * + * @param event The event source for the new event. + */ + function onceIf(event, condition) { + return Event.once(Event.filter(event, condition)); + } + Event.onceIf = onceIf; + /** + * Maps an event of one type into an event of another type using a mapping function, similar to how + * `Array.prototype.map` works. + * + * *NOTE* that this function returns an `Event` and it MUST be called with a `DisposableStore` whenever the returned + * event is accessible to "third parties", e.g the event is a public property. Otherwise a leaked listener on the + * returned event causes this utility to leak a listener on the original event. + * + * @param event The event source for the new event. + * @param map The mapping function. + * @param disposable A disposable store to add the new EventEmitter to. + */ + function map(event, map, disposable) { + return snapshot((listener, thisArgs = null, disposables) => event(i => listener.call(thisArgs, map(i)), null, disposables), disposable); + } + Event.map = map; + /** + * Wraps an event in another event that performs some function on the event object before firing. + * + * *NOTE* that this function returns an `Event` and it MUST be called with a `DisposableStore` whenever the returned + * event is accessible to "third parties", e.g the event is a public property. Otherwise a leaked listener on the + * returned event causes this utility to leak a listener on the original event. + * + * @param event The event source for the new event. + * @param each The function to perform on the event object. + * @param disposable A disposable store to add the new EventEmitter to. + */ + function forEach(event, each, disposable) { + return snapshot((listener, thisArgs = null, disposables) => event(i => { each(i); listener.call(thisArgs, i); }, null, disposables), disposable); + } + Event.forEach = forEach; + function filter(event, filter, disposable) { + return snapshot((listener, thisArgs = null, disposables) => event(e => filter(e) && listener.call(thisArgs, e), null, disposables), disposable); + } + Event.filter = filter; + /** + * Given an event, returns the same event but typed as `Event`. + */ + function signal(event) { + return event; + } + Event.signal = signal; + function any(...events) { + return (listener, thisArgs = null, disposables) => { + const disposable = combinedDisposable(...events.map(event => event(e => listener.call(thisArgs, e)))); + return addAndReturnDisposable(disposable, disposables); + }; + } + Event.any = any; + /** + * *NOTE* that this function returns an `Event` and it MUST be called with a `DisposableStore` whenever the returned + * event is accessible to "third parties", e.g the event is a public property. Otherwise a leaked listener on the + * returned event causes this utility to leak a listener on the original event. + */ + function reduce(event, merge, initial, disposable) { + let output = initial; + return map(event, e => { + output = merge(output, e); + return output; + }, disposable); + } + Event.reduce = reduce; + function snapshot(event, disposable) { + let listener; + const options = { + onWillAddFirstListener() { + listener = event(emitter.fire, emitter); + }, + onDidRemoveLastListener() { + listener?.dispose(); + } + }; + if (!disposable) { + _addLeakageTraceLogic(options); + } + const emitter = new Emitter(options); + disposable?.add(emitter); + return emitter.event; + } + /** + * Adds the IDisposable to the store if it's set, and returns it. Useful to + * Event function implementation. + */ + function addAndReturnDisposable(d, store) { + if (store instanceof Array) { + store.push(d); + } + else if (store) { + store.add(d); + } + return d; + } + function debounce(event, merge, delay = 100, leading = false, flushOnListenerRemove = false, leakWarningThreshold, disposable) { + let subscription; + let output = undefined; + let handle = undefined; + let numDebouncedCalls = 0; + let doFire; + const options = { + leakWarningThreshold, + onWillAddFirstListener() { + subscription = event(cur => { + numDebouncedCalls++; + output = merge(output, cur); + if (leading && !handle) { + emitter.fire(output); + output = undefined; + } + doFire = () => { + const _output = output; + output = undefined; + handle = undefined; + if (!leading || numDebouncedCalls > 1) { + emitter.fire(_output); + } + numDebouncedCalls = 0; + }; + if (typeof delay === 'number') { + clearTimeout(handle); + handle = setTimeout(doFire, delay); + } + else { + if (handle === undefined) { + handle = 0; + queueMicrotask(doFire); + } + } + }); + }, + onWillRemoveListener() { + if (flushOnListenerRemove && numDebouncedCalls > 0) { + doFire?.(); + } + }, + onDidRemoveLastListener() { + doFire = undefined; + subscription.dispose(); + } + }; + if (!disposable) { + _addLeakageTraceLogic(options); + } + const emitter = new Emitter(options); + disposable?.add(emitter); + return emitter.event; + } + Event.debounce = debounce; + /** + * Debounces an event, firing after some delay (default=0) with an array of all event original objects. + * + * *NOTE* that this function returns an `Event` and it MUST be called with a `DisposableStore` whenever the returned + * event is accessible to "third parties", e.g the event is a public property. Otherwise a leaked listener on the + * returned event causes this utility to leak a listener on the original event. + */ + function accumulate(event, delay = 0, disposable) { + return Event.debounce(event, (last, e) => { + if (!last) { + return [e]; + } + last.push(e); + return last; + }, delay, undefined, true, undefined, disposable); + } + Event.accumulate = accumulate; + /** + * Filters an event such that some condition is _not_ met more than once in a row, effectively ensuring duplicate + * event objects from different sources do not fire the same event object. + * + * *NOTE* that this function returns an `Event` and it MUST be called with a `DisposableStore` whenever the returned + * event is accessible to "third parties", e.g the event is a public property. Otherwise a leaked listener on the + * returned event causes this utility to leak a listener on the original event. + * + * @param event The event source for the new event. + * @param equals The equality condition. + * @param disposable A disposable store to add the new EventEmitter to. + * + * @example + * ``` + * // Fire only one time when a single window is opened or focused + * Event.latch(Event.any(onDidOpenWindow, onDidFocusWindow)) + * ``` + */ + function latch(event, equals = (a, b) => a === b, disposable) { + let firstCall = true; + let cache; + return filter(event, value => { + const shouldEmit = firstCall || !equals(value, cache); + firstCall = false; + cache = value; + return shouldEmit; + }, disposable); + } + Event.latch = latch; + /** + * Splits an event whose parameter is a union type into 2 separate events for each type in the union. + * + * *NOTE* that this function returns an `Event` and it MUST be called with a `DisposableStore` whenever the returned + * event is accessible to "third parties", e.g the event is a public property. Otherwise a leaked listener on the + * returned event causes this utility to leak a listener on the original event. + * + * @example + * ``` + * const event = new EventEmitter().event; + * const [numberEvent, undefinedEvent] = Event.split(event, isUndefined); + * ``` + * + * @param event The event source for the new event. + * @param isT A function that determines what event is of the first type. + * @param disposable A disposable store to add the new EventEmitter to. + */ + function split(event, isT, disposable) { + return [ + Event.filter(event, isT, disposable), + Event.filter(event, e => !isT(e), disposable), + ]; + } + Event.split = split; + /** + * Buffers an event until it has a listener attached. + * + * *NOTE* that this function returns an `Event` and it MUST be called with a `DisposableStore` whenever the returned + * event is accessible to "third parties", e.g the event is a public property. Otherwise a leaked listener on the + * returned event causes this utility to leak a listener on the original event. + * + * @param event The event source for the new event. + * @param flushAfterTimeout Determines whether to flush the buffer after a timeout immediately or after a + * `setTimeout` when the first event listener is added. + * @param _buffer Internal: A source event array used for tests. + * + * @example + * ``` + * // Start accumulating events, when the first listener is attached, flush + * // the event after a timeout such that multiple listeners attached before + * // the timeout would receive the event + * this.onInstallExtension = Event.buffer(service.onInstallExtension, true); + * ``` + */ + function buffer(event, flushAfterTimeout = false, _buffer = [], disposable) { + let buffer = _buffer.slice(); + let listener = event(e => { + if (buffer) { + buffer.push(e); + } + else { + emitter.fire(e); + } + }); + if (disposable) { + disposable.add(listener); + } + const flush = () => { + buffer?.forEach(e => emitter.fire(e)); + buffer = null; + }; + const emitter = new Emitter({ + onWillAddFirstListener() { + if (!listener) { + listener = event(e => emitter.fire(e)); + if (disposable) { + disposable.add(listener); + } + } + }, + onDidAddFirstListener() { + if (buffer) { + if (flushAfterTimeout) { + setTimeout(flush); + } + else { + flush(); + } + } + }, + onDidRemoveLastListener() { + if (listener) { + listener.dispose(); + } + listener = null; + } + }); + if (disposable) { + disposable.add(emitter); + } + return emitter.event; + } + Event.buffer = buffer; + /** + * Wraps the event in an {@link IChainableEvent}, allowing a more functional programming style. + * + * @example + * ``` + * // Normal + * const onEnterPressNormal = Event.filter( + * Event.map(onKeyPress.event, e => new StandardKeyboardEvent(e)), + * e.keyCode === KeyCode.Enter + * ).event; + * + * // Using chain + * const onEnterPressChain = Event.chain(onKeyPress.event, $ => $ + * .map(e => new StandardKeyboardEvent(e)) + * .filter(e => e.keyCode === KeyCode.Enter) + * ); + * ``` + */ + function chain(event, sythensize) { + const fn = (listener, thisArgs, disposables) => { + const cs = sythensize(new ChainableSynthesis()); + return event(function (value) { + const result = cs.evaluate(value); + if (result !== HaltChainable) { + listener.call(thisArgs, result); + } + }, undefined, disposables); + }; + return fn; + } + Event.chain = chain; + const HaltChainable = Symbol('HaltChainable'); + class ChainableSynthesis { + steps = []; + map(fn) { + this.steps.push(fn); + return this; + } + forEach(fn) { + this.steps.push(v => { + fn(v); + return v; + }); + return this; + } + filter(fn) { + this.steps.push(v => fn(v) ? v : HaltChainable); + return this; + } + reduce(merge, initial) { + let last = initial; + this.steps.push(v => { + last = merge(last, v); + return last; + }); + return this; + } + latch(equals = (a, b) => a === b) { + let firstCall = true; + let cache; + this.steps.push(value => { + const shouldEmit = firstCall || !equals(value, cache); + firstCall = false; + cache = value; + return shouldEmit ? value : HaltChainable; + }); + return this; + } + evaluate(value) { + for (const step of this.steps) { + value = step(value); + if (value === HaltChainable) { + break; + } + } + return value; + } + } + /** + * Creates an {@link Event} from a node event emitter. + */ + function fromNodeEventEmitter(emitter, eventName, map = id => id) { + const fn = (...args) => result.fire(map(...args)); + const onFirstListenerAdd = () => emitter.on(eventName, fn); + const onLastListenerRemove = () => emitter.removeListener(eventName, fn); + const result = new Emitter({ onWillAddFirstListener: onFirstListenerAdd, onDidRemoveLastListener: onLastListenerRemove }); + return result.event; + } + Event.fromNodeEventEmitter = fromNodeEventEmitter; + /** + * Creates an {@link Event} from a DOM event emitter. + */ + function fromDOMEventEmitter(emitter, eventName, map = id => id) { + const fn = (...args) => result.fire(map(...args)); + const onFirstListenerAdd = () => emitter.addEventListener(eventName, fn); + const onLastListenerRemove = () => emitter.removeEventListener(eventName, fn); + const result = new Emitter({ onWillAddFirstListener: onFirstListenerAdd, onDidRemoveLastListener: onLastListenerRemove }); + return result.event; + } + Event.fromDOMEventEmitter = fromDOMEventEmitter; + /** + * Creates a promise out of an event, using the {@link Event.once} helper. + */ + function toPromise(event) { + return new Promise(resolve => once(event)(resolve)); + } + Event.toPromise = toPromise; + /** + * Creates an event out of a promise that fires once when the promise is + * resolved with the result of the promise or `undefined`. + */ + function fromPromise(promise) { + const result = new Emitter(); + promise.then(res => { + result.fire(res); + }, () => { + result.fire(undefined); + }).finally(() => { + result.dispose(); + }); + return result.event; + } + Event.fromPromise = fromPromise; + /** + * A convenience function for forwarding an event to another emitter which + * improves readability. + * + * This is similar to {@link Relay} but allows instantiating and forwarding + * on a single line and also allows for multiple source events. + * @param from The event to forward. + * @param to The emitter to forward the event to. + * @example + * Event.forward(event, emitter); + * // equivalent to + * event(e => emitter.fire(e)); + * // equivalent to + * event(emitter.fire, emitter); + */ + function forward(from, to) { + return from(e => to.fire(e)); + } + Event.forward = forward; + function runAndSubscribe(event, handler, initial) { + handler(initial); + return event(e => handler(e)); + } + Event.runAndSubscribe = runAndSubscribe; + class EmitterObserver { + _observable; + emitter; + _counter = 0; + _hasChanged = false; + constructor(_observable, store) { + this._observable = _observable; + const options = { + onWillAddFirstListener: () => { + _observable.addObserver(this); + // Communicate to the observable that we received its current value and would like to be notified about future changes. + this._observable.reportChanges(); + }, + onDidRemoveLastListener: () => { + _observable.removeObserver(this); + } + }; + if (!store) { + _addLeakageTraceLogic(options); + } + this.emitter = new Emitter(options); + if (store) { + store.add(this.emitter); + } + } + beginUpdate(_observable) { + // assert(_observable === this.obs); + this._counter++; + } + handlePossibleChange(_observable) { + // assert(_observable === this.obs); + } + handleChange(_observable, _change) { + // assert(_observable === this.obs); + this._hasChanged = true; + } + endUpdate(_observable) { + // assert(_observable === this.obs); + this._counter--; + if (this._counter === 0) { + this._observable.reportChanges(); + if (this._hasChanged) { + this._hasChanged = false; + this.emitter.fire(this._observable.get()); + } + } + } + } + /** + * Creates an event emitter that is fired when the observable changes. + * Each listeners subscribes to the emitter. + */ + function fromObservable(obs, store) { + const observer = new EmitterObserver(obs, store); + return observer.emitter.event; + } + Event.fromObservable = fromObservable; + /** + * Each listener is attached to the observable directly. + */ + function fromObservableLight(observable) { + return (listener, thisArgs, disposables) => { + let count = 0; + let didChange = false; + const observer = { + beginUpdate() { + count++; + }, + endUpdate() { + count--; + if (count === 0) { + observable.reportChanges(); + if (didChange) { + didChange = false; + listener.call(thisArgs); + } + } + }, + handlePossibleChange() { + // noop + }, + handleChange() { + didChange = true; + } + }; + observable.addObserver(observer); + observable.reportChanges(); + const disposable = { + dispose() { + observable.removeObserver(observer); + } + }; + if (disposables instanceof DisposableStore) { + disposables.add(disposable); + } + else if (Array.isArray(disposables)) { + disposables.push(disposable); + } + return disposable; + }; + } + Event.fromObservableLight = fromObservableLight; +})(Event || (Event = {})); +export class EventProfiling { + static all = new Set(); + static _idPool = 0; + name; + listenerCount = 0; + invocationCount = 0; + elapsedOverall = 0; + durations = []; + _stopWatch; + constructor(name) { + this.name = `${name}_${EventProfiling._idPool++}`; + EventProfiling.all.add(this); + } + start(listenerCount) { + this._stopWatch = new StopWatch(); + this.listenerCount = listenerCount; + } + stop() { + if (this._stopWatch) { + const elapsed = this._stopWatch.elapsed(); + this.durations.push(elapsed); + this.elapsedOverall += elapsed; + this.invocationCount += 1; + this._stopWatch = undefined; + } + } +} +let _globalLeakWarningThreshold = -1; +export function setGlobalLeakWarningThreshold(n) { + const oldValue = _globalLeakWarningThreshold; + _globalLeakWarningThreshold = n; + return { + dispose() { + _globalLeakWarningThreshold = oldValue; + } + }; +} +class LeakageMonitor { + _errorHandler; + threshold; + name; + static _idPool = 1; + _stacks; + _warnCountdown = 0; + constructor(_errorHandler, threshold, name = (LeakageMonitor._idPool++).toString(16).padStart(3, '0')) { + this._errorHandler = _errorHandler; + this.threshold = threshold; + this.name = name; + } + dispose() { + this._stacks?.clear(); + } + check(stack, listenerCount) { + const threshold = this.threshold; + if (threshold <= 0 || listenerCount < threshold) { + return undefined; + } + if (!this._stacks) { + this._stacks = new Map(); + } + const count = (this._stacks.get(stack.value) || 0); + this._stacks.set(stack.value, count + 1); + this._warnCountdown -= 1; + if (this._warnCountdown <= 0) { + // only warn on first exceed and then every time the limit + // is exceeded by 50% again + this._warnCountdown = threshold * 0.5; + const [topStack, topCount] = this.getMostFrequentStack(); + const message = `[${this.name}] potential listener LEAK detected, having ${listenerCount} listeners already. MOST frequent listener (${topCount}):`; + console.warn(message); + console.warn(topStack); + const error = new ListenerLeakError(message, topStack); + this._errorHandler(error); + } + return () => { + const count = (this._stacks.get(stack.value) || 0); + this._stacks.set(stack.value, count - 1); + }; + } + getMostFrequentStack() { + if (!this._stacks) { + return undefined; + } + let topStack; + let topCount = 0; + for (const [stack, count] of this._stacks) { + if (!topStack || topCount < count) { + topStack = [stack, count]; + topCount = count; + } + } + return topStack; + } +} +class Stacktrace { + value; + static create() { + const err = new Error(); + return new Stacktrace(err.stack ?? ''); + } + constructor(value) { + this.value = value; + } + print() { + console.warn(this.value.split('\n').slice(2).join('\n')); + } +} +// error that is logged when going over the configured listener threshold +export class ListenerLeakError extends Error { + constructor(message, stack) { + super(message); + this.name = 'ListenerLeakError'; + this.stack = stack; + } +} +// SEVERE error that is logged when having gone way over the configured listener +// threshold so that the emitter refuses to accept more listeners +export class ListenerRefusalError extends Error { + constructor(message, stack) { + super(message); + this.name = 'ListenerRefusalError'; + this.stack = stack; + } +} +let id = 0; +class UniqueContainer { + value; + stack; + id = id++; + constructor(value) { + this.value = value; + } +} +const compactionThreshold = 2; +const forEachListener = (listeners, fn) => { + if (listeners instanceof UniqueContainer) { + fn(listeners); + } + else { + for (let i = 0; i < listeners.length; i++) { + const l = listeners[i]; + if (l) { + fn(l); + } + } + } +}; +/** + * The Emitter can be used to expose an Event to the public + * to fire it from the insides. + * Sample: + class Document { + + private readonly _onDidChange = new Emitter<(value:string)=>any>(); + + public onDidChange = this._onDidChange.event; + + // getter-style + // get onDidChange(): Event<(value:string)=>any> { + // return this._onDidChange.event; + // } + + private _doIt() { + //... + this._onDidChange.fire(value); + } + } + */ +export class Emitter { + _options; + _leakageMon; + _perfMon; + _disposed; + _event; + /** + * A listener, or list of listeners. A single listener is the most common + * for event emitters (#185789), so we optimize that special case to avoid + * wrapping it in an array (just like Node.js itself.) + * + * A list of listeners never 'downgrades' back to a plain function if + * listeners are removed, for two reasons: + * + * 1. That's complicated (especially with the deliveryQueue) + * 2. A listener with >1 listener is likely to have >1 listener again at + * some point, and swapping between arrays and functions may[citation needed] + * introduce unnecessary work and garbage. + * + * The array listeners can be 'sparse', to avoid reallocating the array + * whenever any listener is added or removed. If more than `1 / compactionThreshold` + * of the array is empty, only then is it resized. + */ + _listeners; + /** + * Always to be defined if _listeners is an array. It's no longer a true + * queue, but holds the dispatching 'state'. If `fire()` is called on an + * emitter, any work left in the _deliveryQueue is finished first. + */ + _deliveryQueue; + _size = 0; + constructor(options) { + this._options = options; + this._leakageMon = (_globalLeakWarningThreshold > 0 || this._options?.leakWarningThreshold) + ? new LeakageMonitor(options?.onListenerError ?? onUnexpectedError, this._options?.leakWarningThreshold ?? _globalLeakWarningThreshold) : + undefined; + this._perfMon = this._options?._profName ? new EventProfiling(this._options._profName) : undefined; + this._deliveryQueue = this._options?.deliveryQueue; + } + dispose() { + if (!this._disposed) { + this._disposed = true; + // It is bad to have listeners at the time of disposing an emitter, it is worst to have listeners keep the emitter + // alive via the reference that's embedded in their disposables. Therefore we loop over all remaining listeners and + // unset their subscriptions/disposables. Looping and blaming remaining listeners is done on next tick because the + // the following programming pattern is very popular: + // + // const someModel = this._disposables.add(new ModelObject()); // (1) create and register model + // this._disposables.add(someModel.onDidChange(() => { ... }); // (2) subscribe and register model-event listener + // ...later... + // this._disposables.dispose(); disposes (1) then (2): don't warn after (1) but after the "overall dispose" is done + if (this._deliveryQueue?.current === this) { + this._deliveryQueue.reset(); + } + if (this._listeners) { + if (_enableDisposeWithListenerWarning) { + const listeners = this._listeners; + queueMicrotask(() => { + forEachListener(listeners, l => l.stack?.print()); + }); + } + this._listeners = undefined; + this._size = 0; + } + this._options?.onDidRemoveLastListener?.(); + this._leakageMon?.dispose(); + } + } + /** + * For the public to allow to subscribe + * to events from this Emitter + */ + get event() { + this._event ??= (callback, thisArgs, disposables) => { + if (this._leakageMon && this._size > this._leakageMon.threshold ** 2) { + const message = `[${this._leakageMon.name}] REFUSES to accept new listeners because it exceeded its threshold by far (${this._size} vs ${this._leakageMon.threshold})`; + console.warn(message); + const tuple = this._leakageMon.getMostFrequentStack() ?? ['UNKNOWN stack', -1]; + const error = new ListenerRefusalError(`${message}. HINT: Stack shows most frequent listener (${tuple[1]}-times)`, tuple[0]); + const errorHandler = this._options?.onListenerError || onUnexpectedError; + errorHandler(error); + return Disposable.None; + } + if (this._disposed) { + // todo: should we warn if a listener is added to a disposed emitter? This happens often + return Disposable.None; + } + if (thisArgs) { + callback = callback.bind(thisArgs); + } + const contained = new UniqueContainer(callback); + let removeMonitor; + let stack; + if (this._leakageMon && this._size >= Math.ceil(this._leakageMon.threshold * 0.2)) { + // check and record this emitter for potential leakage + contained.stack = Stacktrace.create(); + removeMonitor = this._leakageMon.check(contained.stack, this._size + 1); + } + if (_enableDisposeWithListenerWarning) { + contained.stack = stack ?? Stacktrace.create(); + } + if (!this._listeners) { + this._options?.onWillAddFirstListener?.(this); + this._listeners = contained; + this._options?.onDidAddFirstListener?.(this); + } + else if (this._listeners instanceof UniqueContainer) { + this._deliveryQueue ??= new EventDeliveryQueuePrivate(); + this._listeners = [this._listeners, contained]; + } + else { + this._listeners.push(contained); + } + this._options?.onDidAddListener?.(this); + this._size++; + const result = toDisposable(() => { + removeMonitor?.(); + this._removeListener(contained); + }); + if (disposables instanceof DisposableStore) { + disposables.add(result); + } + else if (Array.isArray(disposables)) { + disposables.push(result); + } + return result; + }; + return this._event; + } + _removeListener(listener) { + this._options?.onWillRemoveListener?.(this); + if (!this._listeners) { + return; // expected if a listener gets disposed + } + if (this._size === 1) { + this._listeners = undefined; + this._options?.onDidRemoveLastListener?.(this); + this._size = 0; + return; + } + // size > 1 which requires that listeners be a list: + const listeners = this._listeners; + const index = listeners.indexOf(listener); + if (index === -1) { + console.log('disposed?', this._disposed); + console.log('size?', this._size); + console.log('arr?', JSON.stringify(this._listeners)); + throw new Error('Attempted to dispose unknown listener'); + } + this._size--; + listeners[index] = undefined; + const adjustDeliveryQueue = this._deliveryQueue.current === this; + if (this._size * compactionThreshold <= listeners.length) { + let n = 0; + for (let i = 0; i < listeners.length; i++) { + if (listeners[i]) { + listeners[n++] = listeners[i]; + } + else if (adjustDeliveryQueue && n < this._deliveryQueue.end) { + this._deliveryQueue.end--; + if (n < this._deliveryQueue.i) { + this._deliveryQueue.i--; + } + } + } + listeners.length = n; + } + } + _deliver(listener, value) { + if (!listener) { + return; + } + const errorHandler = this._options?.onListenerError || onUnexpectedError; + if (!errorHandler) { + listener.value(value); + return; + } + try { + listener.value(value); + } + catch (e) { + errorHandler(e); + } + } + /** Delivers items in the queue. Assumes the queue is ready to go. */ + _deliverQueue(dq) { + const listeners = dq.current._listeners; + while (dq.i < dq.end) { + // important: dq.i is incremented before calling deliver() because it might reenter deliverQueue() + this._deliver(listeners[dq.i++], dq.value); + } + dq.reset(); + } + /** + * To be kept private to fire an event to + * subscribers + */ + fire(event) { + if (this._deliveryQueue?.current) { + this._deliverQueue(this._deliveryQueue); + this._perfMon?.stop(); // last fire() will have starting perfmon, stop it before starting the next dispatch + } + this._perfMon?.start(this._size); + if (!this._listeners) { + // no-op + } + else if (this._listeners instanceof UniqueContainer) { + this._deliver(this._listeners, event); + } + else { + const dq = this._deliveryQueue; + dq.enqueue(this, event, this._listeners.length); + this._deliverQueue(dq); + } + this._perfMon?.stop(); + } + hasListeners() { + return this._size > 0; + } +} +export const createEventDeliveryQueue = () => new EventDeliveryQueuePrivate(); +class EventDeliveryQueuePrivate { + /** + * Index in current's listener list. + */ + i = -1; + /** + * The last index in the listener's list to deliver. + */ + end = 0; + /** + * Emitter currently being dispatched on. Emitter._listeners is always an array. + */ + current; + /** + * Currently emitting value. Defined whenever `current` is. + */ + value; + enqueue(emitter, value, end) { + this.i = 0; + this.end = end; + this.current = emitter; + this.value = value; + } + reset() { + this.i = this.end; // force any current emission loop to stop, mainly for during dispose + this.current = undefined; + this.value = undefined; + } +} +export class AsyncEmitter extends Emitter { + _asyncDeliveryQueue; + async fireAsync(data, token, promiseJoin) { + if (!this._listeners) { + return; + } + if (!this._asyncDeliveryQueue) { + this._asyncDeliveryQueue = new LinkedList(); + } + forEachListener(this._listeners, listener => this._asyncDeliveryQueue.push([listener.value, data])); + while (this._asyncDeliveryQueue.size > 0 && !token.isCancellationRequested) { + const [listener, data] = this._asyncDeliveryQueue.shift(); + const thenables = []; + // eslint-disable-next-line local/code-no-dangerous-type-assertions + const event = { + ...data, + token, + waitUntil: (p) => { + if (Object.isFrozen(thenables)) { + throw new Error('waitUntil can NOT be called asynchronous'); + } + if (promiseJoin) { + p = promiseJoin(p, listener); + } + thenables.push(p); + } + }; + try { + listener(event); + } + catch (e) { + onUnexpectedError(e); + continue; + } + // freeze thenables-collection to enforce sync-calls to + // wait until and then wait for all thenables to resolve + Object.freeze(thenables); + await Promise.allSettled(thenables).then(values => { + for (const value of values) { + if (value.status === 'rejected') { + onUnexpectedError(value.reason); + } + } + }); + } + } +} +export class PauseableEmitter extends Emitter { + _isPaused = 0; + _eventQueue = new LinkedList(); + _mergeFn; + get isPaused() { + return this._isPaused !== 0; + } + constructor(options) { + super(options); + this._mergeFn = options?.merge; + } + pause() { + this._isPaused++; + } + resume() { + if (this._isPaused !== 0 && --this._isPaused === 0) { + if (this._mergeFn) { + // use the merge function to create a single composite + // event. make a copy in case firing pauses this emitter + if (this._eventQueue.size > 0) { + const events = Array.from(this._eventQueue); + this._eventQueue.clear(); + super.fire(this._mergeFn(events)); + } + } + else { + // no merging, fire each event individually and test + // that this emitter isn't paused halfway through + while (!this._isPaused && this._eventQueue.size !== 0) { + super.fire(this._eventQueue.shift()); + } + } + } + } + fire(event) { + if (this._size) { + if (this._isPaused !== 0) { + this._eventQueue.push(event); + } + else { + super.fire(event); + } + } + } +} +export class DebounceEmitter extends PauseableEmitter { + _delay; + _handle; + constructor(options) { + super(options); + this._delay = options.delay ?? 100; + } + fire(event) { + if (!this._handle) { + this.pause(); + this._handle = setTimeout(() => { + this._handle = undefined; + this.resume(); + }, this._delay); + } + super.fire(event); + } +} +/** + * An emitter which queue all events and then process them at the + * end of the event loop. + */ +export class MicrotaskEmitter extends Emitter { + _queuedEvents = []; + _mergeFn; + constructor(options) { + super(options); + this._mergeFn = options?.merge; + } + fire(event) { + if (!this.hasListeners()) { + return; + } + this._queuedEvents.push(event); + if (this._queuedEvents.length === 1) { + queueMicrotask(() => { + if (this._mergeFn) { + super.fire(this._mergeFn(this._queuedEvents)); + } + else { + this._queuedEvents.forEach(e => super.fire(e)); + } + this._queuedEvents = []; + }); + } + } +} +/** + * An event emitter that multiplexes many events into a single event. + * + * @example Listen to the `onData` event of all `Thing`s, dynamically adding and removing `Thing`s + * to the multiplexer as needed. + * + * ```typescript + * const anythingDataMultiplexer = new EventMultiplexer<{ data: string }>(); + * + * const thingListeners = DisposableMap(); + * + * thingService.onDidAddThing(thing => { + * thingListeners.set(thing, anythingDataMultiplexer.add(thing.onData); + * }); + * thingService.onDidRemoveThing(thing => { + * thingListeners.deleteAndDispose(thing); + * }); + * + * anythingDataMultiplexer.event(e => { + * console.log('Something fired data ' + e.data) + * }); + * ``` + */ +export class EventMultiplexer { + emitter; + hasListeners = false; + events = []; + constructor() { + this.emitter = new Emitter({ + onWillAddFirstListener: () => this.onFirstListenerAdd(), + onDidRemoveLastListener: () => this.onLastListenerRemove() + }); + } + get event() { + return this.emitter.event; + } + add(event) { + const e = { event: event, listener: null }; + this.events.push(e); + if (this.hasListeners) { + this.hook(e); + } + const dispose = () => { + if (this.hasListeners) { + this.unhook(e); + } + const idx = this.events.indexOf(e); + this.events.splice(idx, 1); + }; + return toDisposable(createSingleCallFunction(dispose)); + } + onFirstListenerAdd() { + this.hasListeners = true; + this.events.forEach(e => this.hook(e)); + } + onLastListenerRemove() { + this.hasListeners = false; + this.events.forEach(e => this.unhook(e)); + } + hook(e) { + e.listener = e.event(r => this.emitter.fire(r)); + } + unhook(e) { + e.listener?.dispose(); + e.listener = null; + } + dispose() { + this.emitter.dispose(); + for (const e of this.events) { + e.listener?.dispose(); + } + this.events = []; + } +} +export class DynamicListEventMultiplexer { + _store = new DisposableStore(); + event; + constructor(items, onAddItem, onRemoveItem, getEvent) { + const multiplexer = this._store.add(new EventMultiplexer()); + const itemListeners = this._store.add(new DisposableMap()); + function addItem(instance) { + itemListeners.set(instance, multiplexer.add(getEvent(instance))); + } + // Existing items + for (const instance of items) { + addItem(instance); + } + // Added items + this._store.add(onAddItem(instance => { + addItem(instance); + })); + // Removed items + this._store.add(onRemoveItem(instance => { + itemListeners.deleteAndDispose(instance); + })); + this.event = multiplexer.event; + } + dispose() { + this._store.dispose(); + } +} +/** + * The EventBufferer is useful in situations in which you want + * to delay firing your events during some code. + * You can wrap that code and be sure that the event will not + * be fired during that wrap. + * + * ``` + * const emitter: Emitter; + * const delayer = new EventDelayer(); + * const delayedEvent = delayer.wrapEvent(emitter.event); + * + * delayedEvent(console.log); + * + * delayer.bufferEvents(() => { + * emitter.fire(); // event will not be fired yet + * }); + * + * // event will only be fired at this point + * ``` + */ +export class EventBufferer { + data = []; + wrapEvent(event, reduce, initial) { + return (listener, thisArgs, disposables) => { + return event(i => { + const data = this.data[this.data.length - 1]; + // Non-reduce scenario + if (!reduce) { + // Buffering case + if (data) { + data.buffers.push(() => listener.call(thisArgs, i)); + } + else { + // Not buffering case + listener.call(thisArgs, i); + } + return; + } + // Reduce scenario + const reduceData = data; + // Not buffering case + if (!reduceData) { + // TODO: Is there a way to cache this reduce call for all listeners? + listener.call(thisArgs, reduce(initial, i)); + return; + } + // Buffering case + reduceData.items ??= []; + reduceData.items.push(i); + if (reduceData.buffers.length === 0) { + // Include a single buffered function that will reduce all events when we're done buffering events + data.buffers.push(() => { + // cache the reduced result so that the value can be shared across all listeners + reduceData.reducedResult ??= initial + ? reduceData.items.reduce(reduce, initial) + : reduceData.items.reduce(reduce); + listener.call(thisArgs, reduceData.reducedResult); + }); + } + }, undefined, disposables); + }; + } + bufferEvents(fn) { + const data = { buffers: new Array() }; + this.data.push(data); + const r = fn(); + this.data.pop(); + data.buffers.forEach(flush => flush()); + return r; + } +} +/** + * A Relay is an event forwarder which functions as a replugabble event pipe. + * Once created, you can connect an input event to it and it will simply forward + * events from that input event through its own `event` property. The `input` + * can be changed at any point in time. + */ +export class Relay { + listening = false; + inputEvent = Event.None; + inputEventListener = Disposable.None; + emitter = new Emitter({ + onDidAddFirstListener: () => { + this.listening = true; + this.inputEventListener = this.inputEvent(this.emitter.fire, this.emitter); + }, + onDidRemoveLastListener: () => { + this.listening = false; + this.inputEventListener.dispose(); + } + }); + event = this.emitter.event; + set input(event) { + this.inputEvent = event; + if (this.listening) { + this.inputEventListener.dispose(); + this.inputEventListener = event(this.emitter.fire, this.emitter); + } + } + dispose() { + this.inputEventListener.dispose(); + this.emitter.dispose(); + } +} +export class ValueWithChangeEvent { + _value; + static const(value) { + return new ConstValueWithChangeEvent(value); + } + _onDidChange = new Emitter(); + onDidChange = this._onDidChange.event; + constructor(_value) { + this._value = _value; + } + get value() { + return this._value; + } + set value(value) { + if (value !== this._value) { + this._value = value; + this._onDidChange.fire(undefined); + } + } +} +class ConstValueWithChangeEvent { + value; + onDidChange = Event.None; + constructor(value) { + this.value = value; + } +} +/** + * @param handleItem Is called for each item in the set (but only the first time the item is seen in the set). + * The returned disposable is disposed if the item is no longer in the set. + */ +export function trackSetChanges(getData, onDidChangeData, handleItem) { + const map = new DisposableMap(); + let oldData = new Set(getData()); + for (const d of oldData) { + map.set(d, handleItem(d)); + } + const store = new DisposableStore(); + store.add(onDidChangeData(() => { + const newData = getData(); + const diff = diffSets(oldData, newData); + for (const r of diff.removed) { + map.deleteAndDispose(r); + } + for (const a of diff.added) { + map.set(a, handleItem(a)); + } + oldData = new Set(newData); + })); + store.add(map); + return store; +} //# sourceMappingURL=event.js.map \ No newline at end of file diff --git a/packages/core/dist/event.js.map b/packages/core/dist/event.js.map index ac1d0caa..09bc99eb 100644 --- a/packages/core/dist/event.js.map +++ b/packages/core/dist/event.js.map @@ -1 +1 @@ -{"version":3,"file":"event.js","sourceRoot":"","sources":["../src/event.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"event.js","sourceRoot":"","sources":["../src/event.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/dist/extpath.d.ts b/packages/core/dist/extpath.d.ts index 82d360be..6a16bb62 100644 --- a/packages/core/dist/extpath.d.ts +++ b/packages/core/dist/extpath.d.ts @@ -1,56 +1,57 @@ -export declare function isPathSeparator(code: number): boolean; -/** - * Takes a Windows OS path and changes backward slashes to forward slashes. - * This should only be done for OS paths from Windows (or user provided paths potentially from Windows). - * Using it on a Linux or MaxOS path might change it. - */ -export declare function toSlashes(osPath: string): string; -/** - * Takes a Windows OS path (using backward or forward slashes) and turns it into a posix path: - * - turns backward slashes into forward slashes - * - makes it absolute if it starts with a drive letter - * This should only be done for OS paths from Windows (or user provided paths potentially from Windows). - * Using it on a Linux or MaxOS path might change it. - */ -export declare function toPosixPath(osPath: string): string; -/** - * Computes the _root_ this path, like `getRoot('c:\files') === c:\`, - * `getRoot('files:///files/path') === files:///`, - * or `getRoot('\\server\shares\path') === \\server\shares\` - */ -export declare function getRoot(path: string, sep?: string): string; -/** - * Check if the path follows this pattern: `\\hostname\sharename`. - * - * @see https://msdn.microsoft.com/en-us/library/gg465305.aspx - * @return A boolean indication if the path is a UNC path, on none-windows - * always false. - */ -export declare function isUNC(path: string): boolean; -export declare function isValidBasename(name: string | null | undefined, isWindowsOS?: boolean): boolean; -/** - * @deprecated please use `IUriIdentityService.extUri.isEqual` instead. If you are - * in a context without services, consider to pass down the `extUri` from the outside - * or use `extUriBiasedIgnorePathCase` if you know what you are doing. - */ -export declare function isEqual(pathA: string, pathB: string, ignoreCase?: boolean): boolean; -/** - * @deprecated please use `IUriIdentityService.extUri.isEqualOrParent` instead. If - * you are in a context without services, consider to pass down the `extUri` from the - * outside, or use `extUriBiasedIgnorePathCase` if you know what you are doing. - */ -export declare function isEqualOrParent(base: string, parentCandidate: string, ignoreCase?: boolean, separator?: "/" | "\\"): boolean; -export declare function isWindowsDriveLetter(char0: number): boolean; -export declare function sanitizeFilePath(candidate: string, cwd: string): string; -export declare function removeTrailingPathSeparator(candidate: string): string; -export declare function isRootOrDriveLetter(path: string): boolean; -export declare function hasDriveLetter(path: string, isWindowsOS?: boolean): boolean; -export declare function getDriveLetter(path: string, isWindowsOS?: boolean): string | undefined; -export declare function indexOfPath(path: string, candidate: string, ignoreCase?: boolean): number; -export interface IPathWithLineAndColumn { - path: string; - line?: number; - column?: number; -} -export declare function parseLineAndColumnAware(rawPath: string): IPathWithLineAndColumn; -export declare function randomPath(parent?: string, prefix?: string, randomLength?: number): string; +import { CharCode } from './charCode.js'; +export declare function isPathSeparator(code: number): code is CharCode.Slash | CharCode.Backslash; +/** + * Takes a Windows OS path and changes backward slashes to forward slashes. + * This should only be done for OS paths from Windows (or user provided paths potentially from Windows). + * Using it on a Linux or MaxOS path might change it. + */ +export declare function toSlashes(osPath: string): string; +/** + * Takes a Windows OS path (using backward or forward slashes) and turns it into a posix path: + * - turns backward slashes into forward slashes + * - makes it absolute if it starts with a drive letter + * This should only be done for OS paths from Windows (or user provided paths potentially from Windows). + * Using it on a Linux or MaxOS path might change it. + */ +export declare function toPosixPath(osPath: string): string; +/** + * Computes the _root_ this path, like `getRoot('c:\files') === c:\`, + * `getRoot('files:///files/path') === files:///`, + * or `getRoot('\\server\shares\path') === \\server\shares\` + */ +export declare function getRoot(path: string, sep?: string): string; +/** + * Check if the path follows this pattern: `\\hostname\sharename`. + * + * @see https://msdn.microsoft.com/en-us/library/gg465305.aspx + * @return A boolean indication if the path is a UNC path, on none-windows + * always false. + */ +export declare function isUNC(path: string): boolean; +export declare function isValidBasename(name: string | null | undefined, isWindowsOS?: boolean): boolean; +/** + * @deprecated please use `IUriIdentityService.extUri.isEqual` instead. If you are + * in a context without services, consider to pass down the `extUri` from the outside + * or use `extUriBiasedIgnorePathCase` if you know what you are doing. + */ +export declare function isEqual(pathA: string, pathB: string, ignoreCase?: boolean): boolean; +/** + * @deprecated please use `IUriIdentityService.extUri.isEqualOrParent` instead. If + * you are in a context without services, consider to pass down the `extUri` from the + * outside, or use `extUriBiasedIgnorePathCase` if you know what you are doing. + */ +export declare function isEqualOrParent(base: string, parentCandidate: string, ignoreCase?: boolean, separator?: "/" | "\\"): boolean; +export declare function isWindowsDriveLetter(char0: number): boolean; +export declare function sanitizeFilePath(candidate: string, cwd: string): string; +export declare function removeTrailingPathSeparator(candidate: string): string; +export declare function isRootOrDriveLetter(path: string): boolean; +export declare function hasDriveLetter(path: string, isWindowsOS?: boolean): boolean; +export declare function getDriveLetter(path: string, isWindowsOS?: boolean): string | undefined; +export declare function indexOfPath(path: string, candidate: string, ignoreCase?: boolean): number; +export interface IPathWithLineAndColumn { + path: string; + line?: number; + column?: number; +} +export declare function parseLineAndColumnAware(rawPath: string): IPathWithLineAndColumn; +export declare function randomPath(parent?: string, prefix?: string, randomLength?: number): string; diff --git a/packages/core/dist/extpath.js b/packages/core/dist/extpath.js index 1a04b1a3..d8d9da2c 100644 --- a/packages/core/dist/extpath.js +++ b/packages/core/dist/extpath.js @@ -1,347 +1,347 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ -import { isAbsolute, join, normalize, posix, sep } from './path.js'; -import { isWindows } from './platform.js'; -import { equalsIgnoreCase, rtrim, startsWithIgnoreCase } from './strings.js'; -import { isNumber } from './types.js'; -export function isPathSeparator(code) { - return code === 47 /* CharCode.Slash */ || code === 92 /* CharCode.Backslash */; -} -/** - * Takes a Windows OS path and changes backward slashes to forward slashes. - * This should only be done for OS paths from Windows (or user provided paths potentially from Windows). - * Using it on a Linux or MaxOS path might change it. - */ -export function toSlashes(osPath) { - return osPath.replace(/[\\/]/g, posix.sep); -} -/** - * Takes a Windows OS path (using backward or forward slashes) and turns it into a posix path: - * - turns backward slashes into forward slashes - * - makes it absolute if it starts with a drive letter - * This should only be done for OS paths from Windows (or user provided paths potentially from Windows). - * Using it on a Linux or MaxOS path might change it. - */ -export function toPosixPath(osPath) { - if (osPath.indexOf('/') === -1) { - osPath = toSlashes(osPath); - } - if (/^[a-zA-Z]:(\/|$)/.test(osPath)) { // starts with a drive letter - osPath = '/' + osPath; - } - return osPath; -} -/** - * Computes the _root_ this path, like `getRoot('c:\files') === c:\`, - * `getRoot('files:///files/path') === files:///`, - * or `getRoot('\\server\shares\path') === \\server\shares\` - */ -export function getRoot(path, sep = posix.sep) { - if (!path) { - return ''; - } - const len = path.length; - const firstLetter = path.charCodeAt(0); - if (isPathSeparator(firstLetter)) { - if (isPathSeparator(path.charCodeAt(1))) { - // UNC candidate \\localhost\shares\ddd - // ^^^^^^^^^^^^^^^^^^^ - if (!isPathSeparator(path.charCodeAt(2))) { - let pos = 3; - const start = pos; - for (; pos < len; pos++) { - if (isPathSeparator(path.charCodeAt(pos))) { - break; - } - } - if (start !== pos && !isPathSeparator(path.charCodeAt(pos + 1))) { - pos += 1; - for (; pos < len; pos++) { - if (isPathSeparator(path.charCodeAt(pos))) { - return path.slice(0, pos + 1) // consume this separator - .replace(/[\\/]/g, sep); - } - } - } - } - } - // /user/far - // ^ - return sep; - } - else if (isWindowsDriveLetter(firstLetter)) { - // check for windows drive letter c:\ or c: - if (path.charCodeAt(1) === 58 /* CharCode.Colon */) { - if (isPathSeparator(path.charCodeAt(2))) { - // C:\fff - // ^^^ - return path.slice(0, 2) + sep; - } - else { - // C: - // ^^ - return path.slice(0, 2); - } - } - } - // check for URI - // scheme://authority/path - // ^^^^^^^^^^^^^^^^^^^ - let pos = path.indexOf('://'); - if (pos !== -1) { - pos += 3; // 3 -> "://".length - for (; pos < len; pos++) { - if (isPathSeparator(path.charCodeAt(pos))) { - return path.slice(0, pos + 1); // consume this separator - } - } - } - return ''; -} -/** - * Check if the path follows this pattern: `\\hostname\sharename`. - * - * @see https://msdn.microsoft.com/en-us/library/gg465305.aspx - * @return A boolean indication if the path is a UNC path, on none-windows - * always false. - */ -export function isUNC(path) { - if (!isWindows) { - // UNC is a windows concept - return false; - } - if (!path || path.length < 5) { - // at least \\a\b - return false; - } - let code = path.charCodeAt(0); - if (code !== 92 /* CharCode.Backslash */) { - return false; - } - code = path.charCodeAt(1); - if (code !== 92 /* CharCode.Backslash */) { - return false; - } - let pos = 2; - const start = pos; - for (; pos < path.length; pos++) { - code = path.charCodeAt(pos); - if (code === 92 /* CharCode.Backslash */) { - break; - } - } - if (start === pos) { - return false; - } - code = path.charCodeAt(pos + 1); - if (isNaN(code) || code === 92 /* CharCode.Backslash */) { - return false; - } - return true; -} -// Reference: https://en.wikipedia.org/wiki/Filename -const WINDOWS_INVALID_FILE_CHARS = /[\\/:\*\?"<>\|]/g; -const UNIX_INVALID_FILE_CHARS = /[/]/g; -const WINDOWS_FORBIDDEN_NAMES = /^(con|prn|aux|clock\$|nul|lpt[0-9]|com[0-9])(\.(.*?))?$/i; -export function isValidBasename(name, isWindowsOS = isWindows) { - const invalidFileChars = isWindowsOS ? WINDOWS_INVALID_FILE_CHARS : UNIX_INVALID_FILE_CHARS; - if (!name || name.length === 0 || /^\s+$/.test(name)) { - return false; // require a name that is not just whitespace - } - invalidFileChars.lastIndex = 0; // the holy grail of software development - if (invalidFileChars.test(name)) { - return false; // check for certain invalid file characters - } - if (isWindowsOS && WINDOWS_FORBIDDEN_NAMES.test(name)) { - return false; // check for certain invalid file names - } - if (name === '.' || name === '..') { - return false; // check for reserved values - } - if (isWindowsOS && name[name.length - 1] === '.') { - return false; // Windows: file cannot end with a "." - } - if (isWindowsOS && name.length !== name.trim().length) { - return false; // Windows: file cannot end with a whitespace - } - if (name.length > 255) { - return false; // most file systems do not allow files > 255 length - } - return true; -} -/** - * @deprecated please use `IUriIdentityService.extUri.isEqual` instead. If you are - * in a context without services, consider to pass down the `extUri` from the outside - * or use `extUriBiasedIgnorePathCase` if you know what you are doing. - */ -export function isEqual(pathA, pathB, ignoreCase) { - const identityEquals = (pathA === pathB); - if (!ignoreCase || identityEquals) { - return identityEquals; - } - if (!pathA || !pathB) { - return false; - } - return equalsIgnoreCase(pathA, pathB); -} -/** - * @deprecated please use `IUriIdentityService.extUri.isEqualOrParent` instead. If - * you are in a context without services, consider to pass down the `extUri` from the - * outside, or use `extUriBiasedIgnorePathCase` if you know what you are doing. - */ -export function isEqualOrParent(base, parentCandidate, ignoreCase, separator = sep) { - if (base === parentCandidate) { - return true; - } - if (!base || !parentCandidate) { - return false; - } - if (parentCandidate.length > base.length) { - return false; - } - if (ignoreCase) { - const beginsWith = startsWithIgnoreCase(base, parentCandidate); - if (!beginsWith) { - return false; - } - if (parentCandidate.length === base.length) { - return true; // same path, different casing - } - let sepOffset = parentCandidate.length; - if (parentCandidate.charAt(parentCandidate.length - 1) === separator) { - sepOffset--; // adjust the expected sep offset in case our candidate already ends in separator character - } - return base.charAt(sepOffset) === separator; - } - if (parentCandidate.charAt(parentCandidate.length - 1) !== separator) { - parentCandidate += separator; - } - return base.indexOf(parentCandidate) === 0; -} -export function isWindowsDriveLetter(char0) { - return char0 >= 65 /* CharCode.A */ && char0 <= 90 /* CharCode.Z */ || char0 >= 97 /* CharCode.a */ && char0 <= 122 /* CharCode.z */; -} -export function sanitizeFilePath(candidate, cwd) { - // Special case: allow to open a drive letter without trailing backslash - if (isWindows && candidate.endsWith(':')) { - candidate += sep; - } - // Ensure absolute - if (!isAbsolute(candidate)) { - candidate = join(cwd, candidate); - } - // Ensure normalized - candidate = normalize(candidate); - // Ensure no trailing slash/backslash - return removeTrailingPathSeparator(candidate); -} -export function removeTrailingPathSeparator(candidate) { - if (isWindows) { - candidate = rtrim(candidate, sep); - // Special case: allow to open drive root ('C:\') - if (candidate.endsWith(':')) { - candidate += sep; - } - } - else { - candidate = rtrim(candidate, sep); - // Special case: allow to open root ('/') - if (!candidate) { - candidate = sep; - } - } - return candidate; -} -export function isRootOrDriveLetter(path) { - const pathNormalized = normalize(path); - if (isWindows) { - if (path.length > 3) { - return false; - } - return hasDriveLetter(pathNormalized) && - (path.length === 2 || pathNormalized.charCodeAt(2) === 92 /* CharCode.Backslash */); - } - return pathNormalized === posix.sep; -} -export function hasDriveLetter(path, isWindowsOS = isWindows) { - if (isWindowsOS) { - return isWindowsDriveLetter(path.charCodeAt(0)) && path.charCodeAt(1) === 58 /* CharCode.Colon */; - } - return false; -} -export function getDriveLetter(path, isWindowsOS = isWindows) { - return hasDriveLetter(path, isWindowsOS) ? path[0] : undefined; -} -export function indexOfPath(path, candidate, ignoreCase) { - if (candidate.length > path.length) { - return -1; - } - if (path === candidate) { - return 0; - } - if (ignoreCase) { - path = path.toLowerCase(); - candidate = candidate.toLowerCase(); - } - return path.indexOf(candidate); -} -export function parseLineAndColumnAware(rawPath) { - const segments = rawPath.split(':'); // C:\file.txt:: - let path = undefined; - let line = undefined; - let column = undefined; - for (const segment of segments) { - const segmentAsNumber = Number(segment); - if (!isNumber(segmentAsNumber)) { - path = !!path ? [path, segment].join(':') : segment; // a colon can well be part of a path (e.g. C:\...) - } - else if (line === undefined) { - line = segmentAsNumber; - } - else if (column === undefined) { - column = segmentAsNumber; - } - } - if (!path) { - throw new Error('Format for `--goto` should be: `FILE:LINE(:COLUMN)`'); - } - return { - path, - line: line !== undefined ? line : undefined, - column: column !== undefined ? column : line !== undefined ? 1 : undefined // if we have a line, make sure column is also set - }; -} -const pathChars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; -const windowsSafePathFirstChars = 'BDEFGHIJKMOQRSTUVWXYZbdefghijkmoqrstuvwxyz0123456789'; -export function randomPath(parent, prefix, randomLength = 8) { - let suffix = ''; - for (let i = 0; i < randomLength; i++) { - let pathCharsTouse; - if (i === 0 && isWindows && !prefix && (randomLength === 3 || randomLength === 4)) { - // Windows has certain reserved file names that cannot be used, such - // as AUX, CON, PRN, etc. We want to avoid generating a random name - // that matches that pattern, so we use a different set of characters - // for the first character of the name that does not include any of - // the reserved names first characters. - pathCharsTouse = windowsSafePathFirstChars; - } - else { - pathCharsTouse = pathChars; - } - suffix += pathCharsTouse.charAt(Math.floor(Math.random() * pathCharsTouse.length)); - } - let randomFileName; - if (prefix) { - randomFileName = `${prefix}-${suffix}`; - } - else { - randomFileName = suffix; - } - if (parent) { - return join(parent, randomFileName); - } - return randomFileName; -} +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +import { isAbsolute, join, normalize, posix, sep } from './path.js'; +import { isWindows } from './platform.js'; +import { equalsIgnoreCase, rtrim, startsWithIgnoreCase } from './strings.js'; +import { isNumber } from './types.js'; +export function isPathSeparator(code) { + return code === 47 /* CharCode.Slash */ || code === 92 /* CharCode.Backslash */; +} +/** + * Takes a Windows OS path and changes backward slashes to forward slashes. + * This should only be done for OS paths from Windows (or user provided paths potentially from Windows). + * Using it on a Linux or MaxOS path might change it. + */ +export function toSlashes(osPath) { + return osPath.replace(/[\\/]/g, posix.sep); +} +/** + * Takes a Windows OS path (using backward or forward slashes) and turns it into a posix path: + * - turns backward slashes into forward slashes + * - makes it absolute if it starts with a drive letter + * This should only be done for OS paths from Windows (or user provided paths potentially from Windows). + * Using it on a Linux or MaxOS path might change it. + */ +export function toPosixPath(osPath) { + if (osPath.indexOf('/') === -1) { + osPath = toSlashes(osPath); + } + if (/^[a-zA-Z]:(\/|$)/.test(osPath)) { // starts with a drive letter + osPath = '/' + osPath; + } + return osPath; +} +/** + * Computes the _root_ this path, like `getRoot('c:\files') === c:\`, + * `getRoot('files:///files/path') === files:///`, + * or `getRoot('\\server\shares\path') === \\server\shares\` + */ +export function getRoot(path, sep = posix.sep) { + if (!path) { + return ''; + } + const len = path.length; + const firstLetter = path.charCodeAt(0); + if (isPathSeparator(firstLetter)) { + if (isPathSeparator(path.charCodeAt(1))) { + // UNC candidate \\localhost\shares\ddd + // ^^^^^^^^^^^^^^^^^^^ + if (!isPathSeparator(path.charCodeAt(2))) { + let pos = 3; + const start = pos; + for (; pos < len; pos++) { + if (isPathSeparator(path.charCodeAt(pos))) { + break; + } + } + if (start !== pos && !isPathSeparator(path.charCodeAt(pos + 1))) { + pos += 1; + for (; pos < len; pos++) { + if (isPathSeparator(path.charCodeAt(pos))) { + return path.slice(0, pos + 1) // consume this separator + .replace(/[\\/]/g, sep); + } + } + } + } + } + // /user/far + // ^ + return sep; + } + else if (isWindowsDriveLetter(firstLetter)) { + // check for windows drive letter c:\ or c: + if (path.charCodeAt(1) === 58 /* CharCode.Colon */) { + if (isPathSeparator(path.charCodeAt(2))) { + // C:\fff + // ^^^ + return path.slice(0, 2) + sep; + } + else { + // C: + // ^^ + return path.slice(0, 2); + } + } + } + // check for URI + // scheme://authority/path + // ^^^^^^^^^^^^^^^^^^^ + let pos = path.indexOf('://'); + if (pos !== -1) { + pos += 3; // 3 -> "://".length + for (; pos < len; pos++) { + if (isPathSeparator(path.charCodeAt(pos))) { + return path.slice(0, pos + 1); // consume this separator + } + } + } + return ''; +} +/** + * Check if the path follows this pattern: `\\hostname\sharename`. + * + * @see https://msdn.microsoft.com/en-us/library/gg465305.aspx + * @return A boolean indication if the path is a UNC path, on none-windows + * always false. + */ +export function isUNC(path) { + if (!isWindows) { + // UNC is a windows concept + return false; + } + if (!path || path.length < 5) { + // at least \\a\b + return false; + } + let code = path.charCodeAt(0); + if (code !== 92 /* CharCode.Backslash */) { + return false; + } + code = path.charCodeAt(1); + if (code !== 92 /* CharCode.Backslash */) { + return false; + } + let pos = 2; + const start = pos; + for (; pos < path.length; pos++) { + code = path.charCodeAt(pos); + if (code === 92 /* CharCode.Backslash */) { + break; + } + } + if (start === pos) { + return false; + } + code = path.charCodeAt(pos + 1); + if (isNaN(code) || code === 92 /* CharCode.Backslash */) { + return false; + } + return true; +} +// Reference: https://en.wikipedia.org/wiki/Filename +const WINDOWS_INVALID_FILE_CHARS = /[\\/:\*\?"<>\|]/g; +const UNIX_INVALID_FILE_CHARS = /[/]/g; +const WINDOWS_FORBIDDEN_NAMES = /^(con|prn|aux|clock\$|nul|lpt[0-9]|com[0-9])(\.(.*?))?$/i; +export function isValidBasename(name, isWindowsOS = isWindows) { + const invalidFileChars = isWindowsOS ? WINDOWS_INVALID_FILE_CHARS : UNIX_INVALID_FILE_CHARS; + if (!name || name.length === 0 || /^\s+$/.test(name)) { + return false; // require a name that is not just whitespace + } + invalidFileChars.lastIndex = 0; // the holy grail of software development + if (invalidFileChars.test(name)) { + return false; // check for certain invalid file characters + } + if (isWindowsOS && WINDOWS_FORBIDDEN_NAMES.test(name)) { + return false; // check for certain invalid file names + } + if (name === '.' || name === '..') { + return false; // check for reserved values + } + if (isWindowsOS && name[name.length - 1] === '.') { + return false; // Windows: file cannot end with a "." + } + if (isWindowsOS && name.length !== name.trim().length) { + return false; // Windows: file cannot end with a whitespace + } + if (name.length > 255) { + return false; // most file systems do not allow files > 255 length + } + return true; +} +/** + * @deprecated please use `IUriIdentityService.extUri.isEqual` instead. If you are + * in a context without services, consider to pass down the `extUri` from the outside + * or use `extUriBiasedIgnorePathCase` if you know what you are doing. + */ +export function isEqual(pathA, pathB, ignoreCase) { + const identityEquals = (pathA === pathB); + if (!ignoreCase || identityEquals) { + return identityEquals; + } + if (!pathA || !pathB) { + return false; + } + return equalsIgnoreCase(pathA, pathB); +} +/** + * @deprecated please use `IUriIdentityService.extUri.isEqualOrParent` instead. If + * you are in a context without services, consider to pass down the `extUri` from the + * outside, or use `extUriBiasedIgnorePathCase` if you know what you are doing. + */ +export function isEqualOrParent(base, parentCandidate, ignoreCase, separator = sep) { + if (base === parentCandidate) { + return true; + } + if (!base || !parentCandidate) { + return false; + } + if (parentCandidate.length > base.length) { + return false; + } + if (ignoreCase) { + const beginsWith = startsWithIgnoreCase(base, parentCandidate); + if (!beginsWith) { + return false; + } + if (parentCandidate.length === base.length) { + return true; // same path, different casing + } + let sepOffset = parentCandidate.length; + if (parentCandidate.charAt(parentCandidate.length - 1) === separator) { + sepOffset--; // adjust the expected sep offset in case our candidate already ends in separator character + } + return base.charAt(sepOffset) === separator; + } + if (parentCandidate.charAt(parentCandidate.length - 1) !== separator) { + parentCandidate += separator; + } + return base.indexOf(parentCandidate) === 0; +} +export function isWindowsDriveLetter(char0) { + return char0 >= 65 /* CharCode.A */ && char0 <= 90 /* CharCode.Z */ || char0 >= 97 /* CharCode.a */ && char0 <= 122 /* CharCode.z */; +} +export function sanitizeFilePath(candidate, cwd) { + // Special case: allow to open a drive letter without trailing backslash + if (isWindows && candidate.endsWith(':')) { + candidate += sep; + } + // Ensure absolute + if (!isAbsolute(candidate)) { + candidate = join(cwd, candidate); + } + // Ensure normalized + candidate = normalize(candidate); + // Ensure no trailing slash/backslash + return removeTrailingPathSeparator(candidate); +} +export function removeTrailingPathSeparator(candidate) { + if (isWindows) { + candidate = rtrim(candidate, sep); + // Special case: allow to open drive root ('C:\') + if (candidate.endsWith(':')) { + candidate += sep; + } + } + else { + candidate = rtrim(candidate, sep); + // Special case: allow to open root ('/') + if (!candidate) { + candidate = sep; + } + } + return candidate; +} +export function isRootOrDriveLetter(path) { + const pathNormalized = normalize(path); + if (isWindows) { + if (path.length > 3) { + return false; + } + return hasDriveLetter(pathNormalized) && + (path.length === 2 || pathNormalized.charCodeAt(2) === 92 /* CharCode.Backslash */); + } + return pathNormalized === posix.sep; +} +export function hasDriveLetter(path, isWindowsOS = isWindows) { + if (isWindowsOS) { + return isWindowsDriveLetter(path.charCodeAt(0)) && path.charCodeAt(1) === 58 /* CharCode.Colon */; + } + return false; +} +export function getDriveLetter(path, isWindowsOS = isWindows) { + return hasDriveLetter(path, isWindowsOS) ? path[0] : undefined; +} +export function indexOfPath(path, candidate, ignoreCase) { + if (candidate.length > path.length) { + return -1; + } + if (path === candidate) { + return 0; + } + if (ignoreCase) { + path = path.toLowerCase(); + candidate = candidate.toLowerCase(); + } + return path.indexOf(candidate); +} +export function parseLineAndColumnAware(rawPath) { + const segments = rawPath.split(':'); // C:\file.txt:: + let path = undefined; + let line = undefined; + let column = undefined; + for (const segment of segments) { + const segmentAsNumber = Number(segment); + if (!isNumber(segmentAsNumber)) { + path = !!path ? [path, segment].join(':') : segment; // a colon can well be part of a path (e.g. C:\...) + } + else if (line === undefined) { + line = segmentAsNumber; + } + else if (column === undefined) { + column = segmentAsNumber; + } + } + if (!path) { + throw new Error('Format for `--goto` should be: `FILE:LINE(:COLUMN)`'); + } + return { + path, + line: line !== undefined ? line : undefined, + column: column !== undefined ? column : line !== undefined ? 1 : undefined // if we have a line, make sure column is also set + }; +} +const pathChars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; +const windowsSafePathFirstChars = 'BDEFGHIJKMOQRSTUVWXYZbdefghijkmoqrstuvwxyz0123456789'; +export function randomPath(parent, prefix, randomLength = 8) { + let suffix = ''; + for (let i = 0; i < randomLength; i++) { + let pathCharsTouse; + if (i === 0 && isWindows && !prefix && (randomLength === 3 || randomLength === 4)) { + // Windows has certain reserved file names that cannot be used, such + // as AUX, CON, PRN, etc. We want to avoid generating a random name + // that matches that pattern, so we use a different set of characters + // for the first character of the name that does not include any of + // the reserved names first characters. + pathCharsTouse = windowsSafePathFirstChars; + } + else { + pathCharsTouse = pathChars; + } + suffix += pathCharsTouse.charAt(Math.floor(Math.random() * pathCharsTouse.length)); + } + let randomFileName; + if (prefix) { + randomFileName = `${prefix}-${suffix}`; + } + else { + randomFileName = suffix; + } + if (parent) { + return join(parent, randomFileName); + } + return randomFileName; +} //# sourceMappingURL=extpath.js.map \ No newline at end of file diff --git a/packages/core/dist/extpath.js.map b/packages/core/dist/extpath.js.map index 2facd2b9..d5a8455a 100644 --- a/packages/core/dist/extpath.js.map +++ b/packages/core/dist/extpath.js.map @@ -1 +1 @@ -{"version":3,"file":"extpath.js","sourceRoot":"","sources":["../src/extpath.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"extpath.js","sourceRoot":"","sources":["../src/extpath.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/dist/functional.d.ts b/packages/core/dist/functional.d.ts index 6186556a..f9098188 100644 --- a/packages/core/dist/functional.d.ts +++ b/packages/core/dist/functional.d.ts @@ -1,4 +1,4 @@ -/** - * Given a function, returns a function that is only calling that function once. - */ -export declare function createSingleCallFunction(this: unknown, fn: T, fnDidRunCallback?: () => void): T; +/** + * Given a function, returns a function that is only calling that function once. + */ +export declare function createSingleCallFunction(this: unknown, fn: T, fnDidRunCallback?: () => void): T; diff --git a/packages/core/dist/functional.js b/packages/core/dist/functional.js index 4ddd7ffe..e289c5f2 100644 --- a/packages/core/dist/functional.js +++ b/packages/core/dist/functional.js @@ -1,31 +1,31 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ -/** - * Given a function, returns a function that is only calling that function once. - */ -export function createSingleCallFunction(fn, fnDidRunCallback) { - const _this = this; - let didCall = false; - let result; - return function () { - if (didCall) { - return result; - } - didCall = true; - if (fnDidRunCallback) { - try { - result = fn.apply(_this, arguments); - } - finally { - fnDidRunCallback(); - } - } - else { - result = fn.apply(_this, arguments); - } - return result; - }; -} +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +/** + * Given a function, returns a function that is only calling that function once. + */ +export function createSingleCallFunction(fn, fnDidRunCallback) { + const _this = this; + let didCall = false; + let result; + return function () { + if (didCall) { + return result; + } + didCall = true; + if (fnDidRunCallback) { + try { + result = fn.apply(_this, arguments); + } + finally { + fnDidRunCallback(); + } + } + else { + result = fn.apply(_this, arguments); + } + return result; + }; +} //# sourceMappingURL=functional.js.map \ No newline at end of file diff --git a/packages/core/dist/functional.js.map b/packages/core/dist/functional.js.map index 6d89a56a..3800ce5e 100644 --- a/packages/core/dist/functional.js.map +++ b/packages/core/dist/functional.js.map @@ -1 +1 @@ -{"version":3,"file":"functional.js","sourceRoot":"","sources":["../src/functional.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG;;GAEG;AACH,MAAM,UAAU,wBAAwB,CAAoC,EAAK,EAAE,gBAA6B;IAC/G,MAAM,KAAK,GAAG,IAAI,CAAC;IACnB,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,IAAI,MAAe,CAAC;IAEpB,OAAO;QACN,IAAI,OAAO,EAAE;YACZ,OAAO,MAAM,CAAC;SACd;QAED,OAAO,GAAG,IAAI,CAAC;QACf,IAAI,gBAAgB,EAAE;YACrB,IAAI;gBACH,MAAM,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;aACpC;oBAAS;gBACT,gBAAgB,EAAE,CAAC;aACnB;SACD;aAAM;YACN,MAAM,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;SACpC;QAED,OAAO,MAAM,CAAC;IACf,CAAiB,CAAC;AACnB,CAAC"} \ No newline at end of file +{"version":3,"file":"functional.js","sourceRoot":"","sources":["../src/functional.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG;;GAEG;AACH,MAAM,UAAU,wBAAwB,CAAoC,EAAK,EAAE,gBAA6B;IAC/G,MAAM,KAAK,GAAG,IAAI,CAAC;IACnB,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,IAAI,MAAe,CAAC;IAEpB,OAAO;QACN,IAAI,OAAO,EAAE,CAAC;YACb,OAAO,MAAM,CAAC;QACf,CAAC;QAED,OAAO,GAAG,IAAI,CAAC;QACf,IAAI,gBAAgB,EAAE,CAAC;YACtB,IAAI,CAAC;gBACJ,MAAM,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;YACrC,CAAC;oBAAS,CAAC;gBACV,gBAAgB,EAAE,CAAC;YACpB,CAAC;QACF,CAAC;aAAM,CAAC;YACP,MAAM,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QACrC,CAAC;QAED,OAAO,MAAM,CAAC;IACf,CAAiB,CAAC;AACnB,CAAC"} \ No newline at end of file diff --git a/packages/core/dist/index.d.ts b/packages/core/dist/index.d.ts index ca0f5038..bde2e135 100644 --- a/packages/core/dist/index.d.ts +++ b/packages/core/dist/index.d.ts @@ -1,13 +1,13 @@ -export type Hash = Record; -export interface List { - [index: number]: T; - length: number; -} -/** - * Interface of the simple literal object with any string keys. - */ -export type IObjectLiteral = Record; -export type JSONPathExpression = string; -export declare const resolveConfig: (config: any) => any; -export { substitute } from './strings.js'; -export * from './constants.js'; +export type Hash = Record; +export interface List { + [index: number]: T; + length: number; +} +/** + * Interface of the simple literal object with any string keys. + */ +export type IObjectLiteral = Record; +export type JSONPathExpression = string; +export declare const resolveConfig: (config: any) => any; +export { substitute } from './strings.js'; +export * from './constants.js'; diff --git a/packages/core/dist/index.js b/packages/core/dist/index.js index 1bec6cd6..6997a206 100644 --- a/packages/core/dist/index.js +++ b/packages/core/dist/index.js @@ -1,18 +1,18 @@ -import { substitute } from './strings.js'; -const _resolve = (config) => { - for (const key in config) { - if (config[key] && typeof config[key] == 'string') { - const resolved = substitute(config[key], config); - config[key] = resolved; - } - } - return config; -}; -export const resolveConfig = (config) => { - config = _resolve(config); - config = _resolve(config); - return config; -}; -export { substitute } from './strings.js'; -export * from './constants.js'; +import { substitute } from './strings.js'; +const _resolve = (config) => { + for (const key in config) { + if (config[key] && typeof config[key] == 'string') { + const resolved = substitute(config[key], config); + config[key] = resolved; + } + } + return config; +}; +export const resolveConfig = (config) => { + config = _resolve(config); + config = _resolve(config); + return config; +}; +export { substitute } from './strings.js'; +export * from './constants.js'; //# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/packages/core/dist/index.js.map b/packages/core/dist/index.js.map index 68d0b30f..0c3b5f89 100644 --- a/packages/core/dist/index.js.map +++ b/packages/core/dist/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAgBzC,MAAM,QAAQ,GAAG,CAAC,MAAM,EAAE,EAAE;IAC1B,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE;QACxB,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,QAAQ,EAAE;YACjD,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;YACjD,MAAM,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC;SACxB;KACF;IACD,OAAO,MAAM,CAAC;AAChB,CAAC,CAAA;AACD,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,MAAM,EAAE,EAAE;IACtC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC1B,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC1B,OAAO,MAAM,CAAC;AAChB,CAAC,CAAA;AAED,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,cAAc,gBAAgB,CAAA"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAgBzC,MAAM,QAAQ,GAAG,CAAC,MAAM,EAAE,EAAE;IAC1B,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;QACzB,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,QAAQ,EAAE,CAAC;YAClD,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;YACjD,MAAM,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC;QACzB,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC,CAAA;AACD,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,MAAM,EAAE,EAAE;IACtC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC1B,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC1B,OAAO,MAAM,CAAC;AAChB,CAAC,CAAA;AAED,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,cAAc,gBAAgB,CAAA"} \ No newline at end of file diff --git a/packages/core/dist/iterator.d.ts b/packages/core/dist/iterator.d.ts index f8d05ebf..d827597e 100644 --- a/packages/core/dist/iterator.d.ts +++ b/packages/core/dist/iterator.d.ts @@ -1,74 +1,74 @@ -export declare namespace Iterable { - function is(thing: any): thing is Iterable; - function empty(): Iterable; - function single(element: T): Iterable; - function wrap(iterableOrElement: Iterable | T): Iterable; - function from(iterable: Iterable | undefined | null): Iterable; - function reverse(array: Array): Iterable; - function isEmpty(iterable: Iterable | undefined | null): boolean; - function first(iterable: Iterable): T | undefined; - function some(iterable: Iterable, predicate: (t: T, i: number) => unknown): boolean; - function find(iterable: Iterable, predicate: (t: T) => t is R): R | undefined; - function find(iterable: Iterable, predicate: (t: T) => boolean): T | undefined; - function filter(iterable: Iterable, predicate: (t: T) => t is R): Iterable; - function filter(iterable: Iterable, predicate: (t: T) => boolean): Iterable; - function map(iterable: Iterable, fn: (t: T, index: number) => R): Iterable; - function flatMap(iterable: Iterable, fn: (t: T, index: number) => Iterable): Iterable; - function concat(...iterables: Iterable[]): Iterable; - function reduce(iterable: Iterable, reducer: (previousValue: R, currentValue: T) => R, initialValue: R): R; - /** - * Returns an iterable slice of the array, with the same semantics as `array.slice()`. - */ - function slice(arr: ReadonlyArray, from: number, to?: number): Iterable; - /** - * Consumes `atMost` elements from iterable and returns the consumed elements, - * and an iterable for the rest of the elements. - */ - function consume(iterable: Iterable, atMost?: number): [T[], Iterable]; - function asyncToArray(iterable: AsyncIterable): Promise; -} -export interface IIterator { - next(): T; -} -export declare class ArrayIterator implements IIterator { - private items; - protected start: number; - protected end: number; - protected index: number; - constructor(items: T[], start?: number, end?: number); - first(): T; - next(): T; - protected current(): T; -} -export declare class ArrayNavigator extends ArrayIterator implements INavigator { - constructor(items: T[], start?: number, end?: number); - current(): T; - previous(): T; - first(): T; - last(): T; - parent(): T; -} -export declare class MappedIterator implements IIterator { - protected iterator: IIterator; - protected fn: (item: T) => R; - constructor(iterator: IIterator, fn: (item: T) => R); - next(): R; -} -export interface INavigator extends IIterator { - current(): T; - previous(): T; - parent(): T; - first(): T; - last(): T; - next(): T; -} -export declare class MappedNavigator extends MappedIterator implements INavigator { - protected navigator: INavigator; - constructor(navigator: INavigator, fn: (item: T) => R); - current(): R; - previous(): R; - parent(): R; - first(): R; - last(): R; - next(): R; -} +export declare namespace Iterable { + function is(thing: any): thing is Iterable; + function empty(): Iterable; + function single(element: T): Iterable; + function wrap(iterableOrElement: Iterable | T): Iterable; + function from(iterable: Iterable | undefined | null): Iterable; + function reverse(array: Array): Iterable; + function isEmpty(iterable: Iterable | undefined | null): boolean; + function first(iterable: Iterable): T | undefined; + function some(iterable: Iterable, predicate: (t: T, i: number) => unknown): boolean; + function find(iterable: Iterable, predicate: (t: T) => t is R): R | undefined; + function find(iterable: Iterable, predicate: (t: T) => boolean): T | undefined; + function filter(iterable: Iterable, predicate: (t: T) => t is R): Iterable; + function filter(iterable: Iterable, predicate: (t: T) => boolean): Iterable; + function map(iterable: Iterable, fn: (t: T, index: number) => R): Iterable; + function flatMap(iterable: Iterable, fn: (t: T, index: number) => Iterable): Iterable; + function concat(...iterables: Iterable[]): Iterable; + function reduce(iterable: Iterable, reducer: (previousValue: R, currentValue: T) => R, initialValue: R): R; + /** + * Returns an iterable slice of the array, with the same semantics as `array.slice()`. + */ + function slice(arr: ReadonlyArray, from: number, to?: number): Iterable; + /** + * Consumes `atMost` elements from iterable and returns the consumed elements, + * and an iterable for the rest of the elements. + */ + function consume(iterable: Iterable, atMost?: number): [T[], Iterable]; + function asyncToArray(iterable: AsyncIterable): Promise; +} +export interface IIterator { + next(): T; +} +export declare class ArrayIterator implements IIterator { + private items; + protected start: number; + protected end: number; + protected index: number; + constructor(items: T[], start?: number, end?: number); + first(): T; + next(): T; + protected current(): T; +} +export declare class ArrayNavigator extends ArrayIterator implements INavigator { + constructor(items: T[], start?: number, end?: number); + current(): T; + previous(): T; + first(): T; + last(): T; + parent(): T; +} +export declare class MappedIterator implements IIterator { + protected iterator: IIterator; + protected fn: (item: T) => R; + constructor(iterator: IIterator, fn: (item: T) => R); + next(): R; +} +export interface INavigator extends IIterator { + current(): T; + previous(): T; + parent(): T; + first(): T; + last(): T; + next(): T; +} +export declare class MappedNavigator extends MappedIterator implements INavigator { + protected navigator: INavigator; + constructor(navigator: INavigator, fn: (item: T) => R); + current(): R; + previous(): R; + parent(): R; + first(): R; + last(): R; + next(): R; +} diff --git a/packages/core/dist/iterator.js b/packages/core/dist/iterator.js index 68bb1a44..8afa4b84 100644 --- a/packages/core/dist/iterator.js +++ b/packages/core/dist/iterator.js @@ -1,224 +1,224 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ -export var Iterable; -(function (Iterable) { - function is(thing) { - return thing && typeof thing === 'object' && typeof thing[Symbol.iterator] === 'function'; - } - Iterable.is = is; - const _empty = Object.freeze([]); - function empty() { - return _empty; - } - Iterable.empty = empty; - function* single(element) { - yield element; - } - Iterable.single = single; - function wrap(iterableOrElement) { - if (is(iterableOrElement)) { - return iterableOrElement; - } - else { - return single(iterableOrElement); - } - } - Iterable.wrap = wrap; - function from(iterable) { - return iterable || _empty; - } - Iterable.from = from; - function* reverse(array) { - for (let i = array.length - 1; i >= 0; i--) { - yield array[i]; - } - } - Iterable.reverse = reverse; - function isEmpty(iterable) { - return !iterable || iterable[Symbol.iterator]().next().done === true; - } - Iterable.isEmpty = isEmpty; - function first(iterable) { - return iterable[Symbol.iterator]().next().value; - } - Iterable.first = first; - function some(iterable, predicate) { - let i = 0; - for (const element of iterable) { - if (predicate(element, i++)) { - return true; - } - } - return false; - } - Iterable.some = some; - function find(iterable, predicate) { - for (const element of iterable) { - if (predicate(element)) { - return element; - } - } - return undefined; - } - Iterable.find = find; - function* filter(iterable, predicate) { - for (const element of iterable) { - if (predicate(element)) { - yield element; - } - } - } - Iterable.filter = filter; - function* map(iterable, fn) { - let index = 0; - for (const element of iterable) { - yield fn(element, index++); - } - } - Iterable.map = map; - function* flatMap(iterable, fn) { - let index = 0; - for (const element of iterable) { - yield* fn(element, index++); - } - } - Iterable.flatMap = flatMap; - function* concat(...iterables) { - for (const iterable of iterables) { - yield* iterable; - } - } - Iterable.concat = concat; - function reduce(iterable, reducer, initialValue) { - let value = initialValue; - for (const element of iterable) { - value = reducer(value, element); - } - return value; - } - Iterable.reduce = reduce; - /** - * Returns an iterable slice of the array, with the same semantics as `array.slice()`. - */ - function* slice(arr, from, to = arr.length) { - if (from < -arr.length) { - from = 0; - } - if (from < 0) { - from += arr.length; - } - if (to < 0) { - to += arr.length; - } - else if (to > arr.length) { - to = arr.length; - } - for (; from < to; from++) { - yield arr[from]; - } - } - Iterable.slice = slice; - /** - * Consumes `atMost` elements from iterable and returns the consumed elements, - * and an iterable for the rest of the elements. - */ - function consume(iterable, atMost = Number.POSITIVE_INFINITY) { - const consumed = []; - if (atMost === 0) { - return [consumed, iterable]; - } - const iterator = iterable[Symbol.iterator](); - for (let i = 0; i < atMost; i++) { - const next = iterator.next(); - if (next.done) { - return [consumed, Iterable.empty()]; - } - consumed.push(next.value); - } - return [consumed, { [Symbol.iterator]() { return iterator; } }]; - } - Iterable.consume = consume; - async function asyncToArray(iterable) { - const result = []; - for await (const item of iterable) { - result.push(item); - } - return Promise.resolve(result); - } - Iterable.asyncToArray = asyncToArray; -})(Iterable = Iterable || (Iterable = {})); -export class ArrayIterator { - items; - start; - end; - index; - constructor(items, start = 0, end = items.length) { - this.items = items; - this.start = start; - this.end = end; - this.index = start - 1; - } - first() { - this.index = this.start; - return this.current(); - } - next() { - this.index = Math.min(this.index + 1, this.end); - return this.current(); - } - current() { - if (this.index === this.start - 1 || this.index === this.end) { - return null; - } - return this.items[this.index]; - } -} -export class ArrayNavigator extends ArrayIterator { - constructor(items, start = 0, end = items.length) { - super(items, start, end); - } - current() { - return super.current(); - } - previous() { - this.index = Math.max(this.index - 1, this.start - 1); - return this.current(); - } - first() { - this.index = this.start; - return this.current(); - } - last() { - this.index = this.end - 1; - return this.current(); - } - parent() { - return null; - } -} -export class MappedIterator { - iterator; - fn; - constructor(iterator, fn) { - this.iterator = iterator; - this.fn = fn; - // noop - } - next() { return this.fn(this.iterator.next()); } -} -export class MappedNavigator extends MappedIterator { - navigator; - constructor(navigator, fn) { - super(navigator, fn); - this.navigator = navigator; - } - current() { return this.fn(this.navigator.current()); } - previous() { return this.fn(this.navigator.previous()); } - parent() { return this.fn(this.navigator.parent()); } - first() { return this.fn(this.navigator.first()); } - last() { return this.fn(this.navigator.last()); } - next() { return this.fn(this.navigator.next()); } -} +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +export var Iterable; +(function (Iterable) { + function is(thing) { + return thing && typeof thing === 'object' && typeof thing[Symbol.iterator] === 'function'; + } + Iterable.is = is; + const _empty = Object.freeze([]); + function empty() { + return _empty; + } + Iterable.empty = empty; + function* single(element) { + yield element; + } + Iterable.single = single; + function wrap(iterableOrElement) { + if (is(iterableOrElement)) { + return iterableOrElement; + } + else { + return single(iterableOrElement); + } + } + Iterable.wrap = wrap; + function from(iterable) { + return iterable || _empty; + } + Iterable.from = from; + function* reverse(array) { + for (let i = array.length - 1; i >= 0; i--) { + yield array[i]; + } + } + Iterable.reverse = reverse; + function isEmpty(iterable) { + return !iterable || iterable[Symbol.iterator]().next().done === true; + } + Iterable.isEmpty = isEmpty; + function first(iterable) { + return iterable[Symbol.iterator]().next().value; + } + Iterable.first = first; + function some(iterable, predicate) { + let i = 0; + for (const element of iterable) { + if (predicate(element, i++)) { + return true; + } + } + return false; + } + Iterable.some = some; + function find(iterable, predicate) { + for (const element of iterable) { + if (predicate(element)) { + return element; + } + } + return undefined; + } + Iterable.find = find; + function* filter(iterable, predicate) { + for (const element of iterable) { + if (predicate(element)) { + yield element; + } + } + } + Iterable.filter = filter; + function* map(iterable, fn) { + let index = 0; + for (const element of iterable) { + yield fn(element, index++); + } + } + Iterable.map = map; + function* flatMap(iterable, fn) { + let index = 0; + for (const element of iterable) { + yield* fn(element, index++); + } + } + Iterable.flatMap = flatMap; + function* concat(...iterables) { + for (const iterable of iterables) { + yield* iterable; + } + } + Iterable.concat = concat; + function reduce(iterable, reducer, initialValue) { + let value = initialValue; + for (const element of iterable) { + value = reducer(value, element); + } + return value; + } + Iterable.reduce = reduce; + /** + * Returns an iterable slice of the array, with the same semantics as `array.slice()`. + */ + function* slice(arr, from, to = arr.length) { + if (from < -arr.length) { + from = 0; + } + if (from < 0) { + from += arr.length; + } + if (to < 0) { + to += arr.length; + } + else if (to > arr.length) { + to = arr.length; + } + for (; from < to; from++) { + yield arr[from]; + } + } + Iterable.slice = slice; + /** + * Consumes `atMost` elements from iterable and returns the consumed elements, + * and an iterable for the rest of the elements. + */ + function consume(iterable, atMost = Number.POSITIVE_INFINITY) { + const consumed = []; + if (atMost === 0) { + return [consumed, iterable]; + } + const iterator = iterable[Symbol.iterator](); + for (let i = 0; i < atMost; i++) { + const next = iterator.next(); + if (next.done) { + return [consumed, Iterable.empty()]; + } + consumed.push(next.value); + } + return [consumed, { [Symbol.iterator]() { return iterator; } }]; + } + Iterable.consume = consume; + async function asyncToArray(iterable) { + const result = []; + for await (const item of iterable) { + result.push(item); + } + return Promise.resolve(result); + } + Iterable.asyncToArray = asyncToArray; +})(Iterable || (Iterable = {})); +export class ArrayIterator { + items; + start; + end; + index; + constructor(items, start = 0, end = items.length) { + this.items = items; + this.start = start; + this.end = end; + this.index = start - 1; + } + first() { + this.index = this.start; + return this.current(); + } + next() { + this.index = Math.min(this.index + 1, this.end); + return this.current(); + } + current() { + if (this.index === this.start - 1 || this.index === this.end) { + return null; + } + return this.items[this.index]; + } +} +export class ArrayNavigator extends ArrayIterator { + constructor(items, start = 0, end = items.length) { + super(items, start, end); + } + current() { + return super.current(); + } + previous() { + this.index = Math.max(this.index - 1, this.start - 1); + return this.current(); + } + first() { + this.index = this.start; + return this.current(); + } + last() { + this.index = this.end - 1; + return this.current(); + } + parent() { + return null; + } +} +export class MappedIterator { + iterator; + fn; + constructor(iterator, fn) { + this.iterator = iterator; + this.fn = fn; + // noop + } + next() { return this.fn(this.iterator.next()); } +} +export class MappedNavigator extends MappedIterator { + navigator; + constructor(navigator, fn) { + super(navigator, fn); + this.navigator = navigator; + } + current() { return this.fn(this.navigator.current()); } + previous() { return this.fn(this.navigator.previous()); } + parent() { return this.fn(this.navigator.parent()); } + first() { return this.fn(this.navigator.first()); } + last() { return this.fn(this.navigator.last()); } + next() { return this.fn(this.navigator.next()); } +} //# sourceMappingURL=iterator.js.map \ No newline at end of file diff --git a/packages/core/dist/iterator.js.map b/packages/core/dist/iterator.js.map index 3e6fe657..c4ac8d6b 100644 --- a/packages/core/dist/iterator.js.map +++ b/packages/core/dist/iterator.js.map @@ -1 +1 @@ -{"version":3,"file":"iterator.js","sourceRoot":"","sources":["../src/iterator.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"iterator.js","sourceRoot":"","sources":["../src/iterator.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/dist/labels.d.ts b/packages/core/dist/labels.d.ts index d42315fa..d1d6b72e 100644 --- a/packages/core/dist/labels.d.ts +++ b/packages/core/dist/labels.d.ts @@ -1,81 +1,81 @@ -import { OperatingSystem } from './platform.js'; -import { URI } from './uri.js'; -export interface IPathLabelFormatting { - /** - * The OS the path label is from to produce a label - * that matches OS expectations. - */ - readonly os: OperatingSystem; - /** - * Whether to add a `~` when the path is in the - * user home directory. - * - * Note: this only applies to Linux, macOS but not - * Windows. - */ - readonly tildify?: IUserHomeProvider; - /** - * Whether to convert to a relative path if the path - * is within any of the opened workspace folders. - */ - readonly relative?: IRelativePathProvider; -} -export interface IRelativePathProvider { - /** - * Whether to not add a prefix when in multi-root workspace. - */ - readonly noPrefix?: boolean; - getWorkspace(): { - folders: { - uri: URI; - name?: string; - }[]; - }; - getWorkspaceFolder(resource: URI): { - uri: URI; - name?: string; - } | null; -} -export interface IUserHomeProvider { - userHome: URI; -} -export declare function getPathLabel(resource: URI, formatting: IPathLabelFormatting): string; -export declare function normalizeDriveLetter(path: string, isWindowsOS?: boolean): string; -export declare function tildify(path: string, userHome: string, os?: OperatingSystem): string; -export declare function untildify(path: string, userHome: string): string; -export declare function shorten(paths: string[], pathSeparator?: string): string[]; -export interface ISeparator { - label: string; -} -/** - * Helper to insert values for specific template variables into the string. E.g. "this $(is) a $(template)" can be - * passed to this function together with an object that maps "is" and "template" to strings to have them replaced. - * @param value string to which template is applied - * @param values the values of the templates to use - */ -export declare function template(template: string, values?: { - [key: string]: string | ISeparator | undefined | null; -}): string; -/** - * Handles mnemonics for menu items. Depending on OS: - * - Windows: Supported via & character (replace && with &) - * - Linux: Supported via & character (replace && with &) - * - macOS: Unsupported (replace && with empty string) - */ -export declare function mnemonicMenuLabel(label: string, forceDisableMnemonics?: boolean): string; -/** - * Handles mnemonics for buttons. Depending on OS: - * - Windows: Supported via & character (replace && with & and & with && for escaping) - * - Linux: Supported via _ character (replace && with _) - * - macOS: Unsupported (replace && with empty string) - */ -export declare function mnemonicButtonLabel(label: string, forceDisableMnemonics?: boolean): string; -export declare function unmnemonicLabel(label: string): string; -/** - * Splits a recent label in name and parent path, supporting both '/' and '\' and workspace suffixes. - * If the location is remote, the remote name is included in the name part. - */ -export declare function splitRecentLabel(recentLabel: string): { - name: string; - parentPath: string; -}; +import { OperatingSystem } from './platform.js'; +import { URI } from './uri.js'; +export interface IPathLabelFormatting { + /** + * The OS the path label is from to produce a label + * that matches OS expectations. + */ + readonly os: OperatingSystem; + /** + * Whether to add a `~` when the path is in the + * user home directory. + * + * Note: this only applies to Linux, macOS but not + * Windows. + */ + readonly tildify?: IUserHomeProvider; + /** + * Whether to convert to a relative path if the path + * is within any of the opened workspace folders. + */ + readonly relative?: IRelativePathProvider; +} +export interface IRelativePathProvider { + /** + * Whether to not add a prefix when in multi-root workspace. + */ + readonly noPrefix?: boolean; + getWorkspace(): { + folders: { + uri: URI; + name?: string; + }[]; + }; + getWorkspaceFolder(resource: URI): { + uri: URI; + name?: string; + } | null; +} +export interface IUserHomeProvider { + userHome: URI; +} +export declare function getPathLabel(resource: URI, formatting: IPathLabelFormatting): string; +export declare function normalizeDriveLetter(path: string, isWindowsOS?: boolean): string; +export declare function tildify(path: string, userHome: string, os?: OperatingSystem): string; +export declare function untildify(path: string, userHome: string): string; +export declare function shorten(paths: string[], pathSeparator?: string): string[]; +export interface ISeparator { + label: string; +} +/** + * Helper to insert values for specific template variables into the string. E.g. "this $(is) a $(template)" can be + * passed to this function together with an object that maps "is" and "template" to strings to have them replaced. + * @param value string to which template is applied + * @param values the values of the templates to use + */ +export declare function template(template: string, values?: { + [key: string]: string | ISeparator | undefined | null; +}): string; +/** + * Handles mnemonics for menu items. Depending on OS: + * - Windows: Supported via & character (replace && with &) + * - Linux: Supported via & character (replace && with &) + * - macOS: Unsupported (replace && with empty string) + */ +export declare function mnemonicMenuLabel(label: string, forceDisableMnemonics?: boolean): string; +/** + * Handles mnemonics for buttons. Depending on OS: + * - Windows: Supported via & character (replace && with & and & with && for escaping) + * - Linux: Supported via _ character (replace && with _) + * - macOS: Unsupported (replace && with empty string) + */ +export declare function mnemonicButtonLabel(label: string, forceDisableMnemonics?: boolean): string; +export declare function unmnemonicLabel(label: string): string; +/** + * Splits a recent label in name and parent path, supporting both '/' and '\' and workspace suffixes. + * If the location is remote, the remote name is included in the name part. + */ +export declare function splitRecentLabel(recentLabel: string): { + name: string; + parentPath: string; +}; diff --git a/packages/core/dist/labels.js b/packages/core/dist/labels.js index 2d8deb60..e9105b37 100644 --- a/packages/core/dist/labels.js +++ b/packages/core/dist/labels.js @@ -1,354 +1,354 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ -import { hasDriveLetter, toSlashes } from './extpath.js'; -import { posix, sep, win32 } from './path.js'; -import { isMacintosh, isWindows, OS } from './platform.js'; -import { extUri, extUriIgnorePathCase } from './resources.js'; -import { rtrim, startsWithIgnoreCase } from './strings.js'; -export function getPathLabel(resource, formatting) { - const { os, tildify: tildifier, relative: relatifier } = formatting; - // return early with a relative path if we can resolve one - if (relatifier) { - const relativePath = getRelativePathLabel(resource, relatifier, os); - if (typeof relativePath === 'string') { - return relativePath; - } - } - // otherwise try to resolve a absolute path label and - // apply target OS standard path separators if target - // OS differs from actual OS we are running in - let absolutePath = resource.fsPath; - if (os === 1 /* OperatingSystem.Windows */ && !isWindows) { - absolutePath = absolutePath.replace(/\//g, '\\'); - } - else if (os !== 1 /* OperatingSystem.Windows */ && isWindows) { - absolutePath = absolutePath.replace(/\\/g, '/'); - } - // macOS/Linux: tildify with provided user home directory - if (os !== 1 /* OperatingSystem.Windows */ && tildifier?.userHome) { - const userHome = tildifier.userHome.fsPath; - // This is a bit of a hack, but in order to figure out if the - // resource is in the user home, we need to make sure to convert it - // to a user home resource. We cannot assume that the resource is - // already a user home resource. - let userHomeCandidate; - if (resource.scheme !== tildifier.userHome.scheme && resource.path[0] === posix.sep && resource.path[1] !== posix.sep) { - userHomeCandidate = tildifier.userHome.with({ path: resource.path }).fsPath; - } - else { - userHomeCandidate = absolutePath; - } - absolutePath = tildify(userHomeCandidate, userHome, os); - } - // normalize - const pathLib = os === 1 /* OperatingSystem.Windows */ ? win32 : posix; - return pathLib.normalize(normalizeDriveLetter(absolutePath, os === 1 /* OperatingSystem.Windows */)); -} -function getRelativePathLabel(resource, relativePathProvider, os) { - const pathLib = os === 1 /* OperatingSystem.Windows */ ? win32 : posix; - const extUriLib = os === 3 /* OperatingSystem.Linux */ ? extUri : extUriIgnorePathCase; - const workspace = relativePathProvider.getWorkspace(); - const firstFolder = workspace.folders.at(0); - if (!firstFolder) { - return undefined; - } - // This is a bit of a hack, but in order to figure out the folder - // the resource belongs to, we need to make sure to convert it - // to a workspace resource. We cannot assume that the resource is - // already matching the workspace. - if (resource.scheme !== firstFolder.uri.scheme && resource.path[0] === posix.sep && resource.path[1] !== posix.sep) { - resource = firstFolder.uri.with({ path: resource.path }); - } - const folder = relativePathProvider.getWorkspaceFolder(resource); - if (!folder) { - return undefined; - } - let relativePathLabel = undefined; - if (extUriLib.isEqual(folder.uri, resource)) { - relativePathLabel = ''; // no label if paths are identical - } - else { - relativePathLabel = extUriLib.relativePath(folder.uri, resource) ?? ''; - } - // normalize - if (relativePathLabel) { - relativePathLabel = pathLib.normalize(relativePathLabel); - } - // always show root basename if there are multiple folders - if (workspace.folders.length > 1 && !relativePathProvider.noPrefix) { - const rootName = folder.name ? folder.name : extUriLib.basenameOrAuthority(folder.uri); - relativePathLabel = relativePathLabel ? `${rootName} • ${relativePathLabel}` : rootName; - } - return relativePathLabel; -} -export function normalizeDriveLetter(path, isWindowsOS = isWindows) { - if (hasDriveLetter(path, isWindowsOS)) { - return path.charAt(0).toUpperCase() + path.slice(1); - } - return path; -} -let normalizedUserHomeCached = Object.create(null); -export function tildify(path, userHome, os = OS) { - if (os === 1 /* OperatingSystem.Windows */ || !path || !userHome) { - return path; // unsupported on Windows - } - let normalizedUserHome = normalizedUserHomeCached.original === userHome ? normalizedUserHomeCached.normalized : undefined; - if (!normalizedUserHome) { - normalizedUserHome = userHome; - if (isWindows) { - normalizedUserHome = toSlashes(normalizedUserHome); // make sure that the path is POSIX normalized on Windows - } - normalizedUserHome = `${rtrim(normalizedUserHome, posix.sep)}${posix.sep}`; - normalizedUserHomeCached = { original: userHome, normalized: normalizedUserHome }; - } - let normalizedPath = path; - if (isWindows) { - normalizedPath = toSlashes(normalizedPath); // make sure that the path is POSIX normalized on Windows - } - // Linux: case sensitive, macOS: case insensitive - if (os === 3 /* OperatingSystem.Linux */ ? normalizedPath.startsWith(normalizedUserHome) : startsWithIgnoreCase(normalizedPath, normalizedUserHome)) { - return `~/${normalizedPath.substr(normalizedUserHome.length)}`; - } - return path; -} -export function untildify(path, userHome) { - return path.replace(/^~($|\/|\\)/, `${userHome}$1`); -} -/** - * Shortens the paths but keeps them easy to distinguish. - * Replaces not important parts with ellipsis. - * Every shorten path matches only one original path and vice versa. - * - * Algorithm for shortening paths is as follows: - * 1. For every path in list, find unique substring of that path. - * 2. Unique substring along with ellipsis is shortened path of that path. - * 3. To find unique substring of path, consider every segment of length from 1 to path.length of path from end of string - * and if present segment is not substring to any other paths then present segment is unique path, - * else check if it is not present as suffix of any other path and present segment is suffix of path itself, - * if it is true take present segment as unique path. - * 4. Apply ellipsis to unique segment according to whether segment is present at start/in-between/end of path. - * - * Example 1 - * 1. consider 2 paths i.e. ['a\\b\\c\\d', 'a\\f\\b\\c\\d'] - * 2. find unique path of first path, - * a. 'd' is present in path2 and is suffix of path2, hence not unique of present path. - * b. 'c' is present in path2 and 'c' is not suffix of present path, similarly for 'b' and 'a' also. - * c. 'd\\c' is suffix of path2. - * d. 'b\\c' is not suffix of present path. - * e. 'a\\b' is not present in path2, hence unique path is 'a\\b...'. - * 3. for path2, 'f' is not present in path1 hence unique is '...\\f\\...'. - * - * Example 2 - * 1. consider 2 paths i.e. ['a\\b', 'a\\b\\c']. - * a. Even if 'b' is present in path2, as 'b' is suffix of path1 and is not suffix of path2, unique path will be '...\\b'. - * 2. for path2, 'c' is not present in path1 hence unique path is '..\\c'. - */ -const ellipsis = '\u2026'; -const unc = '\\\\'; -const home = '~'; -export function shorten(paths, pathSeparator = sep) { - const shortenedPaths = new Array(paths.length); - // for every path - let match = false; - for (let pathIndex = 0; pathIndex < paths.length; pathIndex++) { - const originalPath = paths[pathIndex]; - if (originalPath === '') { - shortenedPaths[pathIndex] = `.${pathSeparator}`; - continue; - } - if (!originalPath) { - shortenedPaths[pathIndex] = originalPath; - continue; - } - match = true; - // trim for now and concatenate unc path (e.g. \\network) or root path (/etc, ~/etc) later - let prefix = ''; - let trimmedPath = originalPath; - if (trimmedPath.indexOf(unc) === 0) { - prefix = trimmedPath.substr(0, trimmedPath.indexOf(unc) + unc.length); - trimmedPath = trimmedPath.substr(trimmedPath.indexOf(unc) + unc.length); - } - else if (trimmedPath.indexOf(pathSeparator) === 0) { - prefix = trimmedPath.substr(0, trimmedPath.indexOf(pathSeparator) + pathSeparator.length); - trimmedPath = trimmedPath.substr(trimmedPath.indexOf(pathSeparator) + pathSeparator.length); - } - else if (trimmedPath.indexOf(home) === 0) { - prefix = trimmedPath.substr(0, trimmedPath.indexOf(home) + home.length); - trimmedPath = trimmedPath.substr(trimmedPath.indexOf(home) + home.length); - } - // pick the first shortest subpath found - const segments = trimmedPath.split(pathSeparator); - for (let subpathLength = 1; match && subpathLength <= segments.length; subpathLength++) { - for (let start = segments.length - subpathLength; match && start >= 0; start--) { - match = false; - let subpath = segments.slice(start, start + subpathLength).join(pathSeparator); - // that is unique to any other path - for (let otherPathIndex = 0; !match && otherPathIndex < paths.length; otherPathIndex++) { - // suffix subpath treated specially as we consider no match 'x' and 'x/...' - if (otherPathIndex !== pathIndex && paths[otherPathIndex] && paths[otherPathIndex].indexOf(subpath) > -1) { - const isSubpathEnding = (start + subpathLength === segments.length); - // Adding separator as prefix for subpath, such that 'endsWith(src, trgt)' considers subpath as directory name instead of plain string. - // prefix is not added when either subpath is root directory or path[otherPathIndex] does not have multiple directories. - const subpathWithSep = (start > 0 && paths[otherPathIndex].indexOf(pathSeparator) > -1) ? pathSeparator + subpath : subpath; - const isOtherPathEnding = paths[otherPathIndex].endsWith(subpathWithSep); - match = !isSubpathEnding || isOtherPathEnding; - } - } - // found unique subpath - if (!match) { - let result = ''; - // preserve disk drive or root prefix - if (segments[0].endsWith(':') || prefix !== '') { - if (start === 1) { - // extend subpath to include disk drive prefix - start = 0; - subpathLength++; - subpath = segments[0] + pathSeparator + subpath; - } - if (start > 0) { - result = segments[0] + pathSeparator; - } - result = prefix + result; - } - // add ellipsis at the beginning if needed - if (start > 0) { - result = result + ellipsis + pathSeparator; - } - result = result + subpath; - // add ellipsis at the end if needed - if (start + subpathLength < segments.length) { - result = result + pathSeparator + ellipsis; - } - shortenedPaths[pathIndex] = result; - } - } - } - if (match) { - shortenedPaths[pathIndex] = originalPath; // use original path if no unique subpaths found - } - } - return shortenedPaths; -} -var Type; -(function (Type) { - Type[Type["TEXT"] = 0] = "TEXT"; - Type[Type["VARIABLE"] = 1] = "VARIABLE"; - Type[Type["SEPARATOR"] = 2] = "SEPARATOR"; -})(Type || (Type = {})); -/** - * Helper to insert values for specific template variables into the string. E.g. "this $(is) a $(template)" can be - * passed to this function together with an object that maps "is" and "template" to strings to have them replaced. - * @param value string to which template is applied - * @param values the values of the templates to use - */ -export function template(template, values = Object.create(null)) { - const segments = []; - let inVariable = false; - let curVal = ''; - for (const char of template) { - // Beginning of variable - if (char === '$' || (inVariable && char === '{')) { - if (curVal) { - segments.push({ value: curVal, type: Type.TEXT }); - } - curVal = ''; - inVariable = true; - } - // End of variable - else if (char === '}' && inVariable) { - const resolved = values[curVal]; - // Variable - if (typeof resolved === 'string') { - if (resolved.length) { - segments.push({ value: resolved, type: Type.VARIABLE }); - } - } - // Separator - else if (resolved) { - const prevSegment = segments[segments.length - 1]; - if (!prevSegment || prevSegment.type !== Type.SEPARATOR) { - segments.push({ value: resolved.label, type: Type.SEPARATOR }); // prevent duplicate separators - } - } - curVal = ''; - inVariable = false; - } - // Text or Variable Name - else { - curVal += char; - } - } - // Tail - if (curVal && !inVariable) { - segments.push({ value: curVal, type: Type.TEXT }); - } - return segments.filter((segment, index) => { - // Only keep separator if we have values to the left and right - if (segment.type === Type.SEPARATOR) { - const left = segments[index - 1]; - const right = segments[index + 1]; - return [left, right].every(segment => segment && (segment.type === Type.VARIABLE || segment.type === Type.TEXT) && segment.value.length > 0); - } - // accept any TEXT and VARIABLE - return true; - }).map(segment => segment.value).join(''); -} -/** - * Handles mnemonics for menu items. Depending on OS: - * - Windows: Supported via & character (replace && with &) - * - Linux: Supported via & character (replace && with &) - * - macOS: Unsupported (replace && with empty string) - */ -export function mnemonicMenuLabel(label, forceDisableMnemonics) { - if (isMacintosh || forceDisableMnemonics) { - return label.replace(/\(&&\w\)|&&/g, '').replace(/&/g, isMacintosh ? '&' : '&&'); - } - return label.replace(/&&|&/g, m => m === '&' ? '&&' : '&'); -} -/** - * Handles mnemonics for buttons. Depending on OS: - * - Windows: Supported via & character (replace && with & and & with && for escaping) - * - Linux: Supported via _ character (replace && with _) - * - macOS: Unsupported (replace && with empty string) - */ -export function mnemonicButtonLabel(label, forceDisableMnemonics) { - if (isMacintosh || forceDisableMnemonics) { - return label.replace(/\(&&\w\)|&&/g, ''); - } - if (isWindows) { - return label.replace(/&&|&/g, m => m === '&' ? '&&' : '&'); - } - return label.replace(/&&/g, '_'); -} -export function unmnemonicLabel(label) { - return label.replace(/&/g, '&&'); -} -/** - * Splits a recent label in name and parent path, supporting both '/' and '\' and workspace suffixes. - * If the location is remote, the remote name is included in the name part. - */ -export function splitRecentLabel(recentLabel) { - if (recentLabel.endsWith(']')) { - // label with workspace suffix - const lastIndexOfSquareBracket = recentLabel.lastIndexOf(' [', recentLabel.length - 2); - if (lastIndexOfSquareBracket !== -1) { - const split = splitName(recentLabel.substring(0, lastIndexOfSquareBracket)); - const remoteNameWithSpace = recentLabel.substring(lastIndexOfSquareBracket); - return { name: split.name + remoteNameWithSpace, parentPath: split.parentPath }; - } - } - return splitName(recentLabel); -} -function splitName(fullPath) { - const p = fullPath.indexOf('/') !== -1 ? posix : win32; - const name = p.basename(fullPath); - const parentPath = p.dirname(fullPath); - if (name.length) { - return { name, parentPath }; - } - // only the root segment - return { name: parentPath, parentPath: '' }; -} +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +import { hasDriveLetter, toSlashes } from './extpath.js'; +import { posix, sep, win32 } from './path.js'; +import { isMacintosh, isWindows, OS } from './platform.js'; +import { extUri, extUriIgnorePathCase } from './resources.js'; +import { rtrim, startsWithIgnoreCase } from './strings.js'; +export function getPathLabel(resource, formatting) { + const { os, tildify: tildifier, relative: relatifier } = formatting; + // return early with a relative path if we can resolve one + if (relatifier) { + const relativePath = getRelativePathLabel(resource, relatifier, os); + if (typeof relativePath === 'string') { + return relativePath; + } + } + // otherwise try to resolve a absolute path label and + // apply target OS standard path separators if target + // OS differs from actual OS we are running in + let absolutePath = resource.fsPath; + if (os === 1 /* OperatingSystem.Windows */ && !isWindows) { + absolutePath = absolutePath.replace(/\//g, '\\'); + } + else if (os !== 1 /* OperatingSystem.Windows */ && isWindows) { + absolutePath = absolutePath.replace(/\\/g, '/'); + } + // macOS/Linux: tildify with provided user home directory + if (os !== 1 /* OperatingSystem.Windows */ && tildifier?.userHome) { + const userHome = tildifier.userHome.fsPath; + // This is a bit of a hack, but in order to figure out if the + // resource is in the user home, we need to make sure to convert it + // to a user home resource. We cannot assume that the resource is + // already a user home resource. + let userHomeCandidate; + if (resource.scheme !== tildifier.userHome.scheme && resource.path[0] === posix.sep && resource.path[1] !== posix.sep) { + userHomeCandidate = tildifier.userHome.with({ path: resource.path }).fsPath; + } + else { + userHomeCandidate = absolutePath; + } + absolutePath = tildify(userHomeCandidate, userHome, os); + } + // normalize + const pathLib = os === 1 /* OperatingSystem.Windows */ ? win32 : posix; + return pathLib.normalize(normalizeDriveLetter(absolutePath, os === 1 /* OperatingSystem.Windows */)); +} +function getRelativePathLabel(resource, relativePathProvider, os) { + const pathLib = os === 1 /* OperatingSystem.Windows */ ? win32 : posix; + const extUriLib = os === 3 /* OperatingSystem.Linux */ ? extUri : extUriIgnorePathCase; + const workspace = relativePathProvider.getWorkspace(); + const firstFolder = workspace.folders.at(0); + if (!firstFolder) { + return undefined; + } + // This is a bit of a hack, but in order to figure out the folder + // the resource belongs to, we need to make sure to convert it + // to a workspace resource. We cannot assume that the resource is + // already matching the workspace. + if (resource.scheme !== firstFolder.uri.scheme && resource.path[0] === posix.sep && resource.path[1] !== posix.sep) { + resource = firstFolder.uri.with({ path: resource.path }); + } + const folder = relativePathProvider.getWorkspaceFolder(resource); + if (!folder) { + return undefined; + } + let relativePathLabel = undefined; + if (extUriLib.isEqual(folder.uri, resource)) { + relativePathLabel = ''; // no label if paths are identical + } + else { + relativePathLabel = extUriLib.relativePath(folder.uri, resource) ?? ''; + } + // normalize + if (relativePathLabel) { + relativePathLabel = pathLib.normalize(relativePathLabel); + } + // always show root basename if there are multiple folders + if (workspace.folders.length > 1 && !relativePathProvider.noPrefix) { + const rootName = folder.name ? folder.name : extUriLib.basenameOrAuthority(folder.uri); + relativePathLabel = relativePathLabel ? `${rootName} • ${relativePathLabel}` : rootName; + } + return relativePathLabel; +} +export function normalizeDriveLetter(path, isWindowsOS = isWindows) { + if (hasDriveLetter(path, isWindowsOS)) { + return path.charAt(0).toUpperCase() + path.slice(1); + } + return path; +} +let normalizedUserHomeCached = Object.create(null); +export function tildify(path, userHome, os = OS) { + if (os === 1 /* OperatingSystem.Windows */ || !path || !userHome) { + return path; // unsupported on Windows + } + let normalizedUserHome = normalizedUserHomeCached.original === userHome ? normalizedUserHomeCached.normalized : undefined; + if (!normalizedUserHome) { + normalizedUserHome = userHome; + if (isWindows) { + normalizedUserHome = toSlashes(normalizedUserHome); // make sure that the path is POSIX normalized on Windows + } + normalizedUserHome = `${rtrim(normalizedUserHome, posix.sep)}${posix.sep}`; + normalizedUserHomeCached = { original: userHome, normalized: normalizedUserHome }; + } + let normalizedPath = path; + if (isWindows) { + normalizedPath = toSlashes(normalizedPath); // make sure that the path is POSIX normalized on Windows + } + // Linux: case sensitive, macOS: case insensitive + if (os === 3 /* OperatingSystem.Linux */ ? normalizedPath.startsWith(normalizedUserHome) : startsWithIgnoreCase(normalizedPath, normalizedUserHome)) { + return `~/${normalizedPath.substr(normalizedUserHome.length)}`; + } + return path; +} +export function untildify(path, userHome) { + return path.replace(/^~($|\/|\\)/, `${userHome}$1`); +} +/** + * Shortens the paths but keeps them easy to distinguish. + * Replaces not important parts with ellipsis. + * Every shorten path matches only one original path and vice versa. + * + * Algorithm for shortening paths is as follows: + * 1. For every path in list, find unique substring of that path. + * 2. Unique substring along with ellipsis is shortened path of that path. + * 3. To find unique substring of path, consider every segment of length from 1 to path.length of path from end of string + * and if present segment is not substring to any other paths then present segment is unique path, + * else check if it is not present as suffix of any other path and present segment is suffix of path itself, + * if it is true take present segment as unique path. + * 4. Apply ellipsis to unique segment according to whether segment is present at start/in-between/end of path. + * + * Example 1 + * 1. consider 2 paths i.e. ['a\\b\\c\\d', 'a\\f\\b\\c\\d'] + * 2. find unique path of first path, + * a. 'd' is present in path2 and is suffix of path2, hence not unique of present path. + * b. 'c' is present in path2 and 'c' is not suffix of present path, similarly for 'b' and 'a' also. + * c. 'd\\c' is suffix of path2. + * d. 'b\\c' is not suffix of present path. + * e. 'a\\b' is not present in path2, hence unique path is 'a\\b...'. + * 3. for path2, 'f' is not present in path1 hence unique is '...\\f\\...'. + * + * Example 2 + * 1. consider 2 paths i.e. ['a\\b', 'a\\b\\c']. + * a. Even if 'b' is present in path2, as 'b' is suffix of path1 and is not suffix of path2, unique path will be '...\\b'. + * 2. for path2, 'c' is not present in path1 hence unique path is '..\\c'. + */ +const ellipsis = '\u2026'; +const unc = '\\\\'; +const home = '~'; +export function shorten(paths, pathSeparator = sep) { + const shortenedPaths = new Array(paths.length); + // for every path + let match = false; + for (let pathIndex = 0; pathIndex < paths.length; pathIndex++) { + const originalPath = paths[pathIndex]; + if (originalPath === '') { + shortenedPaths[pathIndex] = `.${pathSeparator}`; + continue; + } + if (!originalPath) { + shortenedPaths[pathIndex] = originalPath; + continue; + } + match = true; + // trim for now and concatenate unc path (e.g. \\network) or root path (/etc, ~/etc) later + let prefix = ''; + let trimmedPath = originalPath; + if (trimmedPath.indexOf(unc) === 0) { + prefix = trimmedPath.substr(0, trimmedPath.indexOf(unc) + unc.length); + trimmedPath = trimmedPath.substr(trimmedPath.indexOf(unc) + unc.length); + } + else if (trimmedPath.indexOf(pathSeparator) === 0) { + prefix = trimmedPath.substr(0, trimmedPath.indexOf(pathSeparator) + pathSeparator.length); + trimmedPath = trimmedPath.substr(trimmedPath.indexOf(pathSeparator) + pathSeparator.length); + } + else if (trimmedPath.indexOf(home) === 0) { + prefix = trimmedPath.substr(0, trimmedPath.indexOf(home) + home.length); + trimmedPath = trimmedPath.substr(trimmedPath.indexOf(home) + home.length); + } + // pick the first shortest subpath found + const segments = trimmedPath.split(pathSeparator); + for (let subpathLength = 1; match && subpathLength <= segments.length; subpathLength++) { + for (let start = segments.length - subpathLength; match && start >= 0; start--) { + match = false; + let subpath = segments.slice(start, start + subpathLength).join(pathSeparator); + // that is unique to any other path + for (let otherPathIndex = 0; !match && otherPathIndex < paths.length; otherPathIndex++) { + // suffix subpath treated specially as we consider no match 'x' and 'x/...' + if (otherPathIndex !== pathIndex && paths[otherPathIndex] && paths[otherPathIndex].indexOf(subpath) > -1) { + const isSubpathEnding = (start + subpathLength === segments.length); + // Adding separator as prefix for subpath, such that 'endsWith(src, trgt)' considers subpath as directory name instead of plain string. + // prefix is not added when either subpath is root directory or path[otherPathIndex] does not have multiple directories. + const subpathWithSep = (start > 0 && paths[otherPathIndex].indexOf(pathSeparator) > -1) ? pathSeparator + subpath : subpath; + const isOtherPathEnding = paths[otherPathIndex].endsWith(subpathWithSep); + match = !isSubpathEnding || isOtherPathEnding; + } + } + // found unique subpath + if (!match) { + let result = ''; + // preserve disk drive or root prefix + if (segments[0].endsWith(':') || prefix !== '') { + if (start === 1) { + // extend subpath to include disk drive prefix + start = 0; + subpathLength++; + subpath = segments[0] + pathSeparator + subpath; + } + if (start > 0) { + result = segments[0] + pathSeparator; + } + result = prefix + result; + } + // add ellipsis at the beginning if needed + if (start > 0) { + result = result + ellipsis + pathSeparator; + } + result = result + subpath; + // add ellipsis at the end if needed + if (start + subpathLength < segments.length) { + result = result + pathSeparator + ellipsis; + } + shortenedPaths[pathIndex] = result; + } + } + } + if (match) { + shortenedPaths[pathIndex] = originalPath; // use original path if no unique subpaths found + } + } + return shortenedPaths; +} +var Type; +(function (Type) { + Type[Type["TEXT"] = 0] = "TEXT"; + Type[Type["VARIABLE"] = 1] = "VARIABLE"; + Type[Type["SEPARATOR"] = 2] = "SEPARATOR"; +})(Type || (Type = {})); +/** + * Helper to insert values for specific template variables into the string. E.g. "this $(is) a $(template)" can be + * passed to this function together with an object that maps "is" and "template" to strings to have them replaced. + * @param value string to which template is applied + * @param values the values of the templates to use + */ +export function template(template, values = Object.create(null)) { + const segments = []; + let inVariable = false; + let curVal = ''; + for (const char of template) { + // Beginning of variable + if (char === '$' || (inVariable && char === '{')) { + if (curVal) { + segments.push({ value: curVal, type: Type.TEXT }); + } + curVal = ''; + inVariable = true; + } + // End of variable + else if (char === '}' && inVariable) { + const resolved = values[curVal]; + // Variable + if (typeof resolved === 'string') { + if (resolved.length) { + segments.push({ value: resolved, type: Type.VARIABLE }); + } + } + // Separator + else if (resolved) { + const prevSegment = segments[segments.length - 1]; + if (!prevSegment || prevSegment.type !== Type.SEPARATOR) { + segments.push({ value: resolved.label, type: Type.SEPARATOR }); // prevent duplicate separators + } + } + curVal = ''; + inVariable = false; + } + // Text or Variable Name + else { + curVal += char; + } + } + // Tail + if (curVal && !inVariable) { + segments.push({ value: curVal, type: Type.TEXT }); + } + return segments.filter((segment, index) => { + // Only keep separator if we have values to the left and right + if (segment.type === Type.SEPARATOR) { + const left = segments[index - 1]; + const right = segments[index + 1]; + return [left, right].every(segment => segment && (segment.type === Type.VARIABLE || segment.type === Type.TEXT) && segment.value.length > 0); + } + // accept any TEXT and VARIABLE + return true; + }).map(segment => segment.value).join(''); +} +/** + * Handles mnemonics for menu items. Depending on OS: + * - Windows: Supported via & character (replace && with &) + * - Linux: Supported via & character (replace && with &) + * - macOS: Unsupported (replace && with empty string) + */ +export function mnemonicMenuLabel(label, forceDisableMnemonics) { + if (isMacintosh || forceDisableMnemonics) { + return label.replace(/\(&&\w\)|&&/g, '').replace(/&/g, isMacintosh ? '&' : '&&'); + } + return label.replace(/&&|&/g, m => m === '&' ? '&&' : '&'); +} +/** + * Handles mnemonics for buttons. Depending on OS: + * - Windows: Supported via & character (replace && with & and & with && for escaping) + * - Linux: Supported via _ character (replace && with _) + * - macOS: Unsupported (replace && with empty string) + */ +export function mnemonicButtonLabel(label, forceDisableMnemonics) { + if (isMacintosh || forceDisableMnemonics) { + return label.replace(/\(&&\w\)|&&/g, ''); + } + if (isWindows) { + return label.replace(/&&|&/g, m => m === '&' ? '&&' : '&'); + } + return label.replace(/&&/g, '_'); +} +export function unmnemonicLabel(label) { + return label.replace(/&/g, '&&'); +} +/** + * Splits a recent label in name and parent path, supporting both '/' and '\' and workspace suffixes. + * If the location is remote, the remote name is included in the name part. + */ +export function splitRecentLabel(recentLabel) { + if (recentLabel.endsWith(']')) { + // label with workspace suffix + const lastIndexOfSquareBracket = recentLabel.lastIndexOf(' [', recentLabel.length - 2); + if (lastIndexOfSquareBracket !== -1) { + const split = splitName(recentLabel.substring(0, lastIndexOfSquareBracket)); + const remoteNameWithSpace = recentLabel.substring(lastIndexOfSquareBracket); + return { name: split.name + remoteNameWithSpace, parentPath: split.parentPath }; + } + } + return splitName(recentLabel); +} +function splitName(fullPath) { + const p = fullPath.indexOf('/') !== -1 ? posix : win32; + const name = p.basename(fullPath); + const parentPath = p.dirname(fullPath); + if (name.length) { + return { name, parentPath }; + } + // only the root segment + return { name: parentPath, parentPath: '' }; +} //# sourceMappingURL=labels.js.map \ No newline at end of file diff --git a/packages/core/dist/labels.js.map b/packages/core/dist/labels.js.map index dd9131cd..e606dfa8 100644 --- a/packages/core/dist/labels.js.map +++ b/packages/core/dist/labels.js.map @@ -1 +1 @@ -{"version":3,"file":"labels.js","sourceRoot":"","sources":["../src/labels.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"labels.js","sourceRoot":"","sources":["../src/labels.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/dist/lazy.d.ts b/packages/core/dist/lazy.d.ts index 47ff2d9b..beaadcd7 100644 --- a/packages/core/dist/lazy.d.ts +++ b/packages/core/dist/lazy.d.ts @@ -1,22 +1,22 @@ -export declare class Lazy { - private readonly executor; - private _didRun; - private _value?; - private _error; - constructor(executor: () => T); - /** - * True if the lazy value has been resolved. - */ - get hasValue(): boolean; - /** - * Get the wrapped value. - * - * This will force evaluation of the lazy value if it has not been resolved yet. Lazy values are only - * resolved once. `getValue` will re-throw exceptions that are hit while resolving the value - */ - get value(): T; - /** - * Get the wrapped value without forcing evaluation. - */ - get rawValue(): T | undefined; -} +export declare class Lazy { + private readonly executor; + private _didRun; + private _value?; + private _error; + constructor(executor: () => T); + /** + * True if the lazy value has been resolved. + */ + get hasValue(): boolean; + /** + * Get the wrapped value. + * + * This will force evaluation of the lazy value if it has not been resolved yet. Lazy values are only + * resolved once. `getValue` will re-throw exceptions that are hit while resolving the value + */ + get value(): T; + /** + * Get the wrapped value without forcing evaluation. + */ + get rawValue(): T | undefined; +} diff --git a/packages/core/dist/lazy.js b/packages/core/dist/lazy.js index 070258b2..7846d20c 100644 --- a/packages/core/dist/lazy.js +++ b/packages/core/dist/lazy.js @@ -1,45 +1,45 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ -export class Lazy { - executor; - _didRun = false; - _value; - _error; - constructor(executor) { - this.executor = executor; - } - /** - * True if the lazy value has been resolved. - */ - get hasValue() { return this._didRun; } - /** - * Get the wrapped value. - * - * This will force evaluation of the lazy value if it has not been resolved yet. Lazy values are only - * resolved once. `getValue` will re-throw exceptions that are hit while resolving the value - */ - get value() { - if (!this._didRun) { - try { - this._value = this.executor(); - } - catch (err) { - this._error = err; - } - finally { - this._didRun = true; - } - } - if (this._error) { - throw this._error; - } - return this._value; - } - /** - * Get the wrapped value without forcing evaluation. - */ - get rawValue() { return this._value; } -} +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +export class Lazy { + executor; + _didRun = false; + _value; + _error; + constructor(executor) { + this.executor = executor; + } + /** + * True if the lazy value has been resolved. + */ + get hasValue() { return this._didRun; } + /** + * Get the wrapped value. + * + * This will force evaluation of the lazy value if it has not been resolved yet. Lazy values are only + * resolved once. `getValue` will re-throw exceptions that are hit while resolving the value + */ + get value() { + if (!this._didRun) { + try { + this._value = this.executor(); + } + catch (err) { + this._error = err; + } + finally { + this._didRun = true; + } + } + if (this._error) { + throw this._error; + } + return this._value; + } + /** + * Get the wrapped value without forcing evaluation. + */ + get rawValue() { return this._value; } +} //# sourceMappingURL=lazy.js.map \ No newline at end of file diff --git a/packages/core/dist/lazy.js.map b/packages/core/dist/lazy.js.map index 3c96fcf7..504f0f68 100644 --- a/packages/core/dist/lazy.js.map +++ b/packages/core/dist/lazy.js.map @@ -1 +1 @@ -{"version":3,"file":"lazy.js","sourceRoot":"","sources":["../src/lazy.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,MAAM,OAAO,IAAI;IAOE;IALV,OAAO,GAAY,KAAK,CAAC;IACzB,MAAM,CAAK;IACX,MAAM,CAAoB;IAElC,YACkB,QAAiB;QAAjB,aAAQ,GAAR,QAAQ,CAAS;IAC/B,CAAC;IAEL;;OAEG;IACH,IAAI,QAAQ,KAAK,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IAEvC;;;;;OAKG;IACH,IAAI,KAAK;QACR,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YAClB,IAAI;gBACH,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;aAC9B;YAAC,OAAO,GAAG,EAAE;gBACb,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC;aAClB;oBAAS;gBACT,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;aACpB;SACD;QACD,IAAI,IAAI,CAAC,MAAM,EAAE;YAChB,MAAM,IAAI,CAAC,MAAM,CAAC;SAClB;QACD,OAAO,IAAI,CAAC,MAAO,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,IAAI,QAAQ,KAAoB,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;CACrD"} \ No newline at end of file +{"version":3,"file":"lazy.js","sourceRoot":"","sources":["../src/lazy.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,MAAM,OAAO,IAAI;IAOE;IALV,OAAO,GAAY,KAAK,CAAC;IACzB,MAAM,CAAK;IACX,MAAM,CAAoB;IAElC,YACkB,QAAiB;QAAjB,aAAQ,GAAR,QAAQ,CAAS;IAC/B,CAAC;IAEL;;OAEG;IACH,IAAI,QAAQ,KAAK,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IAEvC;;;;;OAKG;IACH,IAAI,KAAK;QACR,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YACnB,IAAI,CAAC;gBACJ,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC/B,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACd,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC;YACnB,CAAC;oBAAS,CAAC;gBACV,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YACrB,CAAC;QACF,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,IAAI,CAAC,MAAM,CAAC;QACnB,CAAC;QACD,OAAO,IAAI,CAAC,MAAO,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,IAAI,QAAQ,KAAoB,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;CACrD"} \ No newline at end of file diff --git a/packages/core/dist/lifecycle.d.ts b/packages/core/dist/lifecycle.d.ts index 9969a3d1..af9ec40b 100644 --- a/packages/core/dist/lifecycle.d.ts +++ b/packages/core/dist/lifecycle.d.ts @@ -1,261 +1,261 @@ -export interface IDisposableTracker { - /** - * Is called on construction of a disposable. - */ - trackDisposable(disposable: IDisposable): void; - /** - * Is called when a disposable is registered as child of another disposable (e.g. {@link DisposableStore}). - * If parent is `null`, the disposable is removed from its former parent. - */ - setParent(child: IDisposable, parent: IDisposable | null): void; - /** - * Is called after a disposable is disposed. - */ - markAsDisposed(disposable: IDisposable): void; - /** - * Indicates that the given object is a singleton which does not need to be disposed. - */ - markAsSingleton(disposable: IDisposable): void; -} -export declare class GCBasedDisposableTracker implements IDisposableTracker { - private readonly _registry; - trackDisposable(disposable: IDisposable): void; - setParent(child: IDisposable, parent: IDisposable | null): void; - markAsDisposed(disposable: IDisposable): void; - markAsSingleton(disposable: IDisposable): void; -} -export interface DisposableInfo { - value: IDisposable; - source: string | null; - parent: IDisposable | null; - isSingleton: boolean; - idx: number; -} -export declare class DisposableTracker implements IDisposableTracker { - private static idx; - private readonly livingDisposables; - private getDisposableData; - trackDisposable(d: IDisposable): void; - setParent(child: IDisposable, parent: IDisposable | null): void; - markAsDisposed(x: IDisposable): void; - markAsSingleton(disposable: IDisposable): void; - private getRootParent; - getTrackedDisposables(): IDisposable[]; - computeLeakingDisposables(maxReported?: number, preComputedLeaks?: DisposableInfo[]): { - leaks: DisposableInfo[]; - details: string; - } | undefined; -} -export declare function setDisposableTracker(tracker: IDisposableTracker | null): void; -export declare function trackDisposable(x: T): T; -export declare function markAsDisposed(disposable: IDisposable): void; -/** - * Indicates that the given object is a singleton which does not need to be disposed. -*/ -export declare function markAsSingleton(singleton: T): T; -/** - * An object that performs a cleanup operation when `.dispose()` is called. - * - * Some examples of how disposables are used: - * - * - An event listener that removes itself when `.dispose()` is called. - * - A resource such as a file system watcher that cleans up the resource when `.dispose()` is called. - * - The return value from registering a provider. When `.dispose()` is called, the provider is unregistered. - */ -export interface IDisposable { - dispose(): void; -} -/** - * Check if `thing` is {@link IDisposable disposable}. - */ -export declare function isDisposable(thing: E): thing is E & IDisposable; -/** - * Disposes of the value(s) passed in. - */ -export declare function dispose(disposable: T): T; -export declare function dispose(disposable: T | undefined): T | undefined; -export declare function dispose = Iterable>(disposables: A): A; -export declare function dispose(disposables: Array): Array; -export declare function dispose(disposables: ReadonlyArray): ReadonlyArray; -export declare function disposeIfDisposable(disposables: Array): Array; -/** - * Combine multiple disposable values into a single {@link IDisposable}. - */ -export declare function combinedDisposable(...disposables: IDisposable[]): IDisposable; -/** - * Turn a function that implements dispose into an {@link IDisposable}. - * - * @param fn Clean up function, guaranteed to be called only **once**. - */ -export declare function toDisposable(fn: () => void): IDisposable; -/** - * Manages a collection of disposable values. - * - * This is the preferred way to manage multiple disposables. A `DisposableStore` is safer to work with than an - * `IDisposable[]` as it considers edge cases, such as registering the same value multiple times or adding an item to a - * store that has already been disposed of. - */ -export declare class DisposableStore implements IDisposable { - static DISABLE_DISPOSED_WARNING: boolean; - private readonly _toDispose; - private _isDisposed; - constructor(); - /** - * Dispose of all registered disposables and mark this object as disposed. - * - * Any future disposables added to this object will be disposed of on `add`. - */ - dispose(): void; - /** - * @return `true` if this object has been disposed of. - */ - get isDisposed(): boolean; - /** - * Dispose of all registered disposables but do not mark this object as disposed. - */ - clear(): void; - /** - * Add a new {@link IDisposable disposable} to the collection. - */ - add(o: T): T; - /** - * Deletes a disposable from store and disposes of it. This will not throw or warn and proceed to dispose the - * disposable even when the disposable is not part in the store. - */ - delete(o: T): void; - /** - * Deletes the value from the store, but does not dispose it. - */ - deleteAndLeak(o: T): void; -} -/** - * Abstract base class for a {@link IDisposable disposable} object. - * - * Subclasses can {@linkcode _register} disposables that will be automatically cleaned up when this object is disposed of. - */ -export declare abstract class Disposable implements IDisposable { - /** - * A disposable that does nothing when it is disposed of. - * - * TODO: This should not be a static property. - */ - static readonly None: Readonly; - protected readonly _store: DisposableStore; - constructor(); - dispose(): void; - /** - * Adds `o` to the collection of disposables managed by this object. - */ - protected _register(o: T): T; -} -/** - * Manages the lifecycle of a disposable value that may be changed. - * - * This ensures that when the disposable value is changed, the previously held disposable is disposed of. You can - * also register a `MutableDisposable` on a `Disposable` to ensure it is automatically cleaned up. - */ -export declare class MutableDisposable implements IDisposable { - private _value?; - private _isDisposed; - constructor(); - get value(): T | undefined; - set value(value: T | undefined); - /** - * Resets the stored value and disposed of the previously stored value. - */ - clear(): void; - dispose(): void; - /** - * Clears the value, but does not dispose it. - * The old value is returned. - */ - clearAndLeak(): T | undefined; -} -/** - * Manages the lifecycle of a disposable value that may be changed like {@link MutableDisposable}, but the value must - * exist and cannot be undefined. - */ -export declare class MandatoryMutableDisposable implements IDisposable { - private readonly _disposable; - private _isDisposed; - constructor(initialValue: T); - get value(): T; - set value(value: T); - dispose(): void; -} -export declare class RefCountedDisposable { - private readonly _disposable; - private _counter; - constructor(_disposable: IDisposable); - acquire(): this; - release(): this; -} -/** - * A safe disposable can be `unset` so that a leaked reference (listener) - * can be cut-off. - */ -export declare class SafeDisposable implements IDisposable { - dispose: () => void; - unset: () => void; - isset: () => boolean; - constructor(); - set(fn: Function): this; -} -export interface IReference extends IDisposable { - readonly object: T; -} -export declare abstract class ReferenceCollection { - private readonly references; - acquire(key: string, ...args: any[]): IReference; - protected abstract createReferencedObject(key: string, ...args: any[]): T; - protected abstract destroyReferencedObject(key: string, object: T): void; -} -/** - * Unwraps a reference collection of promised values. Makes sure - * references are disposed whenever promises get rejected. - */ -export declare class AsyncReferenceCollection { - private referenceCollection; - constructor(referenceCollection: ReferenceCollection>); - acquire(key: string, ...args: any[]): Promise>; -} -export declare class ImmortalReference implements IReference { - object: T; - constructor(object: T); - dispose(): void; -} -export declare function disposeOnReturn(fn: (store: DisposableStore) => void): void; -/** - * A map the manages the lifecycle of the values that it stores. - */ -export declare class DisposableMap implements IDisposable { - private readonly _store; - private _isDisposed; - constructor(); - /** - * Disposes of all stored values and mark this object as disposed. - * - * Trying to use this object after it has been disposed of is an error. - */ - dispose(): void; - /** - * Disposes of all stored values and clear the map, but DO NOT mark this object as disposed. - */ - clearAndDisposeAll(): void; - has(key: K): boolean; - get size(): number; - get(key: K): V | undefined; - set(key: K, value: V, skipDisposeOnOverwrite?: boolean): void; - /** - * Delete the value stored for `key` from this map and also dispose of it. - */ - deleteAndDispose(key: K): void; - /** - * Delete the value stored for `key` from this map but return it. The caller is - * responsible for disposing of the value. - */ - deleteAndLeak(key: K): V | undefined; - keys(): IterableIterator; - values(): IterableIterator; - [Symbol.iterator](): IterableIterator<[K, V]>; -} +export interface IDisposableTracker { + /** + * Is called on construction of a disposable. + */ + trackDisposable(disposable: IDisposable): void; + /** + * Is called when a disposable is registered as child of another disposable (e.g. {@link DisposableStore}). + * If parent is `null`, the disposable is removed from its former parent. + */ + setParent(child: IDisposable, parent: IDisposable | null): void; + /** + * Is called after a disposable is disposed. + */ + markAsDisposed(disposable: IDisposable): void; + /** + * Indicates that the given object is a singleton which does not need to be disposed. + */ + markAsSingleton(disposable: IDisposable): void; +} +export declare class GCBasedDisposableTracker implements IDisposableTracker { + private readonly _registry; + trackDisposable(disposable: IDisposable): void; + setParent(child: IDisposable, parent: IDisposable | null): void; + markAsDisposed(disposable: IDisposable): void; + markAsSingleton(disposable: IDisposable): void; +} +export interface DisposableInfo { + value: IDisposable; + source: string | null; + parent: IDisposable | null; + isSingleton: boolean; + idx: number; +} +export declare class DisposableTracker implements IDisposableTracker { + private static idx; + private readonly livingDisposables; + private getDisposableData; + trackDisposable(d: IDisposable): void; + setParent(child: IDisposable, parent: IDisposable | null): void; + markAsDisposed(x: IDisposable): void; + markAsSingleton(disposable: IDisposable): void; + private getRootParent; + getTrackedDisposables(): IDisposable[]; + computeLeakingDisposables(maxReported?: number, preComputedLeaks?: DisposableInfo[]): { + leaks: DisposableInfo[]; + details: string; + } | undefined; +} +export declare function setDisposableTracker(tracker: IDisposableTracker | null): void; +export declare function trackDisposable(x: T): T; +export declare function markAsDisposed(disposable: IDisposable): void; +/** + * Indicates that the given object is a singleton which does not need to be disposed. +*/ +export declare function markAsSingleton(singleton: T): T; +/** + * An object that performs a cleanup operation when `.dispose()` is called. + * + * Some examples of how disposables are used: + * + * - An event listener that removes itself when `.dispose()` is called. + * - A resource such as a file system watcher that cleans up the resource when `.dispose()` is called. + * - The return value from registering a provider. When `.dispose()` is called, the provider is unregistered. + */ +export interface IDisposable { + dispose(): void; +} +/** + * Check if `thing` is {@link IDisposable disposable}. + */ +export declare function isDisposable(thing: E): thing is E & IDisposable; +/** + * Disposes of the value(s) passed in. + */ +export declare function dispose(disposable: T): T; +export declare function dispose(disposable: T | undefined): T | undefined; +export declare function dispose = Iterable>(disposables: A): A; +export declare function dispose(disposables: Array): Array; +export declare function dispose(disposables: ReadonlyArray): ReadonlyArray; +export declare function disposeIfDisposable(disposables: Array): Array; +/** + * Combine multiple disposable values into a single {@link IDisposable}. + */ +export declare function combinedDisposable(...disposables: IDisposable[]): IDisposable; +/** + * Turn a function that implements dispose into an {@link IDisposable}. + * + * @param fn Clean up function, guaranteed to be called only **once**. + */ +export declare function toDisposable(fn: () => void): IDisposable; +/** + * Manages a collection of disposable values. + * + * This is the preferred way to manage multiple disposables. A `DisposableStore` is safer to work with than an + * `IDisposable[]` as it considers edge cases, such as registering the same value multiple times or adding an item to a + * store that has already been disposed of. + */ +export declare class DisposableStore implements IDisposable { + static DISABLE_DISPOSED_WARNING: boolean; + private readonly _toDispose; + private _isDisposed; + constructor(); + /** + * Dispose of all registered disposables and mark this object as disposed. + * + * Any future disposables added to this object will be disposed of on `add`. + */ + dispose(): void; + /** + * @return `true` if this object has been disposed of. + */ + get isDisposed(): boolean; + /** + * Dispose of all registered disposables but do not mark this object as disposed. + */ + clear(): void; + /** + * Add a new {@link IDisposable disposable} to the collection. + */ + add(o: T): T; + /** + * Deletes a disposable from store and disposes of it. This will not throw or warn and proceed to dispose the + * disposable even when the disposable is not part in the store. + */ + delete(o: T): void; + /** + * Deletes the value from the store, but does not dispose it. + */ + deleteAndLeak(o: T): void; +} +/** + * Abstract base class for a {@link IDisposable disposable} object. + * + * Subclasses can {@linkcode _register} disposables that will be automatically cleaned up when this object is disposed of. + */ +export declare abstract class Disposable implements IDisposable { + /** + * A disposable that does nothing when it is disposed of. + * + * TODO: This should not be a static property. + */ + static readonly None: Readonly; + protected readonly _store: DisposableStore; + constructor(); + dispose(): void; + /** + * Adds `o` to the collection of disposables managed by this object. + */ + protected _register(o: T): T; +} +/** + * Manages the lifecycle of a disposable value that may be changed. + * + * This ensures that when the disposable value is changed, the previously held disposable is disposed of. You can + * also register a `MutableDisposable` on a `Disposable` to ensure it is automatically cleaned up. + */ +export declare class MutableDisposable implements IDisposable { + private _value?; + private _isDisposed; + constructor(); + get value(): T | undefined; + set value(value: T | undefined); + /** + * Resets the stored value and disposed of the previously stored value. + */ + clear(): void; + dispose(): void; + /** + * Clears the value, but does not dispose it. + * The old value is returned. + */ + clearAndLeak(): T | undefined; +} +/** + * Manages the lifecycle of a disposable value that may be changed like {@link MutableDisposable}, but the value must + * exist and cannot be undefined. + */ +export declare class MandatoryMutableDisposable implements IDisposable { + private readonly _disposable; + private _isDisposed; + constructor(initialValue: T); + get value(): T; + set value(value: T); + dispose(): void; +} +export declare class RefCountedDisposable { + private readonly _disposable; + private _counter; + constructor(_disposable: IDisposable); + acquire(): this; + release(): this; +} +/** + * A safe disposable can be `unset` so that a leaked reference (listener) + * can be cut-off. + */ +export declare class SafeDisposable implements IDisposable { + dispose: () => void; + unset: () => void; + isset: () => boolean; + constructor(); + set(fn: Function): this; +} +export interface IReference extends IDisposable { + readonly object: T; +} +export declare abstract class ReferenceCollection { + private readonly references; + acquire(key: string, ...args: any[]): IReference; + protected abstract createReferencedObject(key: string, ...args: any[]): T; + protected abstract destroyReferencedObject(key: string, object: T): void; +} +/** + * Unwraps a reference collection of promised values. Makes sure + * references are disposed whenever promises get rejected. + */ +export declare class AsyncReferenceCollection { + private referenceCollection; + constructor(referenceCollection: ReferenceCollection>); + acquire(key: string, ...args: any[]): Promise>; +} +export declare class ImmortalReference implements IReference { + object: T; + constructor(object: T); + dispose(): void; +} +export declare function disposeOnReturn(fn: (store: DisposableStore) => void): void; +/** + * A map the manages the lifecycle of the values that it stores. + */ +export declare class DisposableMap implements IDisposable { + private readonly _store; + private _isDisposed; + constructor(); + /** + * Disposes of all stored values and mark this object as disposed. + * + * Trying to use this object after it has been disposed of is an error. + */ + dispose(): void; + /** + * Disposes of all stored values and clear the map, but DO NOT mark this object as disposed. + */ + clearAndDisposeAll(): void; + has(key: K): boolean; + get size(): number; + get(key: K): V | undefined; + set(key: K, value: V, skipDisposeOnOverwrite?: boolean): void; + /** + * Delete the value stored for `key` from this map and also dispose of it. + */ + deleteAndDispose(key: K): void; + /** + * Delete the value stored for `key` from this map but return it. The caller is + * responsible for disposing of the value. + */ + deleteAndLeak(key: K): V | undefined; + keys(): IterableIterator; + values(): IterableIterator; + [Symbol.iterator](): IterableIterator<[K, V]>; +} diff --git a/packages/core/dist/lifecycle.js b/packages/core/dist/lifecycle.js index 1beb218b..1788977c 100644 --- a/packages/core/dist/lifecycle.js +++ b/packages/core/dist/lifecycle.js @@ -1,658 +1,658 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ -import { compareBy, numberComparator } from './arrays.js'; -import { groupBy } from './collections.js'; -import { SetMap } from './map.js'; -import { createSingleCallFunction } from './functional.js'; -import { Iterable } from './iterator.js'; -// #region Disposable Tracking -/** - * Enables logging of potentially leaked disposables. - * - * A disposable is considered leaked if it is not disposed or not registered as the child of - * another disposable. This tracking is very simple an only works for classes that either - * extend Disposable or use a DisposableStore. This means there are a lot of false positives. - */ -const TRACK_DISPOSABLES = false; -let disposableTracker = null; -export class GCBasedDisposableTracker { - _registry = new FinalizationRegistry(heldValue => { - console.warn(`[LEAKED DISPOSABLE] ${heldValue}`); - }); - trackDisposable(disposable) { - const stack = new Error('CREATED via:').stack; - this._registry.register(disposable, stack, disposable); - } - setParent(child, parent) { - if (parent) { - this._registry.unregister(child); - } - else { - this.trackDisposable(child); - } - } - markAsDisposed(disposable) { - this._registry.unregister(disposable); - } - markAsSingleton(disposable) { - this._registry.unregister(disposable); - } -} -export class DisposableTracker { - static idx = 0; - livingDisposables = new Map(); - getDisposableData(d) { - let val = this.livingDisposables.get(d); - if (!val) { - val = { parent: null, source: null, isSingleton: false, value: d, idx: DisposableTracker.idx++ }; - this.livingDisposables.set(d, val); - } - return val; - } - trackDisposable(d) { - const data = this.getDisposableData(d); - if (!data.source) { - data.source = - new Error().stack; - } - } - setParent(child, parent) { - const data = this.getDisposableData(child); - data.parent = parent; - } - markAsDisposed(x) { - this.livingDisposables.delete(x); - } - markAsSingleton(disposable) { - this.getDisposableData(disposable).isSingleton = true; - } - getRootParent(data, cache) { - const cacheValue = cache.get(data); - if (cacheValue) { - return cacheValue; - } - const result = data.parent ? this.getRootParent(this.getDisposableData(data.parent), cache) : data; - cache.set(data, result); - return result; - } - getTrackedDisposables() { - const rootParentCache = new Map(); - const leaking = [...this.livingDisposables.entries()] - .filter(([, v]) => v.source !== null && !this.getRootParent(v, rootParentCache).isSingleton) - .flatMap(([k]) => k); - return leaking; - } - computeLeakingDisposables(maxReported = 10, preComputedLeaks) { - let uncoveredLeakingObjs; - if (preComputedLeaks) { - uncoveredLeakingObjs = preComputedLeaks; - } - else { - const rootParentCache = new Map(); - const leakingObjects = [...this.livingDisposables.values()] - .filter((info) => info.source !== null && !this.getRootParent(info, rootParentCache).isSingleton); - if (leakingObjects.length === 0) { - return; - } - const leakingObjsSet = new Set(leakingObjects.map(o => o.value)); - // Remove all objects that are a child of other leaking objects. Assumes there are no cycles. - uncoveredLeakingObjs = leakingObjects.filter(l => { - return !(l.parent && leakingObjsSet.has(l.parent)); - }); - if (uncoveredLeakingObjs.length === 0) { - throw new Error('There are cyclic diposable chains!'); - } - } - if (!uncoveredLeakingObjs) { - return undefined; - } - function getStackTracePath(leaking) { - function removePrefix(array, linesToRemove) { - while (array.length > 0 && linesToRemove.some(regexp => typeof regexp === 'string' ? regexp === array[0] : array[0].match(regexp))) { - array.shift(); - } - } - const lines = leaking.source.split('\n').map(p => p.trim().replace('at ', '')).filter(l => l !== ''); - removePrefix(lines, ['Error', /^trackDisposable \(.*\)$/, /^DisposableTracker.trackDisposable \(.*\)$/]); - return lines.reverse(); - } - const stackTraceStarts = new SetMap(); - for (const leaking of uncoveredLeakingObjs) { - const stackTracePath = getStackTracePath(leaking); - for (let i = 0; i <= stackTracePath.length; i++) { - stackTraceStarts.add(stackTracePath.slice(0, i).join('\n'), leaking); - } - } - // Put earlier leaks first - uncoveredLeakingObjs.sort(compareBy(l => l.idx, numberComparator)); - let message = ''; - let i = 0; - for (const leaking of uncoveredLeakingObjs.slice(0, maxReported)) { - i++; - const stackTracePath = getStackTracePath(leaking); - const stackTraceFormattedLines = []; - for (let i = 0; i < stackTracePath.length; i++) { - let line = stackTracePath[i]; - const starts = stackTraceStarts.get(stackTracePath.slice(0, i + 1).join('\n')); - line = `(shared with ${starts.size}/${uncoveredLeakingObjs.length} leaks) at ${line}`; - const prevStarts = stackTraceStarts.get(stackTracePath.slice(0, i).join('\n')); - const continuations = groupBy([...prevStarts].map(d => getStackTracePath(d)[i]), v => v); - delete continuations[stackTracePath[i]]; - for (const [cont, set] of Object.entries(continuations)) { - stackTraceFormattedLines.unshift(` - stacktraces of ${set.length} other leaks continue with ${cont}`); - } - stackTraceFormattedLines.unshift(line); - } - message += `\n\n\n==================== Leaking disposable ${i}/${uncoveredLeakingObjs.length}: ${leaking.value.constructor.name} ====================\n${stackTraceFormattedLines.join('\n')}\n============================================================\n\n`; - } - if (uncoveredLeakingObjs.length > maxReported) { - message += `\n\n\n... and ${uncoveredLeakingObjs.length - maxReported} more leaking disposables\n\n`; - } - return { leaks: uncoveredLeakingObjs, details: message }; - } -} -export function setDisposableTracker(tracker) { - disposableTracker = tracker; -} -if (TRACK_DISPOSABLES) { - const __is_disposable_tracked__ = '__is_disposable_tracked__'; - setDisposableTracker(new class { - trackDisposable(x) { - const stack = new Error('Potentially leaked disposable').stack; - setTimeout(() => { - if (!x[__is_disposable_tracked__]) { - console.log(stack); - } - }, 3000); - } - setParent(child, parent) { - if (child && child !== Disposable.None) { - try { - child[__is_disposable_tracked__] = true; - } - catch { - // noop - } - } - } - markAsDisposed(disposable) { - if (disposable && disposable !== Disposable.None) { - try { - disposable[__is_disposable_tracked__] = true; - } - catch { - // noop - } - } - } - markAsSingleton(disposable) { } - }); -} -export function trackDisposable(x) { - disposableTracker?.trackDisposable(x); - return x; -} -export function markAsDisposed(disposable) { - disposableTracker?.markAsDisposed(disposable); -} -function setParentOfDisposable(child, parent) { - disposableTracker?.setParent(child, parent); -} -function setParentOfDisposables(children, parent) { - if (!disposableTracker) { - return; - } - for (const child of children) { - disposableTracker.setParent(child, parent); - } -} -/** - * Indicates that the given object is a singleton which does not need to be disposed. -*/ -export function markAsSingleton(singleton) { - disposableTracker?.markAsSingleton(singleton); - return singleton; -} -/** - * Check if `thing` is {@link IDisposable disposable}. - */ -export function isDisposable(thing) { - return typeof thing === 'object' && thing !== null && typeof thing.dispose === 'function' && thing.dispose.length === 0; -} -export function dispose(arg) { - if (Iterable.is(arg)) { - const errors = []; - for (const d of arg) { - if (d) { - try { - d.dispose(); - } - catch (e) { - errors.push(e); - } - } - } - if (errors.length === 1) { - throw errors[0]; - } - else if (errors.length > 1) { - throw new AggregateError(errors, 'Encountered errors while disposing of store'); - } - return Array.isArray(arg) ? [] : arg; - } - else if (arg) { - arg.dispose(); - return arg; - } -} -export function disposeIfDisposable(disposables) { - for (const d of disposables) { - if (isDisposable(d)) { - d.dispose(); - } - } - return []; -} -/** - * Combine multiple disposable values into a single {@link IDisposable}. - */ -export function combinedDisposable(...disposables) { - const parent = toDisposable(() => dispose(disposables)); - setParentOfDisposables(disposables, parent); - return parent; -} -/** - * Turn a function that implements dispose into an {@link IDisposable}. - * - * @param fn Clean up function, guaranteed to be called only **once**. - */ -export function toDisposable(fn) { - const self = trackDisposable({ - dispose: createSingleCallFunction(() => { - markAsDisposed(self); - fn(); - }) - }); - return self; -} -/** - * Manages a collection of disposable values. - * - * This is the preferred way to manage multiple disposables. A `DisposableStore` is safer to work with than an - * `IDisposable[]` as it considers edge cases, such as registering the same value multiple times or adding an item to a - * store that has already been disposed of. - */ -export class DisposableStore { - static DISABLE_DISPOSED_WARNING = false; - _toDispose = new Set(); - _isDisposed = false; - constructor() { - trackDisposable(this); - } - /** - * Dispose of all registered disposables and mark this object as disposed. - * - * Any future disposables added to this object will be disposed of on `add`. - */ - dispose() { - if (this._isDisposed) { - return; - } - markAsDisposed(this); - this._isDisposed = true; - this.clear(); - } - /** - * @return `true` if this object has been disposed of. - */ - get isDisposed() { - return this._isDisposed; - } - /** - * Dispose of all registered disposables but do not mark this object as disposed. - */ - clear() { - if (this._toDispose.size === 0) { - return; - } - try { - dispose(this._toDispose); - } - finally { - this._toDispose.clear(); - } - } - /** - * Add a new {@link IDisposable disposable} to the collection. - */ - add(o) { - if (!o) { - return o; - } - if (o === this) { - throw new Error('Cannot register a disposable on itself!'); - } - setParentOfDisposable(o, this); - if (this._isDisposed) { - if (!DisposableStore.DISABLE_DISPOSED_WARNING) { - console.warn(new Error('Trying to add a disposable to a DisposableStore that has already been disposed of. The added object will be leaked!').stack); - } - } - else { - this._toDispose.add(o); - } - return o; - } - /** - * Deletes a disposable from store and disposes of it. This will not throw or warn and proceed to dispose the - * disposable even when the disposable is not part in the store. - */ - delete(o) { - if (!o) { - return; - } - if (o === this) { - throw new Error('Cannot dispose a disposable on itself!'); - } - this._toDispose.delete(o); - o.dispose(); - } - /** - * Deletes the value from the store, but does not dispose it. - */ - deleteAndLeak(o) { - if (!o) { - return; - } - if (this._toDispose.has(o)) { - this._toDispose.delete(o); - setParentOfDisposable(o, null); - } - } -} -/** - * Abstract base class for a {@link IDisposable disposable} object. - * - * Subclasses can {@linkcode _register} disposables that will be automatically cleaned up when this object is disposed of. - */ -export class Disposable { - /** - * A disposable that does nothing when it is disposed of. - * - * TODO: This should not be a static property. - */ - static None = Object.freeze({ dispose() { } }); - _store = new DisposableStore(); - constructor() { - trackDisposable(this); - setParentOfDisposable(this._store, this); - } - dispose() { - markAsDisposed(this); - this._store.dispose(); - } - /** - * Adds `o` to the collection of disposables managed by this object. - */ - _register(o) { - if (o === this) { - throw new Error('Cannot register a disposable on itself!'); - } - return this._store.add(o); - } -} -/** - * Manages the lifecycle of a disposable value that may be changed. - * - * This ensures that when the disposable value is changed, the previously held disposable is disposed of. You can - * also register a `MutableDisposable` on a `Disposable` to ensure it is automatically cleaned up. - */ -export class MutableDisposable { - _value; - _isDisposed = false; - constructor() { - trackDisposable(this); - } - get value() { - return this._isDisposed ? undefined : this._value; - } - set value(value) { - if (this._isDisposed || value === this._value) { - return; - } - this._value?.dispose(); - if (value) { - setParentOfDisposable(value, this); - } - this._value = value; - } - /** - * Resets the stored value and disposed of the previously stored value. - */ - clear() { - this.value = undefined; - } - dispose() { - this._isDisposed = true; - markAsDisposed(this); - this._value?.dispose(); - this._value = undefined; - } - /** - * Clears the value, but does not dispose it. - * The old value is returned. - */ - clearAndLeak() { - const oldValue = this._value; - this._value = undefined; - if (oldValue) { - setParentOfDisposable(oldValue, null); - } - return oldValue; - } -} -/** - * Manages the lifecycle of a disposable value that may be changed like {@link MutableDisposable}, but the value must - * exist and cannot be undefined. - */ -export class MandatoryMutableDisposable { - _disposable = new MutableDisposable(); - _isDisposed = false; - constructor(initialValue) { - this._disposable.value = initialValue; - } - get value() { - return this._disposable.value; - } - set value(value) { - if (this._isDisposed || value === this._disposable.value) { - return; - } - this._disposable.value = value; - } - dispose() { - this._isDisposed = true; - this._disposable.dispose(); - } -} -export class RefCountedDisposable { - _disposable; - _counter = 1; - constructor(_disposable) { - this._disposable = _disposable; - } - acquire() { - this._counter++; - return this; - } - release() { - if (--this._counter === 0) { - this._disposable.dispose(); - } - return this; - } -} -/** - * A safe disposable can be `unset` so that a leaked reference (listener) - * can be cut-off. - */ -export class SafeDisposable { - dispose = () => { }; - unset = () => { }; - isset = () => false; - constructor() { - trackDisposable(this); - } - set(fn) { - let callback = fn; - this.unset = () => callback = undefined; - this.isset = () => callback !== undefined; - this.dispose = () => { - if (callback) { - callback(); - callback = undefined; - markAsDisposed(this); - } - }; - return this; - } -} -export class ReferenceCollection { - references = new Map(); - acquire(key, ...args) { - let reference = this.references.get(key); - if (!reference) { - reference = { counter: 0, object: this.createReferencedObject(key, ...args) }; - this.references.set(key, reference); - } - const { object } = reference; - const dispose = createSingleCallFunction(() => { - if (--reference.counter === 0) { - this.destroyReferencedObject(key, reference.object); - this.references.delete(key); - } - }); - reference.counter++; - return { object, dispose }; - } -} -/** - * Unwraps a reference collection of promised values. Makes sure - * references are disposed whenever promises get rejected. - */ -export class AsyncReferenceCollection { - referenceCollection; - constructor(referenceCollection) { - this.referenceCollection = referenceCollection; - } - async acquire(key, ...args) { - const ref = this.referenceCollection.acquire(key, ...args); - try { - const object = await ref.object; - return { - object, - dispose: () => ref.dispose() - }; - } - catch (error) { - ref.dispose(); - throw error; - } - } -} -export class ImmortalReference { - object; - constructor(object) { - this.object = object; - } - dispose() { } -} -export function disposeOnReturn(fn) { - const store = new DisposableStore(); - try { - fn(store); - } - finally { - store.dispose(); - } -} -/** - * A map the manages the lifecycle of the values that it stores. - */ -export class DisposableMap { - _store = new Map(); - _isDisposed = false; - constructor() { - trackDisposable(this); - } - /** - * Disposes of all stored values and mark this object as disposed. - * - * Trying to use this object after it has been disposed of is an error. - */ - dispose() { - markAsDisposed(this); - this._isDisposed = true; - this.clearAndDisposeAll(); - } - /** - * Disposes of all stored values and clear the map, but DO NOT mark this object as disposed. - */ - clearAndDisposeAll() { - if (!this._store.size) { - return; - } - try { - dispose(this._store.values()); - } - finally { - this._store.clear(); - } - } - has(key) { - return this._store.has(key); - } - get size() { - return this._store.size; - } - get(key) { - return this._store.get(key); - } - set(key, value, skipDisposeOnOverwrite = false) { - if (this._isDisposed) { - console.warn(new Error('Trying to add a disposable to a DisposableMap that has already been disposed of. The added object will be leaked!').stack); - } - if (!skipDisposeOnOverwrite) { - this._store.get(key)?.dispose(); - } - this._store.set(key, value); - } - /** - * Delete the value stored for `key` from this map and also dispose of it. - */ - deleteAndDispose(key) { - this._store.get(key)?.dispose(); - this._store.delete(key); - } - /** - * Delete the value stored for `key` from this map but return it. The caller is - * responsible for disposing of the value. - */ - deleteAndLeak(key) { - const value = this._store.get(key); - this._store.delete(key); - return value; - } - keys() { - return this._store.keys(); - } - values() { - return this._store.values(); - } - [Symbol.iterator]() { - return this._store[Symbol.iterator](); - } -} +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +import { compareBy, numberComparator } from './arrays.js'; +import { groupBy } from './collections.js'; +import { SetMap } from './map.js'; +import { createSingleCallFunction } from './functional.js'; +import { Iterable } from './iterator.js'; +// #region Disposable Tracking +/** + * Enables logging of potentially leaked disposables. + * + * A disposable is considered leaked if it is not disposed or not registered as the child of + * another disposable. This tracking is very simple an only works for classes that either + * extend Disposable or use a DisposableStore. This means there are a lot of false positives. + */ +const TRACK_DISPOSABLES = false; +let disposableTracker = null; +export class GCBasedDisposableTracker { + _registry = new FinalizationRegistry(heldValue => { + console.warn(`[LEAKED DISPOSABLE] ${heldValue}`); + }); + trackDisposable(disposable) { + const stack = new Error('CREATED via:').stack; + this._registry.register(disposable, stack, disposable); + } + setParent(child, parent) { + if (parent) { + this._registry.unregister(child); + } + else { + this.trackDisposable(child); + } + } + markAsDisposed(disposable) { + this._registry.unregister(disposable); + } + markAsSingleton(disposable) { + this._registry.unregister(disposable); + } +} +export class DisposableTracker { + static idx = 0; + livingDisposables = new Map(); + getDisposableData(d) { + let val = this.livingDisposables.get(d); + if (!val) { + val = { parent: null, source: null, isSingleton: false, value: d, idx: DisposableTracker.idx++ }; + this.livingDisposables.set(d, val); + } + return val; + } + trackDisposable(d) { + const data = this.getDisposableData(d); + if (!data.source) { + data.source = + new Error().stack; + } + } + setParent(child, parent) { + const data = this.getDisposableData(child); + data.parent = parent; + } + markAsDisposed(x) { + this.livingDisposables.delete(x); + } + markAsSingleton(disposable) { + this.getDisposableData(disposable).isSingleton = true; + } + getRootParent(data, cache) { + const cacheValue = cache.get(data); + if (cacheValue) { + return cacheValue; + } + const result = data.parent ? this.getRootParent(this.getDisposableData(data.parent), cache) : data; + cache.set(data, result); + return result; + } + getTrackedDisposables() { + const rootParentCache = new Map(); + const leaking = [...this.livingDisposables.entries()] + .filter(([, v]) => v.source !== null && !this.getRootParent(v, rootParentCache).isSingleton) + .flatMap(([k]) => k); + return leaking; + } + computeLeakingDisposables(maxReported = 10, preComputedLeaks) { + let uncoveredLeakingObjs; + if (preComputedLeaks) { + uncoveredLeakingObjs = preComputedLeaks; + } + else { + const rootParentCache = new Map(); + const leakingObjects = [...this.livingDisposables.values()] + .filter((info) => info.source !== null && !this.getRootParent(info, rootParentCache).isSingleton); + if (leakingObjects.length === 0) { + return; + } + const leakingObjsSet = new Set(leakingObjects.map(o => o.value)); + // Remove all objects that are a child of other leaking objects. Assumes there are no cycles. + uncoveredLeakingObjs = leakingObjects.filter(l => { + return !(l.parent && leakingObjsSet.has(l.parent)); + }); + if (uncoveredLeakingObjs.length === 0) { + throw new Error('There are cyclic diposable chains!'); + } + } + if (!uncoveredLeakingObjs) { + return undefined; + } + function getStackTracePath(leaking) { + function removePrefix(array, linesToRemove) { + while (array.length > 0 && linesToRemove.some(regexp => typeof regexp === 'string' ? regexp === array[0] : array[0].match(regexp))) { + array.shift(); + } + } + const lines = leaking.source.split('\n').map(p => p.trim().replace('at ', '')).filter(l => l !== ''); + removePrefix(lines, ['Error', /^trackDisposable \(.*\)$/, /^DisposableTracker.trackDisposable \(.*\)$/]); + return lines.reverse(); + } + const stackTraceStarts = new SetMap(); + for (const leaking of uncoveredLeakingObjs) { + const stackTracePath = getStackTracePath(leaking); + for (let i = 0; i <= stackTracePath.length; i++) { + stackTraceStarts.add(stackTracePath.slice(0, i).join('\n'), leaking); + } + } + // Put earlier leaks first + uncoveredLeakingObjs.sort(compareBy(l => l.idx, numberComparator)); + let message = ''; + let i = 0; + for (const leaking of uncoveredLeakingObjs.slice(0, maxReported)) { + i++; + const stackTracePath = getStackTracePath(leaking); + const stackTraceFormattedLines = []; + for (let i = 0; i < stackTracePath.length; i++) { + let line = stackTracePath[i]; + const starts = stackTraceStarts.get(stackTracePath.slice(0, i + 1).join('\n')); + line = `(shared with ${starts.size}/${uncoveredLeakingObjs.length} leaks) at ${line}`; + const prevStarts = stackTraceStarts.get(stackTracePath.slice(0, i).join('\n')); + const continuations = groupBy([...prevStarts].map(d => getStackTracePath(d)[i]), v => v); + delete continuations[stackTracePath[i]]; + for (const [cont, set] of Object.entries(continuations)) { + stackTraceFormattedLines.unshift(` - stacktraces of ${set.length} other leaks continue with ${cont}`); + } + stackTraceFormattedLines.unshift(line); + } + message += `\n\n\n==================== Leaking disposable ${i}/${uncoveredLeakingObjs.length}: ${leaking.value.constructor.name} ====================\n${stackTraceFormattedLines.join('\n')}\n============================================================\n\n`; + } + if (uncoveredLeakingObjs.length > maxReported) { + message += `\n\n\n... and ${uncoveredLeakingObjs.length - maxReported} more leaking disposables\n\n`; + } + return { leaks: uncoveredLeakingObjs, details: message }; + } +} +export function setDisposableTracker(tracker) { + disposableTracker = tracker; +} +if (TRACK_DISPOSABLES) { + const __is_disposable_tracked__ = '__is_disposable_tracked__'; + setDisposableTracker(new class { + trackDisposable(x) { + const stack = new Error('Potentially leaked disposable').stack; + setTimeout(() => { + if (!x[__is_disposable_tracked__]) { + console.log(stack); + } + }, 3000); + } + setParent(child, parent) { + if (child && child !== Disposable.None) { + try { + child[__is_disposable_tracked__] = true; + } + catch { + // noop + } + } + } + markAsDisposed(disposable) { + if (disposable && disposable !== Disposable.None) { + try { + disposable[__is_disposable_tracked__] = true; + } + catch { + // noop + } + } + } + markAsSingleton(disposable) { } + }); +} +export function trackDisposable(x) { + disposableTracker?.trackDisposable(x); + return x; +} +export function markAsDisposed(disposable) { + disposableTracker?.markAsDisposed(disposable); +} +function setParentOfDisposable(child, parent) { + disposableTracker?.setParent(child, parent); +} +function setParentOfDisposables(children, parent) { + if (!disposableTracker) { + return; + } + for (const child of children) { + disposableTracker.setParent(child, parent); + } +} +/** + * Indicates that the given object is a singleton which does not need to be disposed. +*/ +export function markAsSingleton(singleton) { + disposableTracker?.markAsSingleton(singleton); + return singleton; +} +/** + * Check if `thing` is {@link IDisposable disposable}. + */ +export function isDisposable(thing) { + return typeof thing === 'object' && thing !== null && typeof thing.dispose === 'function' && thing.dispose.length === 0; +} +export function dispose(arg) { + if (Iterable.is(arg)) { + const errors = []; + for (const d of arg) { + if (d) { + try { + d.dispose(); + } + catch (e) { + errors.push(e); + } + } + } + if (errors.length === 1) { + throw errors[0]; + } + else if (errors.length > 1) { + throw new AggregateError(errors, 'Encountered errors while disposing of store'); + } + return Array.isArray(arg) ? [] : arg; + } + else if (arg) { + arg.dispose(); + return arg; + } +} +export function disposeIfDisposable(disposables) { + for (const d of disposables) { + if (isDisposable(d)) { + d.dispose(); + } + } + return []; +} +/** + * Combine multiple disposable values into a single {@link IDisposable}. + */ +export function combinedDisposable(...disposables) { + const parent = toDisposable(() => dispose(disposables)); + setParentOfDisposables(disposables, parent); + return parent; +} +/** + * Turn a function that implements dispose into an {@link IDisposable}. + * + * @param fn Clean up function, guaranteed to be called only **once**. + */ +export function toDisposable(fn) { + const self = trackDisposable({ + dispose: createSingleCallFunction(() => { + markAsDisposed(self); + fn(); + }) + }); + return self; +} +/** + * Manages a collection of disposable values. + * + * This is the preferred way to manage multiple disposables. A `DisposableStore` is safer to work with than an + * `IDisposable[]` as it considers edge cases, such as registering the same value multiple times or adding an item to a + * store that has already been disposed of. + */ +export class DisposableStore { + static DISABLE_DISPOSED_WARNING = false; + _toDispose = new Set(); + _isDisposed = false; + constructor() { + trackDisposable(this); + } + /** + * Dispose of all registered disposables and mark this object as disposed. + * + * Any future disposables added to this object will be disposed of on `add`. + */ + dispose() { + if (this._isDisposed) { + return; + } + markAsDisposed(this); + this._isDisposed = true; + this.clear(); + } + /** + * @return `true` if this object has been disposed of. + */ + get isDisposed() { + return this._isDisposed; + } + /** + * Dispose of all registered disposables but do not mark this object as disposed. + */ + clear() { + if (this._toDispose.size === 0) { + return; + } + try { + dispose(this._toDispose); + } + finally { + this._toDispose.clear(); + } + } + /** + * Add a new {@link IDisposable disposable} to the collection. + */ + add(o) { + if (!o) { + return o; + } + if (o === this) { + throw new Error('Cannot register a disposable on itself!'); + } + setParentOfDisposable(o, this); + if (this._isDisposed) { + if (!DisposableStore.DISABLE_DISPOSED_WARNING) { + console.warn(new Error('Trying to add a disposable to a DisposableStore that has already been disposed of. The added object will be leaked!').stack); + } + } + else { + this._toDispose.add(o); + } + return o; + } + /** + * Deletes a disposable from store and disposes of it. This will not throw or warn and proceed to dispose the + * disposable even when the disposable is not part in the store. + */ + delete(o) { + if (!o) { + return; + } + if (o === this) { + throw new Error('Cannot dispose a disposable on itself!'); + } + this._toDispose.delete(o); + o.dispose(); + } + /** + * Deletes the value from the store, but does not dispose it. + */ + deleteAndLeak(o) { + if (!o) { + return; + } + if (this._toDispose.has(o)) { + this._toDispose.delete(o); + setParentOfDisposable(o, null); + } + } +} +/** + * Abstract base class for a {@link IDisposable disposable} object. + * + * Subclasses can {@linkcode _register} disposables that will be automatically cleaned up when this object is disposed of. + */ +export class Disposable { + /** + * A disposable that does nothing when it is disposed of. + * + * TODO: This should not be a static property. + */ + static None = Object.freeze({ dispose() { } }); + _store = new DisposableStore(); + constructor() { + trackDisposable(this); + setParentOfDisposable(this._store, this); + } + dispose() { + markAsDisposed(this); + this._store.dispose(); + } + /** + * Adds `o` to the collection of disposables managed by this object. + */ + _register(o) { + if (o === this) { + throw new Error('Cannot register a disposable on itself!'); + } + return this._store.add(o); + } +} +/** + * Manages the lifecycle of a disposable value that may be changed. + * + * This ensures that when the disposable value is changed, the previously held disposable is disposed of. You can + * also register a `MutableDisposable` on a `Disposable` to ensure it is automatically cleaned up. + */ +export class MutableDisposable { + _value; + _isDisposed = false; + constructor() { + trackDisposable(this); + } + get value() { + return this._isDisposed ? undefined : this._value; + } + set value(value) { + if (this._isDisposed || value === this._value) { + return; + } + this._value?.dispose(); + if (value) { + setParentOfDisposable(value, this); + } + this._value = value; + } + /** + * Resets the stored value and disposed of the previously stored value. + */ + clear() { + this.value = undefined; + } + dispose() { + this._isDisposed = true; + markAsDisposed(this); + this._value?.dispose(); + this._value = undefined; + } + /** + * Clears the value, but does not dispose it. + * The old value is returned. + */ + clearAndLeak() { + const oldValue = this._value; + this._value = undefined; + if (oldValue) { + setParentOfDisposable(oldValue, null); + } + return oldValue; + } +} +/** + * Manages the lifecycle of a disposable value that may be changed like {@link MutableDisposable}, but the value must + * exist and cannot be undefined. + */ +export class MandatoryMutableDisposable { + _disposable = new MutableDisposable(); + _isDisposed = false; + constructor(initialValue) { + this._disposable.value = initialValue; + } + get value() { + return this._disposable.value; + } + set value(value) { + if (this._isDisposed || value === this._disposable.value) { + return; + } + this._disposable.value = value; + } + dispose() { + this._isDisposed = true; + this._disposable.dispose(); + } +} +export class RefCountedDisposable { + _disposable; + _counter = 1; + constructor(_disposable) { + this._disposable = _disposable; + } + acquire() { + this._counter++; + return this; + } + release() { + if (--this._counter === 0) { + this._disposable.dispose(); + } + return this; + } +} +/** + * A safe disposable can be `unset` so that a leaked reference (listener) + * can be cut-off. + */ +export class SafeDisposable { + dispose = () => { }; + unset = () => { }; + isset = () => false; + constructor() { + trackDisposable(this); + } + set(fn) { + let callback = fn; + this.unset = () => callback = undefined; + this.isset = () => callback !== undefined; + this.dispose = () => { + if (callback) { + callback(); + callback = undefined; + markAsDisposed(this); + } + }; + return this; + } +} +export class ReferenceCollection { + references = new Map(); + acquire(key, ...args) { + let reference = this.references.get(key); + if (!reference) { + reference = { counter: 0, object: this.createReferencedObject(key, ...args) }; + this.references.set(key, reference); + } + const { object } = reference; + const dispose = createSingleCallFunction(() => { + if (--reference.counter === 0) { + this.destroyReferencedObject(key, reference.object); + this.references.delete(key); + } + }); + reference.counter++; + return { object, dispose }; + } +} +/** + * Unwraps a reference collection of promised values. Makes sure + * references are disposed whenever promises get rejected. + */ +export class AsyncReferenceCollection { + referenceCollection; + constructor(referenceCollection) { + this.referenceCollection = referenceCollection; + } + async acquire(key, ...args) { + const ref = this.referenceCollection.acquire(key, ...args); + try { + const object = await ref.object; + return { + object, + dispose: () => ref.dispose() + }; + } + catch (error) { + ref.dispose(); + throw error; + } + } +} +export class ImmortalReference { + object; + constructor(object) { + this.object = object; + } + dispose() { } +} +export function disposeOnReturn(fn) { + const store = new DisposableStore(); + try { + fn(store); + } + finally { + store.dispose(); + } +} +/** + * A map the manages the lifecycle of the values that it stores. + */ +export class DisposableMap { + _store = new Map(); + _isDisposed = false; + constructor() { + trackDisposable(this); + } + /** + * Disposes of all stored values and mark this object as disposed. + * + * Trying to use this object after it has been disposed of is an error. + */ + dispose() { + markAsDisposed(this); + this._isDisposed = true; + this.clearAndDisposeAll(); + } + /** + * Disposes of all stored values and clear the map, but DO NOT mark this object as disposed. + */ + clearAndDisposeAll() { + if (!this._store.size) { + return; + } + try { + dispose(this._store.values()); + } + finally { + this._store.clear(); + } + } + has(key) { + return this._store.has(key); + } + get size() { + return this._store.size; + } + get(key) { + return this._store.get(key); + } + set(key, value, skipDisposeOnOverwrite = false) { + if (this._isDisposed) { + console.warn(new Error('Trying to add a disposable to a DisposableMap that has already been disposed of. The added object will be leaked!').stack); + } + if (!skipDisposeOnOverwrite) { + this._store.get(key)?.dispose(); + } + this._store.set(key, value); + } + /** + * Delete the value stored for `key` from this map and also dispose of it. + */ + deleteAndDispose(key) { + this._store.get(key)?.dispose(); + this._store.delete(key); + } + /** + * Delete the value stored for `key` from this map but return it. The caller is + * responsible for disposing of the value. + */ + deleteAndLeak(key) { + const value = this._store.get(key); + this._store.delete(key); + return value; + } + keys() { + return this._store.keys(); + } + values() { + return this._store.values(); + } + [Symbol.iterator]() { + return this._store[Symbol.iterator](); + } +} //# sourceMappingURL=lifecycle.js.map \ No newline at end of file diff --git a/packages/core/dist/lifecycle.js.map b/packages/core/dist/lifecycle.js.map index 22f04dd1..b2e29099 100644 --- a/packages/core/dist/lifecycle.js.map +++ b/packages/core/dist/lifecycle.js.map @@ -1 +1 @@ -{"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../src/lifecycle.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../src/lifecycle.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/dist/linkedList.d.ts b/packages/core/dist/linkedList.d.ts index b703293d..90298d3b 100644 --- a/packages/core/dist/linkedList.d.ts +++ b/packages/core/dist/linkedList.d.ts @@ -1,15 +1,15 @@ -export declare class LinkedList { - private _first; - private _last; - private _size; - get size(): number; - isEmpty(): boolean; - clear(): void; - unshift(element: E): () => void; - push(element: E): () => void; - private _insert; - shift(): E | undefined; - pop(): E | undefined; - private _remove; - [Symbol.iterator](): Iterator; -} +export declare class LinkedList { + private _first; + private _last; + private _size; + get size(): number; + isEmpty(): boolean; + clear(): void; + unshift(element: E): () => void; + push(element: E): () => void; + private _insert; + shift(): E | undefined; + pop(): E | undefined; + private _remove; + [Symbol.iterator](): Iterator; +} diff --git a/packages/core/dist/linkedList.js b/packages/core/dist/linkedList.js index fa623336..843e714b 100644 --- a/packages/core/dist/linkedList.js +++ b/packages/core/dist/linkedList.js @@ -1,126 +1,126 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ -class Node { - static Undefined = new Node(undefined); - element; - next; - prev; - constructor(element) { - this.element = element; - this.next = Node.Undefined; - this.prev = Node.Undefined; - } -} -export class LinkedList { - _first = Node.Undefined; - _last = Node.Undefined; - _size = 0; - get size() { - return this._size; - } - isEmpty() { - return this._first === Node.Undefined; - } - clear() { - let node = this._first; - while (node !== Node.Undefined) { - const next = node.next; - node.prev = Node.Undefined; - node.next = Node.Undefined; - node = next; - } - this._first = Node.Undefined; - this._last = Node.Undefined; - this._size = 0; - } - unshift(element) { - return this._insert(element, false); - } - push(element) { - return this._insert(element, true); - } - _insert(element, atTheEnd) { - const newNode = new Node(element); - if (this._first === Node.Undefined) { - this._first = newNode; - this._last = newNode; - } - else if (atTheEnd) { - // push - const oldLast = this._last; - this._last = newNode; - newNode.prev = oldLast; - oldLast.next = newNode; - } - else { - // unshift - const oldFirst = this._first; - this._first = newNode; - newNode.next = oldFirst; - oldFirst.prev = newNode; - } - this._size += 1; - let didRemove = false; - return () => { - if (!didRemove) { - didRemove = true; - this._remove(newNode); - } - }; - } - shift() { - if (this._first === Node.Undefined) { - return undefined; - } - else { - const res = this._first.element; - this._remove(this._first); - return res; - } - } - pop() { - if (this._last === Node.Undefined) { - return undefined; - } - else { - const res = this._last.element; - this._remove(this._last); - return res; - } - } - _remove(node) { - if (node.prev !== Node.Undefined && node.next !== Node.Undefined) { - // middle - const anchor = node.prev; - anchor.next = node.next; - node.next.prev = anchor; - } - else if (node.prev === Node.Undefined && node.next === Node.Undefined) { - // only node - this._first = Node.Undefined; - this._last = Node.Undefined; - } - else if (node.next === Node.Undefined) { - // last - this._last = this._last.prev; - this._last.next = Node.Undefined; - } - else if (node.prev === Node.Undefined) { - // first - this._first = this._first.next; - this._first.prev = Node.Undefined; - } - // done - this._size -= 1; - } - *[Symbol.iterator]() { - let node = this._first; - while (node !== Node.Undefined) { - yield node.element; - node = node.next; - } - } -} +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +class Node { + static Undefined = new Node(undefined); + element; + next; + prev; + constructor(element) { + this.element = element; + this.next = Node.Undefined; + this.prev = Node.Undefined; + } +} +export class LinkedList { + _first = Node.Undefined; + _last = Node.Undefined; + _size = 0; + get size() { + return this._size; + } + isEmpty() { + return this._first === Node.Undefined; + } + clear() { + let node = this._first; + while (node !== Node.Undefined) { + const next = node.next; + node.prev = Node.Undefined; + node.next = Node.Undefined; + node = next; + } + this._first = Node.Undefined; + this._last = Node.Undefined; + this._size = 0; + } + unshift(element) { + return this._insert(element, false); + } + push(element) { + return this._insert(element, true); + } + _insert(element, atTheEnd) { + const newNode = new Node(element); + if (this._first === Node.Undefined) { + this._first = newNode; + this._last = newNode; + } + else if (atTheEnd) { + // push + const oldLast = this._last; + this._last = newNode; + newNode.prev = oldLast; + oldLast.next = newNode; + } + else { + // unshift + const oldFirst = this._first; + this._first = newNode; + newNode.next = oldFirst; + oldFirst.prev = newNode; + } + this._size += 1; + let didRemove = false; + return () => { + if (!didRemove) { + didRemove = true; + this._remove(newNode); + } + }; + } + shift() { + if (this._first === Node.Undefined) { + return undefined; + } + else { + const res = this._first.element; + this._remove(this._first); + return res; + } + } + pop() { + if (this._last === Node.Undefined) { + return undefined; + } + else { + const res = this._last.element; + this._remove(this._last); + return res; + } + } + _remove(node) { + if (node.prev !== Node.Undefined && node.next !== Node.Undefined) { + // middle + const anchor = node.prev; + anchor.next = node.next; + node.next.prev = anchor; + } + else if (node.prev === Node.Undefined && node.next === Node.Undefined) { + // only node + this._first = Node.Undefined; + this._last = Node.Undefined; + } + else if (node.next === Node.Undefined) { + // last + this._last = this._last.prev; + this._last.next = Node.Undefined; + } + else if (node.prev === Node.Undefined) { + // first + this._first = this._first.next; + this._first.prev = Node.Undefined; + } + // done + this._size -= 1; + } + *[Symbol.iterator]() { + let node = this._first; + while (node !== Node.Undefined) { + yield node.element; + node = node.next; + } + } +} //# sourceMappingURL=linkedList.js.map \ No newline at end of file diff --git a/packages/core/dist/linkedList.js.map b/packages/core/dist/linkedList.js.map index e659c1fc..2c5002c2 100644 --- a/packages/core/dist/linkedList.js.map +++ b/packages/core/dist/linkedList.js.map @@ -1 +1 @@ -{"version":3,"file":"linkedList.js","sourceRoot":"","sources":["../src/linkedList.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"linkedList.js","sourceRoot":"","sources":["../src/linkedList.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/dist/map.d.ts b/packages/core/dist/map.d.ts index 4a58be66..ead39204 100644 --- a/packages/core/dist/map.d.ts +++ b/packages/core/dist/map.d.ts @@ -1,174 +1,174 @@ -import { URI } from './uri.js'; -export declare function getOrSet(map: Map, key: K, value: V): V; -export declare function mapToString(map: Map): string; -export declare function setToString(set: Set): string; -interface ResourceMapKeyFn { - (resource: URI): string; -} -export declare class ResourceMap implements Map { - private static readonly defaultToKey; - readonly [Symbol.toStringTag] = "ResourceMap"; - private readonly map; - private readonly toKey; - /** - * - * @param toKey Custom uri identity function, e.g use an existing `IExtUri#getComparison`-util - */ - constructor(toKey?: ResourceMapKeyFn); - /** - * - * @param other Another resource which this maps is created from - * @param toKey Custom uri identity function, e.g use an existing `IExtUri#getComparison`-util - */ - constructor(other?: ResourceMap, toKey?: ResourceMapKeyFn); - /** - * - * @param other Another resource which this maps is created from - * @param toKey Custom uri identity function, e.g use an existing `IExtUri#getComparison`-util - */ - constructor(entries?: readonly (readonly [URI, T])[], toKey?: ResourceMapKeyFn); - set(resource: URI, value: T): this; - get(resource: URI): T | undefined; - has(resource: URI): boolean; - get size(): number; - clear(): void; - delete(resource: URI): boolean; - forEach(clb: (value: T, key: URI, map: Map) => void, thisArg?: any): void; - values(): IterableIterator; - keys(): IterableIterator; - entries(): IterableIterator<[URI, T]>; - [Symbol.iterator](): IterableIterator<[URI, T]>; -} -export declare class ResourceSet implements Set { - readonly [Symbol.toStringTag]: string; - private readonly _map; - constructor(toKey?: ResourceMapKeyFn); - constructor(entries: readonly URI[], toKey?: ResourceMapKeyFn); - get size(): number; - add(value: URI): this; - clear(): void; - delete(value: URI): boolean; - forEach(callbackfn: (value: URI, value2: URI, set: Set) => void, thisArg?: any): void; - has(value: URI): boolean; - entries(): IterableIterator<[URI, URI]>; - keys(): IterableIterator; - values(): IterableIterator; - [Symbol.iterator](): IterableIterator; -} -export declare const enum Touch { - None = 0, - AsOld = 1, - AsNew = 2 -} -export declare class LinkedMap implements Map { - readonly [Symbol.toStringTag] = "LinkedMap"; - private _map; - private _head; - private _tail; - private _size; - private _state; - constructor(); - clear(): void; - isEmpty(): boolean; - get size(): number; - get first(): V | undefined; - get last(): V | undefined; - has(key: K): boolean; - get(key: K, touch?: Touch): V | undefined; - set(key: K, value: V, touch?: Touch): this; - delete(key: K): boolean; - remove(key: K): V | undefined; - shift(): V | undefined; - forEach(callbackfn: (value: V, key: K, map: LinkedMap) => void, thisArg?: any): void; - keys(): IterableIterator; - values(): IterableIterator; - entries(): IterableIterator<[K, V]>; - [Symbol.iterator](): IterableIterator<[K, V]>; - protected trimOld(newSize: number): void; - protected trimNew(newSize: number): void; - private addItemFirst; - private addItemLast; - private removeItem; - private touch; - toJSON(): [K, V][]; - fromJSON(data: [K, V][]): void; -} -declare abstract class Cache extends LinkedMap { - protected _limit: number; - protected _ratio: number; - constructor(limit: number, ratio?: number); - get limit(): number; - set limit(limit: number); - get ratio(): number; - set ratio(ratio: number); - get(key: K, touch?: Touch): V | undefined; - peek(key: K): V | undefined; - set(key: K, value: V): this; - protected checkTrim(): void; - protected abstract trim(newSize: number): void; -} -export declare class LRUCache extends Cache { - constructor(limit: number, ratio?: number); - protected trim(newSize: number): void; - set(key: K, value: V): this; -} -export declare class MRUCache extends Cache { - constructor(limit: number, ratio?: number); - protected trim(newSize: number): void; - set(key: K, value: V): this; -} -export declare class CounterSet { - private map; - add(value: T): CounterSet; - delete(value: T): boolean; - has(value: T): boolean; -} -/** - * A map that allows access both by keys and values. - * **NOTE**: values need to be unique. - */ -export declare class BidirectionalMap { - private readonly _m1; - private readonly _m2; - constructor(entries?: readonly (readonly [K, V])[]); - clear(): void; - set(key: K, value: V): void; - get(key: K): V | undefined; - getKey(value: V): K | undefined; - delete(key: K): boolean; - forEach(callbackfn: (value: V, key: K, map: BidirectionalMap) => void, thisArg?: any): void; - keys(): IterableIterator; - values(): IterableIterator; -} -export declare class SetMap { - private map; - add(key: K, value: V): void; - delete(key: K, value: V): void; - forEach(key: K, fn: (value: V) => void): void; - get(key: K): ReadonlySet; -} -export declare function mapsStrictEqualIgnoreOrder(a: Map, b: Map): boolean; -/** - * A map that is addressable with an arbitrary number of keys. This is useful in high performance - * scenarios where creating a composite key whenever the data is accessed is too expensive. For - * example for a very hot function, constructing a string like `first-second-third` for every call - * will cause a significant hit to performance. - */ -export declare class NKeyMap { - private _data; - /** - * Sets a value on the map. Note that unlike a standard `Map`, the first argument is the value. - * This is because the spread operator is used for the keys and must be last.. - * @param value The value to set. - * @param keys The keys for the value. - */ - set(value: TValue, ...keys: [...TKeys]): void; - get(...keys: [...TKeys]): TValue | undefined; - clear(): void; - values(): IterableIterator; - /** - * Get a textual representation of the map for debugging purposes. - */ - toString(): string; -} -export {}; +import { URI } from './uri.js'; +export declare function getOrSet(map: Map, key: K, value: V): V; +export declare function mapToString(map: Map): string; +export declare function setToString(set: Set): string; +interface ResourceMapKeyFn { + (resource: URI): string; +} +export declare class ResourceMap implements Map { + private static readonly defaultToKey; + readonly [Symbol.toStringTag] = "ResourceMap"; + private readonly map; + private readonly toKey; + /** + * + * @param toKey Custom uri identity function, e.g use an existing `IExtUri#getComparison`-util + */ + constructor(toKey?: ResourceMapKeyFn); + /** + * + * @param other Another resource which this maps is created from + * @param toKey Custom uri identity function, e.g use an existing `IExtUri#getComparison`-util + */ + constructor(other?: ResourceMap, toKey?: ResourceMapKeyFn); + /** + * + * @param other Another resource which this maps is created from + * @param toKey Custom uri identity function, e.g use an existing `IExtUri#getComparison`-util + */ + constructor(entries?: readonly (readonly [URI, T])[], toKey?: ResourceMapKeyFn); + set(resource: URI, value: T): this; + get(resource: URI): T | undefined; + has(resource: URI): boolean; + get size(): number; + clear(): void; + delete(resource: URI): boolean; + forEach(clb: (value: T, key: URI, map: Map) => void, thisArg?: any): void; + values(): IterableIterator; + keys(): IterableIterator; + entries(): IterableIterator<[URI, T]>; + [Symbol.iterator](): IterableIterator<[URI, T]>; +} +export declare class ResourceSet implements Set { + readonly [Symbol.toStringTag]: string; + private readonly _map; + constructor(toKey?: ResourceMapKeyFn); + constructor(entries: readonly URI[], toKey?: ResourceMapKeyFn); + get size(): number; + add(value: URI): this; + clear(): void; + delete(value: URI): boolean; + forEach(callbackfn: (value: URI, value2: URI, set: Set) => void, thisArg?: any): void; + has(value: URI): boolean; + entries(): IterableIterator<[URI, URI]>; + keys(): IterableIterator; + values(): IterableIterator; + [Symbol.iterator](): IterableIterator; +} +export declare const enum Touch { + None = 0, + AsOld = 1, + AsNew = 2 +} +export declare class LinkedMap implements Map { + readonly [Symbol.toStringTag] = "LinkedMap"; + private _map; + private _head; + private _tail; + private _size; + private _state; + constructor(); + clear(): void; + isEmpty(): boolean; + get size(): number; + get first(): V | undefined; + get last(): V | undefined; + has(key: K): boolean; + get(key: K, touch?: Touch): V | undefined; + set(key: K, value: V, touch?: Touch): this; + delete(key: K): boolean; + remove(key: K): V | undefined; + shift(): V | undefined; + forEach(callbackfn: (value: V, key: K, map: LinkedMap) => void, thisArg?: any): void; + keys(): IterableIterator; + values(): IterableIterator; + entries(): IterableIterator<[K, V]>; + [Symbol.iterator](): IterableIterator<[K, V]>; + protected trimOld(newSize: number): void; + protected trimNew(newSize: number): void; + private addItemFirst; + private addItemLast; + private removeItem; + private touch; + toJSON(): [K, V][]; + fromJSON(data: [K, V][]): void; +} +declare abstract class Cache extends LinkedMap { + protected _limit: number; + protected _ratio: number; + constructor(limit: number, ratio?: number); + get limit(): number; + set limit(limit: number); + get ratio(): number; + set ratio(ratio: number); + get(key: K, touch?: Touch): V | undefined; + peek(key: K): V | undefined; + set(key: K, value: V): this; + protected checkTrim(): void; + protected abstract trim(newSize: number): void; +} +export declare class LRUCache extends Cache { + constructor(limit: number, ratio?: number); + protected trim(newSize: number): void; + set(key: K, value: V): this; +} +export declare class MRUCache extends Cache { + constructor(limit: number, ratio?: number); + protected trim(newSize: number): void; + set(key: K, value: V): this; +} +export declare class CounterSet { + private map; + add(value: T): CounterSet; + delete(value: T): boolean; + has(value: T): boolean; +} +/** + * A map that allows access both by keys and values. + * **NOTE**: values need to be unique. + */ +export declare class BidirectionalMap { + private readonly _m1; + private readonly _m2; + constructor(entries?: readonly (readonly [K, V])[]); + clear(): void; + set(key: K, value: V): void; + get(key: K): V | undefined; + getKey(value: V): K | undefined; + delete(key: K): boolean; + forEach(callbackfn: (value: V, key: K, map: BidirectionalMap) => void, thisArg?: any): void; + keys(): IterableIterator; + values(): IterableIterator; +} +export declare class SetMap { + private map; + add(key: K, value: V): void; + delete(key: K, value: V): void; + forEach(key: K, fn: (value: V) => void): void; + get(key: K): ReadonlySet; +} +export declare function mapsStrictEqualIgnoreOrder(a: Map, b: Map): boolean; +/** + * A map that is addressable with an arbitrary number of keys. This is useful in high performance + * scenarios where creating a composite key whenever the data is accessed is too expensive. For + * example for a very hot function, constructing a string like `first-second-third` for every call + * will cause a significant hit to performance. + */ +export declare class NKeyMap { + private _data; + /** + * Sets a value on the map. Note that unlike a standard `Map`, the first argument is the value. + * This is because the spread operator is used for the keys and must be last.. + * @param value The value to set. + * @param keys The keys for the value. + */ + set(value: TValue, ...keys: [...TKeys]): void; + get(...keys: [...TKeys]): TValue | undefined; + clear(): void; + values(): IterableIterator; + /** + * Get a textual representation of the map for debugging purposes. + */ + toString(): string; +} +export {}; diff --git a/packages/core/dist/map.js b/packages/core/dist/map.js index 3fe50d41..cf25410f 100644 --- a/packages/core/dist/map.js +++ b/packages/core/dist/map.js @@ -1,794 +1,794 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ -export function getOrSet(map, key, value) { - let result = map.get(key); - if (result === undefined) { - result = value; - map.set(key, result); - } - return result; -} -export function mapToString(map) { - const entries = []; - map.forEach((value, key) => { - entries.push(`${key} => ${value}`); - }); - return `Map(${map.size}) {${entries.join(', ')}}`; -} -export function setToString(set) { - const entries = []; - set.forEach(value => { - entries.push(value); - }); - return `Set(${set.size}) {${entries.join(', ')}}`; -} -class ResourceMapEntry { - uri; - value; - constructor(uri, value) { - this.uri = uri; - this.value = value; - } -} -function isEntries(arg) { - return Array.isArray(arg); -} -export class ResourceMap { - static defaultToKey = (resource) => resource.toString(); - [Symbol.toStringTag] = 'ResourceMap'; - map; - toKey; - constructor(arg, toKey) { - if (arg instanceof ResourceMap) { - this.map = new Map(arg.map); - this.toKey = toKey ?? ResourceMap.defaultToKey; - } - else if (isEntries(arg)) { - this.map = new Map(); - this.toKey = toKey ?? ResourceMap.defaultToKey; - for (const [resource, value] of arg) { - this.set(resource, value); - } - } - else { - this.map = new Map(); - this.toKey = arg ?? ResourceMap.defaultToKey; - } - } - set(resource, value) { - this.map.set(this.toKey(resource), new ResourceMapEntry(resource, value)); - return this; - } - get(resource) { - return this.map.get(this.toKey(resource))?.value; - } - has(resource) { - return this.map.has(this.toKey(resource)); - } - get size() { - return this.map.size; - } - clear() { - this.map.clear(); - } - delete(resource) { - return this.map.delete(this.toKey(resource)); - } - forEach(clb, thisArg) { - if (typeof thisArg !== 'undefined') { - clb = clb.bind(thisArg); - } - for (const [_, entry] of this.map) { - clb(entry.value, entry.uri, this); - } - } - *values() { - for (const entry of this.map.values()) { - yield entry.value; - } - } - *keys() { - for (const entry of this.map.values()) { - yield entry.uri; - } - } - *entries() { - for (const entry of this.map.values()) { - yield [entry.uri, entry.value]; - } - } - *[Symbol.iterator]() { - for (const [, entry] of this.map) { - yield [entry.uri, entry.value]; - } - } -} -export class ResourceSet { - [Symbol.toStringTag] = 'ResourceSet'; - _map; - constructor(entriesOrKey, toKey) { - if (!entriesOrKey || typeof entriesOrKey === 'function') { - this._map = new ResourceMap(entriesOrKey); - } - else { - this._map = new ResourceMap(toKey); - entriesOrKey.forEach(this.add, this); - } - } - get size() { - return this._map.size; - } - add(value) { - this._map.set(value, value); - return this; - } - clear() { - this._map.clear(); - } - delete(value) { - return this._map.delete(value); - } - forEach(callbackfn, thisArg) { - this._map.forEach((_value, key) => callbackfn.call(thisArg, key, key, this)); - } - has(value) { - return this._map.has(value); - } - entries() { - return this._map.entries(); - } - keys() { - return this._map.keys(); - } - values() { - return this._map.keys(); - } - [Symbol.iterator]() { - return this.keys(); - } -} -export var Touch; -(function (Touch) { - Touch[Touch["None"] = 0] = "None"; - Touch[Touch["AsOld"] = 1] = "AsOld"; - Touch[Touch["AsNew"] = 2] = "AsNew"; -})(Touch = Touch || (Touch = {})); -export class LinkedMap { - [Symbol.toStringTag] = 'LinkedMap'; - _map; - _head; - _tail; - _size; - _state; - constructor() { - this._map = new Map(); - this._head = undefined; - this._tail = undefined; - this._size = 0; - this._state = 0; - } - clear() { - this._map.clear(); - this._head = undefined; - this._tail = undefined; - this._size = 0; - this._state++; - } - isEmpty() { - return !this._head && !this._tail; - } - get size() { - return this._size; - } - get first() { - return this._head?.value; - } - get last() { - return this._tail?.value; - } - has(key) { - return this._map.has(key); - } - get(key, touch = 0 /* Touch.None */) { - const item = this._map.get(key); - if (!item) { - return undefined; - } - if (touch !== 0 /* Touch.None */) { - this.touch(item, touch); - } - return item.value; - } - set(key, value, touch = 0 /* Touch.None */) { - let item = this._map.get(key); - if (item) { - item.value = value; - if (touch !== 0 /* Touch.None */) { - this.touch(item, touch); - } - } - else { - item = { key, value, next: undefined, previous: undefined }; - switch (touch) { - case 0 /* Touch.None */: - this.addItemLast(item); - break; - case 1 /* Touch.AsOld */: - this.addItemFirst(item); - break; - case 2 /* Touch.AsNew */: - this.addItemLast(item); - break; - default: - this.addItemLast(item); - break; - } - this._map.set(key, item); - this._size++; - } - return this; - } - delete(key) { - return !!this.remove(key); - } - remove(key) { - const item = this._map.get(key); - if (!item) { - return undefined; - } - this._map.delete(key); - this.removeItem(item); - this._size--; - return item.value; - } - shift() { - if (!this._head && !this._tail) { - return undefined; - } - if (!this._head || !this._tail) { - throw new Error('Invalid list'); - } - const item = this._head; - this._map.delete(item.key); - this.removeItem(item); - this._size--; - return item.value; - } - forEach(callbackfn, thisArg) { - const state = this._state; - let current = this._head; - while (current) { - if (thisArg) { - callbackfn.bind(thisArg)(current.value, current.key, this); - } - else { - callbackfn(current.value, current.key, this); - } - if (this._state !== state) { - throw new Error(`LinkedMap got modified during iteration.`); - } - current = current.next; - } - } - keys() { - const map = this; - const state = this._state; - let current = this._head; - const iterator = { - [Symbol.iterator]() { - return iterator; - }, - next() { - if (map._state !== state) { - throw new Error(`LinkedMap got modified during iteration.`); - } - if (current) { - const result = { value: current.key, done: false }; - current = current.next; - return result; - } - else { - return { value: undefined, done: true }; - } - } - }; - return iterator; - } - values() { - const map = this; - const state = this._state; - let current = this._head; - const iterator = { - [Symbol.iterator]() { - return iterator; - }, - next() { - if (map._state !== state) { - throw new Error(`LinkedMap got modified during iteration.`); - } - if (current) { - const result = { value: current.value, done: false }; - current = current.next; - return result; - } - else { - return { value: undefined, done: true }; - } - } - }; - return iterator; - } - entries() { - const map = this; - const state = this._state; - let current = this._head; - const iterator = { - [Symbol.iterator]() { - return iterator; - }, - next() { - if (map._state !== state) { - throw new Error(`LinkedMap got modified during iteration.`); - } - if (current) { - const result = { value: [current.key, current.value], done: false }; - current = current.next; - return result; - } - else { - return { value: undefined, done: true }; - } - } - }; - return iterator; - } - [Symbol.iterator]() { - return this.entries(); - } - trimOld(newSize) { - if (newSize >= this.size) { - return; - } - if (newSize === 0) { - this.clear(); - return; - } - let current = this._head; - let currentSize = this.size; - while (current && currentSize > newSize) { - this._map.delete(current.key); - current = current.next; - currentSize--; - } - this._head = current; - this._size = currentSize; - if (current) { - current.previous = undefined; - } - this._state++; - } - trimNew(newSize) { - if (newSize >= this.size) { - return; - } - if (newSize === 0) { - this.clear(); - return; - } - let current = this._tail; - let currentSize = this.size; - while (current && currentSize > newSize) { - this._map.delete(current.key); - current = current.previous; - currentSize--; - } - this._tail = current; - this._size = currentSize; - if (current) { - current.next = undefined; - } - this._state++; - } - addItemFirst(item) { - // First time Insert - if (!this._head && !this._tail) { - this._tail = item; - } - else if (!this._head) { - throw new Error('Invalid list'); - } - else { - item.next = this._head; - this._head.previous = item; - } - this._head = item; - this._state++; - } - addItemLast(item) { - // First time Insert - if (!this._head && !this._tail) { - this._head = item; - } - else if (!this._tail) { - throw new Error('Invalid list'); - } - else { - item.previous = this._tail; - this._tail.next = item; - } - this._tail = item; - this._state++; - } - removeItem(item) { - if (item === this._head && item === this._tail) { - this._head = undefined; - this._tail = undefined; - } - else if (item === this._head) { - // This can only happen if size === 1 which is handled - // by the case above. - if (!item.next) { - throw new Error('Invalid list'); - } - item.next.previous = undefined; - this._head = item.next; - } - else if (item === this._tail) { - // This can only happen if size === 1 which is handled - // by the case above. - if (!item.previous) { - throw new Error('Invalid list'); - } - item.previous.next = undefined; - this._tail = item.previous; - } - else { - const next = item.next; - const previous = item.previous; - if (!next || !previous) { - throw new Error('Invalid list'); - } - next.previous = previous; - previous.next = next; - } - item.next = undefined; - item.previous = undefined; - this._state++; - } - touch(item, touch) { - if (!this._head || !this._tail) { - throw new Error('Invalid list'); - } - if ((touch !== 1 /* Touch.AsOld */ && touch !== 2 /* Touch.AsNew */)) { - return; - } - if (touch === 1 /* Touch.AsOld */) { - if (item === this._head) { - return; - } - const next = item.next; - const previous = item.previous; - // Unlink the item - if (item === this._tail) { - // previous must be defined since item was not head but is tail - // So there are more than on item in the map - previous.next = undefined; - this._tail = previous; - } - else { - // Both next and previous are not undefined since item was neither head nor tail. - next.previous = previous; - previous.next = next; - } - // Insert the node at head - item.previous = undefined; - item.next = this._head; - this._head.previous = item; - this._head = item; - this._state++; - } - else if (touch === 2 /* Touch.AsNew */) { - if (item === this._tail) { - return; - } - const next = item.next; - const previous = item.previous; - // Unlink the item. - if (item === this._head) { - // next must be defined since item was not tail but is head - // So there are more than on item in the map - next.previous = undefined; - this._head = next; - } - else { - // Both next and previous are not undefined since item was neither head nor tail. - next.previous = previous; - previous.next = next; - } - item.next = undefined; - item.previous = this._tail; - this._tail.next = item; - this._tail = item; - this._state++; - } - } - toJSON() { - const data = []; - this.forEach((value, key) => { - data.push([key, value]); - }); - return data; - } - fromJSON(data) { - this.clear(); - for (const [key, value] of data) { - this.set(key, value); - } - } -} -class Cache extends LinkedMap { - _limit; - _ratio; - constructor(limit, ratio = 1) { - super(); - this._limit = limit; - this._ratio = Math.min(Math.max(0, ratio), 1); - } - get limit() { - return this._limit; - } - set limit(limit) { - this._limit = limit; - this.checkTrim(); - } - get ratio() { - return this._ratio; - } - set ratio(ratio) { - this._ratio = Math.min(Math.max(0, ratio), 1); - this.checkTrim(); - } - get(key, touch = 2 /* Touch.AsNew */) { - return super.get(key, touch); - } - peek(key) { - return super.get(key, 0 /* Touch.None */); - } - set(key, value) { - super.set(key, value, 2 /* Touch.AsNew */); - return this; - } - checkTrim() { - if (this.size > this._limit) { - this.trim(Math.round(this._limit * this._ratio)); - } - } -} -export class LRUCache extends Cache { - constructor(limit, ratio = 1) { - super(limit, ratio); - } - trim(newSize) { - this.trimOld(newSize); - } - set(key, value) { - super.set(key, value); - this.checkTrim(); - return this; - } -} -export class MRUCache extends Cache { - constructor(limit, ratio = 1) { - super(limit, ratio); - } - trim(newSize) { - this.trimNew(newSize); - } - set(key, value) { - if (this._limit <= this.size && !this.has(key)) { - this.trim(Math.round(this._limit * this._ratio) - 1); - } - super.set(key, value); - return this; - } -} -export class CounterSet { - map = new Map(); - add(value) { - this.map.set(value, (this.map.get(value) || 0) + 1); - return this; - } - delete(value) { - let counter = this.map.get(value) || 0; - if (counter === 0) { - return false; - } - counter--; - if (counter === 0) { - this.map.delete(value); - } - else { - this.map.set(value, counter); - } - return true; - } - has(value) { - return this.map.has(value); - } -} -/** - * A map that allows access both by keys and values. - * **NOTE**: values need to be unique. - */ -export class BidirectionalMap { - _m1 = new Map(); - _m2 = new Map(); - constructor(entries) { - if (entries) { - for (const [key, value] of entries) { - this.set(key, value); - } - } - } - clear() { - this._m1.clear(); - this._m2.clear(); - } - set(key, value) { - this._m1.set(key, value); - this._m2.set(value, key); - } - get(key) { - return this._m1.get(key); - } - getKey(value) { - return this._m2.get(value); - } - delete(key) { - const value = this._m1.get(key); - if (value === undefined) { - return false; - } - this._m1.delete(key); - this._m2.delete(value); - return true; - } - forEach(callbackfn, thisArg) { - this._m1.forEach((value, key) => { - callbackfn.call(thisArg, value, key, this); - }); - } - keys() { - return this._m1.keys(); - } - values() { - return this._m1.values(); - } -} -export class SetMap { - map = new Map(); - add(key, value) { - let values = this.map.get(key); - if (!values) { - values = new Set(); - this.map.set(key, values); - } - values.add(value); - } - delete(key, value) { - const values = this.map.get(key); - if (!values) { - return; - } - values.delete(value); - if (values.size === 0) { - this.map.delete(key); - } - } - forEach(key, fn) { - const values = this.map.get(key); - if (!values) { - return; - } - values.forEach(fn); - } - get(key) { - const values = this.map.get(key); - if (!values) { - return new Set(); - } - return values; - } -} -export function mapsStrictEqualIgnoreOrder(a, b) { - if (a === b) { - return true; - } - if (a.size !== b.size) { - return false; - } - for (const [key, value] of a) { - if (!b.has(key) || b.get(key) !== value) { - return false; - } - } - for (const [key] of b) { - if (!a.has(key)) { - return false; - } - } - return true; -} -/** - * A map that is addressable with an arbitrary number of keys. This is useful in high performance - * scenarios where creating a composite key whenever the data is accessed is too expensive. For - * example for a very hot function, constructing a string like `first-second-third` for every call - * will cause a significant hit to performance. - */ -export class NKeyMap { - _data = new Map(); - /** - * Sets a value on the map. Note that unlike a standard `Map`, the first argument is the value. - * This is because the spread operator is used for the keys and must be last.. - * @param value The value to set. - * @param keys The keys for the value. - */ - set(value, ...keys) { - let currentMap = this._data; - for (let i = 0; i < keys.length - 1; i++) { - if (!currentMap.has(keys[i])) { - currentMap.set(keys[i], new Map()); - } - currentMap = currentMap.get(keys[i]); - } - currentMap.set(keys[keys.length - 1], value); - } - get(...keys) { - let currentMap = this._data; - for (let i = 0; i < keys.length - 1; i++) { - if (!currentMap.has(keys[i])) { - return undefined; - } - currentMap = currentMap.get(keys[i]); - } - return currentMap.get(keys[keys.length - 1]); - } - clear() { - this._data.clear(); - } - *values() { - function* iterate(map) { - for (const value of map.values()) { - if (value instanceof Map) { - yield* iterate(value); - } - else { - yield value; - } - } - } - yield* iterate(this._data); - } - /** - * Get a textual representation of the map for debugging purposes. - */ - toString() { - const printMap = (map, depth) => { - let result = ''; - for (const [key, value] of map) { - result += `${' '.repeat(depth)}${key}: `; - if (value instanceof Map) { - result += '\n' + printMap(value, depth + 1); - } - else { - result += `${value}\n`; - } - } - return result; - }; - return printMap(this._data, 0); - } -} +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +export function getOrSet(map, key, value) { + let result = map.get(key); + if (result === undefined) { + result = value; + map.set(key, result); + } + return result; +} +export function mapToString(map) { + const entries = []; + map.forEach((value, key) => { + entries.push(`${key} => ${value}`); + }); + return `Map(${map.size}) {${entries.join(', ')}}`; +} +export function setToString(set) { + const entries = []; + set.forEach(value => { + entries.push(value); + }); + return `Set(${set.size}) {${entries.join(', ')}}`; +} +class ResourceMapEntry { + uri; + value; + constructor(uri, value) { + this.uri = uri; + this.value = value; + } +} +function isEntries(arg) { + return Array.isArray(arg); +} +export class ResourceMap { + static defaultToKey = (resource) => resource.toString(); + [Symbol.toStringTag] = 'ResourceMap'; + map; + toKey; + constructor(arg, toKey) { + if (arg instanceof ResourceMap) { + this.map = new Map(arg.map); + this.toKey = toKey ?? ResourceMap.defaultToKey; + } + else if (isEntries(arg)) { + this.map = new Map(); + this.toKey = toKey ?? ResourceMap.defaultToKey; + for (const [resource, value] of arg) { + this.set(resource, value); + } + } + else { + this.map = new Map(); + this.toKey = arg ?? ResourceMap.defaultToKey; + } + } + set(resource, value) { + this.map.set(this.toKey(resource), new ResourceMapEntry(resource, value)); + return this; + } + get(resource) { + return this.map.get(this.toKey(resource))?.value; + } + has(resource) { + return this.map.has(this.toKey(resource)); + } + get size() { + return this.map.size; + } + clear() { + this.map.clear(); + } + delete(resource) { + return this.map.delete(this.toKey(resource)); + } + forEach(clb, thisArg) { + if (typeof thisArg !== 'undefined') { + clb = clb.bind(thisArg); + } + for (const [_, entry] of this.map) { + clb(entry.value, entry.uri, this); + } + } + *values() { + for (const entry of this.map.values()) { + yield entry.value; + } + } + *keys() { + for (const entry of this.map.values()) { + yield entry.uri; + } + } + *entries() { + for (const entry of this.map.values()) { + yield [entry.uri, entry.value]; + } + } + *[Symbol.iterator]() { + for (const [, entry] of this.map) { + yield [entry.uri, entry.value]; + } + } +} +export class ResourceSet { + [Symbol.toStringTag] = 'ResourceSet'; + _map; + constructor(entriesOrKey, toKey) { + if (!entriesOrKey || typeof entriesOrKey === 'function') { + this._map = new ResourceMap(entriesOrKey); + } + else { + this._map = new ResourceMap(toKey); + entriesOrKey.forEach(this.add, this); + } + } + get size() { + return this._map.size; + } + add(value) { + this._map.set(value, value); + return this; + } + clear() { + this._map.clear(); + } + delete(value) { + return this._map.delete(value); + } + forEach(callbackfn, thisArg) { + this._map.forEach((_value, key) => callbackfn.call(thisArg, key, key, this)); + } + has(value) { + return this._map.has(value); + } + entries() { + return this._map.entries(); + } + keys() { + return this._map.keys(); + } + values() { + return this._map.keys(); + } + [Symbol.iterator]() { + return this.keys(); + } +} +export var Touch; +(function (Touch) { + Touch[Touch["None"] = 0] = "None"; + Touch[Touch["AsOld"] = 1] = "AsOld"; + Touch[Touch["AsNew"] = 2] = "AsNew"; +})(Touch || (Touch = {})); +export class LinkedMap { + [Symbol.toStringTag] = 'LinkedMap'; + _map; + _head; + _tail; + _size; + _state; + constructor() { + this._map = new Map(); + this._head = undefined; + this._tail = undefined; + this._size = 0; + this._state = 0; + } + clear() { + this._map.clear(); + this._head = undefined; + this._tail = undefined; + this._size = 0; + this._state++; + } + isEmpty() { + return !this._head && !this._tail; + } + get size() { + return this._size; + } + get first() { + return this._head?.value; + } + get last() { + return this._tail?.value; + } + has(key) { + return this._map.has(key); + } + get(key, touch = 0 /* Touch.None */) { + const item = this._map.get(key); + if (!item) { + return undefined; + } + if (touch !== 0 /* Touch.None */) { + this.touch(item, touch); + } + return item.value; + } + set(key, value, touch = 0 /* Touch.None */) { + let item = this._map.get(key); + if (item) { + item.value = value; + if (touch !== 0 /* Touch.None */) { + this.touch(item, touch); + } + } + else { + item = { key, value, next: undefined, previous: undefined }; + switch (touch) { + case 0 /* Touch.None */: + this.addItemLast(item); + break; + case 1 /* Touch.AsOld */: + this.addItemFirst(item); + break; + case 2 /* Touch.AsNew */: + this.addItemLast(item); + break; + default: + this.addItemLast(item); + break; + } + this._map.set(key, item); + this._size++; + } + return this; + } + delete(key) { + return !!this.remove(key); + } + remove(key) { + const item = this._map.get(key); + if (!item) { + return undefined; + } + this._map.delete(key); + this.removeItem(item); + this._size--; + return item.value; + } + shift() { + if (!this._head && !this._tail) { + return undefined; + } + if (!this._head || !this._tail) { + throw new Error('Invalid list'); + } + const item = this._head; + this._map.delete(item.key); + this.removeItem(item); + this._size--; + return item.value; + } + forEach(callbackfn, thisArg) { + const state = this._state; + let current = this._head; + while (current) { + if (thisArg) { + callbackfn.bind(thisArg)(current.value, current.key, this); + } + else { + callbackfn(current.value, current.key, this); + } + if (this._state !== state) { + throw new Error(`LinkedMap got modified during iteration.`); + } + current = current.next; + } + } + keys() { + const map = this; + const state = this._state; + let current = this._head; + const iterator = { + [Symbol.iterator]() { + return iterator; + }, + next() { + if (map._state !== state) { + throw new Error(`LinkedMap got modified during iteration.`); + } + if (current) { + const result = { value: current.key, done: false }; + current = current.next; + return result; + } + else { + return { value: undefined, done: true }; + } + } + }; + return iterator; + } + values() { + const map = this; + const state = this._state; + let current = this._head; + const iterator = { + [Symbol.iterator]() { + return iterator; + }, + next() { + if (map._state !== state) { + throw new Error(`LinkedMap got modified during iteration.`); + } + if (current) { + const result = { value: current.value, done: false }; + current = current.next; + return result; + } + else { + return { value: undefined, done: true }; + } + } + }; + return iterator; + } + entries() { + const map = this; + const state = this._state; + let current = this._head; + const iterator = { + [Symbol.iterator]() { + return iterator; + }, + next() { + if (map._state !== state) { + throw new Error(`LinkedMap got modified during iteration.`); + } + if (current) { + const result = { value: [current.key, current.value], done: false }; + current = current.next; + return result; + } + else { + return { value: undefined, done: true }; + } + } + }; + return iterator; + } + [Symbol.iterator]() { + return this.entries(); + } + trimOld(newSize) { + if (newSize >= this.size) { + return; + } + if (newSize === 0) { + this.clear(); + return; + } + let current = this._head; + let currentSize = this.size; + while (current && currentSize > newSize) { + this._map.delete(current.key); + current = current.next; + currentSize--; + } + this._head = current; + this._size = currentSize; + if (current) { + current.previous = undefined; + } + this._state++; + } + trimNew(newSize) { + if (newSize >= this.size) { + return; + } + if (newSize === 0) { + this.clear(); + return; + } + let current = this._tail; + let currentSize = this.size; + while (current && currentSize > newSize) { + this._map.delete(current.key); + current = current.previous; + currentSize--; + } + this._tail = current; + this._size = currentSize; + if (current) { + current.next = undefined; + } + this._state++; + } + addItemFirst(item) { + // First time Insert + if (!this._head && !this._tail) { + this._tail = item; + } + else if (!this._head) { + throw new Error('Invalid list'); + } + else { + item.next = this._head; + this._head.previous = item; + } + this._head = item; + this._state++; + } + addItemLast(item) { + // First time Insert + if (!this._head && !this._tail) { + this._head = item; + } + else if (!this._tail) { + throw new Error('Invalid list'); + } + else { + item.previous = this._tail; + this._tail.next = item; + } + this._tail = item; + this._state++; + } + removeItem(item) { + if (item === this._head && item === this._tail) { + this._head = undefined; + this._tail = undefined; + } + else if (item === this._head) { + // This can only happen if size === 1 which is handled + // by the case above. + if (!item.next) { + throw new Error('Invalid list'); + } + item.next.previous = undefined; + this._head = item.next; + } + else if (item === this._tail) { + // This can only happen if size === 1 which is handled + // by the case above. + if (!item.previous) { + throw new Error('Invalid list'); + } + item.previous.next = undefined; + this._tail = item.previous; + } + else { + const next = item.next; + const previous = item.previous; + if (!next || !previous) { + throw new Error('Invalid list'); + } + next.previous = previous; + previous.next = next; + } + item.next = undefined; + item.previous = undefined; + this._state++; + } + touch(item, touch) { + if (!this._head || !this._tail) { + throw new Error('Invalid list'); + } + if ((touch !== 1 /* Touch.AsOld */ && touch !== 2 /* Touch.AsNew */)) { + return; + } + if (touch === 1 /* Touch.AsOld */) { + if (item === this._head) { + return; + } + const next = item.next; + const previous = item.previous; + // Unlink the item + if (item === this._tail) { + // previous must be defined since item was not head but is tail + // So there are more than on item in the map + previous.next = undefined; + this._tail = previous; + } + else { + // Both next and previous are not undefined since item was neither head nor tail. + next.previous = previous; + previous.next = next; + } + // Insert the node at head + item.previous = undefined; + item.next = this._head; + this._head.previous = item; + this._head = item; + this._state++; + } + else if (touch === 2 /* Touch.AsNew */) { + if (item === this._tail) { + return; + } + const next = item.next; + const previous = item.previous; + // Unlink the item. + if (item === this._head) { + // next must be defined since item was not tail but is head + // So there are more than on item in the map + next.previous = undefined; + this._head = next; + } + else { + // Both next and previous are not undefined since item was neither head nor tail. + next.previous = previous; + previous.next = next; + } + item.next = undefined; + item.previous = this._tail; + this._tail.next = item; + this._tail = item; + this._state++; + } + } + toJSON() { + const data = []; + this.forEach((value, key) => { + data.push([key, value]); + }); + return data; + } + fromJSON(data) { + this.clear(); + for (const [key, value] of data) { + this.set(key, value); + } + } +} +class Cache extends LinkedMap { + _limit; + _ratio; + constructor(limit, ratio = 1) { + super(); + this._limit = limit; + this._ratio = Math.min(Math.max(0, ratio), 1); + } + get limit() { + return this._limit; + } + set limit(limit) { + this._limit = limit; + this.checkTrim(); + } + get ratio() { + return this._ratio; + } + set ratio(ratio) { + this._ratio = Math.min(Math.max(0, ratio), 1); + this.checkTrim(); + } + get(key, touch = 2 /* Touch.AsNew */) { + return super.get(key, touch); + } + peek(key) { + return super.get(key, 0 /* Touch.None */); + } + set(key, value) { + super.set(key, value, 2 /* Touch.AsNew */); + return this; + } + checkTrim() { + if (this.size > this._limit) { + this.trim(Math.round(this._limit * this._ratio)); + } + } +} +export class LRUCache extends Cache { + constructor(limit, ratio = 1) { + super(limit, ratio); + } + trim(newSize) { + this.trimOld(newSize); + } + set(key, value) { + super.set(key, value); + this.checkTrim(); + return this; + } +} +export class MRUCache extends Cache { + constructor(limit, ratio = 1) { + super(limit, ratio); + } + trim(newSize) { + this.trimNew(newSize); + } + set(key, value) { + if (this._limit <= this.size && !this.has(key)) { + this.trim(Math.round(this._limit * this._ratio) - 1); + } + super.set(key, value); + return this; + } +} +export class CounterSet { + map = new Map(); + add(value) { + this.map.set(value, (this.map.get(value) || 0) + 1); + return this; + } + delete(value) { + let counter = this.map.get(value) || 0; + if (counter === 0) { + return false; + } + counter--; + if (counter === 0) { + this.map.delete(value); + } + else { + this.map.set(value, counter); + } + return true; + } + has(value) { + return this.map.has(value); + } +} +/** + * A map that allows access both by keys and values. + * **NOTE**: values need to be unique. + */ +export class BidirectionalMap { + _m1 = new Map(); + _m2 = new Map(); + constructor(entries) { + if (entries) { + for (const [key, value] of entries) { + this.set(key, value); + } + } + } + clear() { + this._m1.clear(); + this._m2.clear(); + } + set(key, value) { + this._m1.set(key, value); + this._m2.set(value, key); + } + get(key) { + return this._m1.get(key); + } + getKey(value) { + return this._m2.get(value); + } + delete(key) { + const value = this._m1.get(key); + if (value === undefined) { + return false; + } + this._m1.delete(key); + this._m2.delete(value); + return true; + } + forEach(callbackfn, thisArg) { + this._m1.forEach((value, key) => { + callbackfn.call(thisArg, value, key, this); + }); + } + keys() { + return this._m1.keys(); + } + values() { + return this._m1.values(); + } +} +export class SetMap { + map = new Map(); + add(key, value) { + let values = this.map.get(key); + if (!values) { + values = new Set(); + this.map.set(key, values); + } + values.add(value); + } + delete(key, value) { + const values = this.map.get(key); + if (!values) { + return; + } + values.delete(value); + if (values.size === 0) { + this.map.delete(key); + } + } + forEach(key, fn) { + const values = this.map.get(key); + if (!values) { + return; + } + values.forEach(fn); + } + get(key) { + const values = this.map.get(key); + if (!values) { + return new Set(); + } + return values; + } +} +export function mapsStrictEqualIgnoreOrder(a, b) { + if (a === b) { + return true; + } + if (a.size !== b.size) { + return false; + } + for (const [key, value] of a) { + if (!b.has(key) || b.get(key) !== value) { + return false; + } + } + for (const [key] of b) { + if (!a.has(key)) { + return false; + } + } + return true; +} +/** + * A map that is addressable with an arbitrary number of keys. This is useful in high performance + * scenarios where creating a composite key whenever the data is accessed is too expensive. For + * example for a very hot function, constructing a string like `first-second-third` for every call + * will cause a significant hit to performance. + */ +export class NKeyMap { + _data = new Map(); + /** + * Sets a value on the map. Note that unlike a standard `Map`, the first argument is the value. + * This is because the spread operator is used for the keys and must be last.. + * @param value The value to set. + * @param keys The keys for the value. + */ + set(value, ...keys) { + let currentMap = this._data; + for (let i = 0; i < keys.length - 1; i++) { + if (!currentMap.has(keys[i])) { + currentMap.set(keys[i], new Map()); + } + currentMap = currentMap.get(keys[i]); + } + currentMap.set(keys[keys.length - 1], value); + } + get(...keys) { + let currentMap = this._data; + for (let i = 0; i < keys.length - 1; i++) { + if (!currentMap.has(keys[i])) { + return undefined; + } + currentMap = currentMap.get(keys[i]); + } + return currentMap.get(keys[keys.length - 1]); + } + clear() { + this._data.clear(); + } + *values() { + function* iterate(map) { + for (const value of map.values()) { + if (value instanceof Map) { + yield* iterate(value); + } + else { + yield value; + } + } + } + yield* iterate(this._data); + } + /** + * Get a textual representation of the map for debugging purposes. + */ + toString() { + const printMap = (map, depth) => { + let result = ''; + for (const [key, value] of map) { + result += `${' '.repeat(depth)}${key}: `; + if (value instanceof Map) { + result += '\n' + printMap(value, depth + 1); + } + else { + result += `${value}\n`; + } + } + return result; + }; + return printMap(this._data, 0); + } +} //# sourceMappingURL=map.js.map \ No newline at end of file diff --git a/packages/core/dist/map.js.map b/packages/core/dist/map.js.map index f6fd50df..388dca82 100644 --- a/packages/core/dist/map.js.map +++ b/packages/core/dist/map.js.map @@ -1 +1 @@ -{"version":3,"file":"map.js","sourceRoot":"","sources":["../src/map.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"map.js","sourceRoot":"","sources":["../src/map.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/dist/marshallingIds.d.ts b/packages/core/dist/marshallingIds.d.ts index 74be4e2a..f06973b5 100644 --- a/packages/core/dist/marshallingIds.d.ts +++ b/packages/core/dist/marshallingIds.d.ts @@ -1,24 +1,24 @@ -export declare const enum MarshalledId { - Uri = 1, - Regexp = 2, - ScmResource = 3, - ScmResourceGroup = 4, - ScmProvider = 5, - CommentController = 6, - CommentThread = 7, - CommentThreadInstance = 8, - CommentThreadReply = 9, - CommentNode = 10, - CommentThreadNode = 11, - TimelineActionContext = 12, - NotebookCellActionContext = 13, - NotebookActionContext = 14, - TerminalContext = 15, - TestItemContext = 16, - Date = 17, - TestMessageMenuArgs = 18, - ChatViewContext = 19, - LanguageModelToolResult = 20, - LanguageModelTextPart = 21, - LanguageModelPromptTsxPart = 22 -} +export declare const enum MarshalledId { + Uri = 1, + Regexp = 2, + ScmResource = 3, + ScmResourceGroup = 4, + ScmProvider = 5, + CommentController = 6, + CommentThread = 7, + CommentThreadInstance = 8, + CommentThreadReply = 9, + CommentNode = 10, + CommentThreadNode = 11, + TimelineActionContext = 12, + NotebookCellActionContext = 13, + NotebookActionContext = 14, + TerminalContext = 15, + TestItemContext = 16, + Date = 17, + TestMessageMenuArgs = 18, + ChatViewContext = 19, + LanguageModelToolResult = 20, + LanguageModelTextPart = 21, + LanguageModelPromptTsxPart = 22 +} diff --git a/packages/core/dist/marshallingIds.js b/packages/core/dist/marshallingIds.js index 70574725..f68c867a 100644 --- a/packages/core/dist/marshallingIds.js +++ b/packages/core/dist/marshallingIds.js @@ -1,30 +1,30 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ -export var MarshalledId; -(function (MarshalledId) { - MarshalledId[MarshalledId["Uri"] = 1] = "Uri"; - MarshalledId[MarshalledId["Regexp"] = 2] = "Regexp"; - MarshalledId[MarshalledId["ScmResource"] = 3] = "ScmResource"; - MarshalledId[MarshalledId["ScmResourceGroup"] = 4] = "ScmResourceGroup"; - MarshalledId[MarshalledId["ScmProvider"] = 5] = "ScmProvider"; - MarshalledId[MarshalledId["CommentController"] = 6] = "CommentController"; - MarshalledId[MarshalledId["CommentThread"] = 7] = "CommentThread"; - MarshalledId[MarshalledId["CommentThreadInstance"] = 8] = "CommentThreadInstance"; - MarshalledId[MarshalledId["CommentThreadReply"] = 9] = "CommentThreadReply"; - MarshalledId[MarshalledId["CommentNode"] = 10] = "CommentNode"; - MarshalledId[MarshalledId["CommentThreadNode"] = 11] = "CommentThreadNode"; - MarshalledId[MarshalledId["TimelineActionContext"] = 12] = "TimelineActionContext"; - MarshalledId[MarshalledId["NotebookCellActionContext"] = 13] = "NotebookCellActionContext"; - MarshalledId[MarshalledId["NotebookActionContext"] = 14] = "NotebookActionContext"; - MarshalledId[MarshalledId["TerminalContext"] = 15] = "TerminalContext"; - MarshalledId[MarshalledId["TestItemContext"] = 16] = "TestItemContext"; - MarshalledId[MarshalledId["Date"] = 17] = "Date"; - MarshalledId[MarshalledId["TestMessageMenuArgs"] = 18] = "TestMessageMenuArgs"; - MarshalledId[MarshalledId["ChatViewContext"] = 19] = "ChatViewContext"; - MarshalledId[MarshalledId["LanguageModelToolResult"] = 20] = "LanguageModelToolResult"; - MarshalledId[MarshalledId["LanguageModelTextPart"] = 21] = "LanguageModelTextPart"; - MarshalledId[MarshalledId["LanguageModelPromptTsxPart"] = 22] = "LanguageModelPromptTsxPart"; -})(MarshalledId = MarshalledId || (MarshalledId = {})); +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +export var MarshalledId; +(function (MarshalledId) { + MarshalledId[MarshalledId["Uri"] = 1] = "Uri"; + MarshalledId[MarshalledId["Regexp"] = 2] = "Regexp"; + MarshalledId[MarshalledId["ScmResource"] = 3] = "ScmResource"; + MarshalledId[MarshalledId["ScmResourceGroup"] = 4] = "ScmResourceGroup"; + MarshalledId[MarshalledId["ScmProvider"] = 5] = "ScmProvider"; + MarshalledId[MarshalledId["CommentController"] = 6] = "CommentController"; + MarshalledId[MarshalledId["CommentThread"] = 7] = "CommentThread"; + MarshalledId[MarshalledId["CommentThreadInstance"] = 8] = "CommentThreadInstance"; + MarshalledId[MarshalledId["CommentThreadReply"] = 9] = "CommentThreadReply"; + MarshalledId[MarshalledId["CommentNode"] = 10] = "CommentNode"; + MarshalledId[MarshalledId["CommentThreadNode"] = 11] = "CommentThreadNode"; + MarshalledId[MarshalledId["TimelineActionContext"] = 12] = "TimelineActionContext"; + MarshalledId[MarshalledId["NotebookCellActionContext"] = 13] = "NotebookCellActionContext"; + MarshalledId[MarshalledId["NotebookActionContext"] = 14] = "NotebookActionContext"; + MarshalledId[MarshalledId["TerminalContext"] = 15] = "TerminalContext"; + MarshalledId[MarshalledId["TestItemContext"] = 16] = "TestItemContext"; + MarshalledId[MarshalledId["Date"] = 17] = "Date"; + MarshalledId[MarshalledId["TestMessageMenuArgs"] = 18] = "TestMessageMenuArgs"; + MarshalledId[MarshalledId["ChatViewContext"] = 19] = "ChatViewContext"; + MarshalledId[MarshalledId["LanguageModelToolResult"] = 20] = "LanguageModelToolResult"; + MarshalledId[MarshalledId["LanguageModelTextPart"] = 21] = "LanguageModelTextPart"; + MarshalledId[MarshalledId["LanguageModelPromptTsxPart"] = 22] = "LanguageModelPromptTsxPart"; +})(MarshalledId || (MarshalledId = {})); //# sourceMappingURL=marshallingIds.js.map \ No newline at end of file diff --git a/packages/core/dist/marshallingIds.js.map b/packages/core/dist/marshallingIds.js.map index d37a07bb..4a76f27c 100644 --- a/packages/core/dist/marshallingIds.js.map +++ b/packages/core/dist/marshallingIds.js.map @@ -1 +1 @@ -{"version":3,"file":"marshallingIds.js","sourceRoot":"","sources":["../src/marshallingIds.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,MAAM,CAAN,IAAkB,YAuBjB;AAvBD,WAAkB,YAAY;IAC7B,6CAAO,CAAA;IACP,mDAAM,CAAA;IACN,6DAAW,CAAA;IACX,uEAAgB,CAAA;IAChB,6DAAW,CAAA;IACX,yEAAiB,CAAA;IACjB,iEAAa,CAAA;IACb,iFAAqB,CAAA;IACrB,2EAAkB,CAAA;IAClB,8DAAW,CAAA;IACX,0EAAiB,CAAA;IACjB,kFAAqB,CAAA;IACrB,0FAAyB,CAAA;IACzB,kFAAqB,CAAA;IACrB,sEAAe,CAAA;IACf,sEAAe,CAAA;IACf,gDAAI,CAAA;IACJ,8EAAmB,CAAA;IACnB,sEAAe,CAAA;IACf,sFAAuB,CAAA;IACvB,kFAAqB,CAAA;IACrB,4FAA0B,CAAA;AAC3B,CAAC,EAvBiB,YAAY,GAAZ,YAAY,KAAZ,YAAY,QAuB7B"} \ No newline at end of file +{"version":3,"file":"marshallingIds.js","sourceRoot":"","sources":["../src/marshallingIds.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,MAAM,CAAN,IAAkB,YAuBjB;AAvBD,WAAkB,YAAY;IAC7B,6CAAO,CAAA;IACP,mDAAM,CAAA;IACN,6DAAW,CAAA;IACX,uEAAgB,CAAA;IAChB,6DAAW,CAAA;IACX,yEAAiB,CAAA;IACjB,iEAAa,CAAA;IACb,iFAAqB,CAAA;IACrB,2EAAkB,CAAA;IAClB,8DAAW,CAAA;IACX,0EAAiB,CAAA;IACjB,kFAAqB,CAAA;IACrB,0FAAyB,CAAA;IACzB,kFAAqB,CAAA;IACrB,sEAAe,CAAA;IACf,sEAAe,CAAA;IACf,gDAAI,CAAA;IACJ,8EAAmB,CAAA;IACnB,sEAAe,CAAA;IACf,sFAAuB,CAAA;IACvB,kFAAqB,CAAA;IACrB,4FAA0B,CAAA;AAC3B,CAAC,EAvBiB,YAAY,KAAZ,YAAY,QAuB7B"} \ No newline at end of file diff --git a/packages/core/dist/mime.d.ts b/packages/core/dist/mime.d.ts index e9f8a53b..c86064ea 100644 --- a/packages/core/dist/mime.d.ts +++ b/packages/core/dist/mime.d.ts @@ -1,13 +1,13 @@ -export declare const Mimes: Readonly<{ - text: "text/plain"; - binary: "application/octet-stream"; - unknown: "application/unknown"; - markdown: "text/markdown"; - latex: "text/latex"; - uriList: "text/uri-list"; -}>; -export declare function getMediaOrTextMime(path: string): string | undefined; -export declare function getMediaMime(path: string): string | undefined; -export declare function getExtensionForMimeType(mimeType: string): string | undefined; -export declare function normalizeMimeType(mimeType: string): string; -export declare function normalizeMimeType(mimeType: string, strict: true): string | undefined; +export declare const Mimes: Readonly<{ + text: "text/plain"; + binary: "application/octet-stream"; + unknown: "application/unknown"; + markdown: "text/markdown"; + latex: "text/latex"; + uriList: "text/uri-list"; +}>; +export declare function getMediaOrTextMime(path: string): string | undefined; +export declare function getMediaMime(path: string): string | undefined; +export declare function getExtensionForMimeType(mimeType: string): string | undefined; +export declare function normalizeMimeType(mimeType: string): string; +export declare function normalizeMimeType(mimeType: string, strict: true): string | undefined; diff --git a/packages/core/dist/mime.js b/packages/core/dist/mime.js index ae23b223..3b7e4d96 100644 --- a/packages/core/dist/mime.js +++ b/packages/core/dist/mime.js @@ -1,111 +1,111 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ -import { extname } from './path.js'; -export const Mimes = Object.freeze({ - text: 'text/plain', - binary: 'application/octet-stream', - unknown: 'application/unknown', - markdown: 'text/markdown', - latex: 'text/latex', - uriList: 'text/uri-list', -}); -const mapExtToTextMimes = { - '.css': 'text/css', - '.csv': 'text/csv', - '.htm': 'text/html', - '.html': 'text/html', - '.ics': 'text/calendar', - '.js': 'text/javascript', - '.mjs': 'text/javascript', - '.txt': 'text/plain', - '.xml': 'text/xml' -}; -// Known media mimes that we can handle -const mapExtToMediaMimes = { - '.aac': 'audio/x-aac', - '.avi': 'video/x-msvideo', - '.bmp': 'image/bmp', - '.flv': 'video/x-flv', - '.gif': 'image/gif', - '.ico': 'image/x-icon', - '.jpe': 'image/jpg', - '.jpeg': 'image/jpg', - '.jpg': 'image/jpg', - '.m1v': 'video/mpeg', - '.m2a': 'audio/mpeg', - '.m2v': 'video/mpeg', - '.m3a': 'audio/mpeg', - '.mid': 'audio/midi', - '.midi': 'audio/midi', - '.mk3d': 'video/x-matroska', - '.mks': 'video/x-matroska', - '.mkv': 'video/x-matroska', - '.mov': 'video/quicktime', - '.movie': 'video/x-sgi-movie', - '.mp2': 'audio/mpeg', - '.mp2a': 'audio/mpeg', - '.mp3': 'audio/mpeg', - '.mp4': 'video/mp4', - '.mp4a': 'audio/mp4', - '.mp4v': 'video/mp4', - '.mpe': 'video/mpeg', - '.mpeg': 'video/mpeg', - '.mpg': 'video/mpeg', - '.mpg4': 'video/mp4', - '.mpga': 'audio/mpeg', - '.oga': 'audio/ogg', - '.ogg': 'audio/ogg', - '.opus': 'audio/opus', - '.ogv': 'video/ogg', - '.png': 'image/png', - '.psd': 'image/vnd.adobe.photoshop', - '.qt': 'video/quicktime', - '.spx': 'audio/ogg', - '.svg': 'image/svg+xml', - '.tga': 'image/x-tga', - '.tif': 'image/tiff', - '.tiff': 'image/tiff', - '.wav': 'audio/x-wav', - '.webm': 'video/webm', - '.webp': 'image/webp', - '.wma': 'audio/x-ms-wma', - '.wmv': 'video/x-ms-wmv', - '.woff': 'application/font-woff', -}; -export function getMediaOrTextMime(path) { - const ext = extname(path); - const textMime = mapExtToTextMimes[ext.toLowerCase()]; - if (textMime !== undefined) { - return textMime; - } - else { - return getMediaMime(path); - } -} -export function getMediaMime(path) { - const ext = extname(path); - return mapExtToMediaMimes[ext.toLowerCase()]; -} -export function getExtensionForMimeType(mimeType) { - for (const extension in mapExtToMediaMimes) { - if (mapExtToMediaMimes[extension] === mimeType) { - return extension; - } - } - return undefined; -} -const _simplePattern = /^(.+)\/(.+?)(;.+)?$/; -export function normalizeMimeType(mimeType, strict) { - const match = _simplePattern.exec(mimeType); - if (!match) { - return strict - ? undefined - : mimeType; - } - // https://datatracker.ietf.org/doc/html/rfc2045#section-5.1 - // media and subtype must ALWAYS be lowercase, parameter not - return `${match[1].toLowerCase()}/${match[2].toLowerCase()}${match[3] ?? ''}`; -} +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +import { extname } from './path.js'; +export const Mimes = Object.freeze({ + text: 'text/plain', + binary: 'application/octet-stream', + unknown: 'application/unknown', + markdown: 'text/markdown', + latex: 'text/latex', + uriList: 'text/uri-list', +}); +const mapExtToTextMimes = { + '.css': 'text/css', + '.csv': 'text/csv', + '.htm': 'text/html', + '.html': 'text/html', + '.ics': 'text/calendar', + '.js': 'text/javascript', + '.mjs': 'text/javascript', + '.txt': 'text/plain', + '.xml': 'text/xml' +}; +// Known media mimes that we can handle +const mapExtToMediaMimes = { + '.aac': 'audio/x-aac', + '.avi': 'video/x-msvideo', + '.bmp': 'image/bmp', + '.flv': 'video/x-flv', + '.gif': 'image/gif', + '.ico': 'image/x-icon', + '.jpe': 'image/jpg', + '.jpeg': 'image/jpg', + '.jpg': 'image/jpg', + '.m1v': 'video/mpeg', + '.m2a': 'audio/mpeg', + '.m2v': 'video/mpeg', + '.m3a': 'audio/mpeg', + '.mid': 'audio/midi', + '.midi': 'audio/midi', + '.mk3d': 'video/x-matroska', + '.mks': 'video/x-matroska', + '.mkv': 'video/x-matroska', + '.mov': 'video/quicktime', + '.movie': 'video/x-sgi-movie', + '.mp2': 'audio/mpeg', + '.mp2a': 'audio/mpeg', + '.mp3': 'audio/mpeg', + '.mp4': 'video/mp4', + '.mp4a': 'audio/mp4', + '.mp4v': 'video/mp4', + '.mpe': 'video/mpeg', + '.mpeg': 'video/mpeg', + '.mpg': 'video/mpeg', + '.mpg4': 'video/mp4', + '.mpga': 'audio/mpeg', + '.oga': 'audio/ogg', + '.ogg': 'audio/ogg', + '.opus': 'audio/opus', + '.ogv': 'video/ogg', + '.png': 'image/png', + '.psd': 'image/vnd.adobe.photoshop', + '.qt': 'video/quicktime', + '.spx': 'audio/ogg', + '.svg': 'image/svg+xml', + '.tga': 'image/x-tga', + '.tif': 'image/tiff', + '.tiff': 'image/tiff', + '.wav': 'audio/x-wav', + '.webm': 'video/webm', + '.webp': 'image/webp', + '.wma': 'audio/x-ms-wma', + '.wmv': 'video/x-ms-wmv', + '.woff': 'application/font-woff', +}; +export function getMediaOrTextMime(path) { + const ext = extname(path); + const textMime = mapExtToTextMimes[ext.toLowerCase()]; + if (textMime !== undefined) { + return textMime; + } + else { + return getMediaMime(path); + } +} +export function getMediaMime(path) { + const ext = extname(path); + return mapExtToMediaMimes[ext.toLowerCase()]; +} +export function getExtensionForMimeType(mimeType) { + for (const extension in mapExtToMediaMimes) { + if (mapExtToMediaMimes[extension] === mimeType) { + return extension; + } + } + return undefined; +} +const _simplePattern = /^(.+)\/(.+?)(;.+)?$/; +export function normalizeMimeType(mimeType, strict) { + const match = _simplePattern.exec(mimeType); + if (!match) { + return strict + ? undefined + : mimeType; + } + // https://datatracker.ietf.org/doc/html/rfc2045#section-5.1 + // media and subtype must ALWAYS be lowercase, parameter not + return `${match[1].toLowerCase()}/${match[2].toLowerCase()}${match[3] ?? ''}`; +} //# sourceMappingURL=mime.js.map \ No newline at end of file diff --git a/packages/core/dist/mime.js.map b/packages/core/dist/mime.js.map index ca324104..9d6aeae8 100644 --- a/packages/core/dist/mime.js.map +++ b/packages/core/dist/mime.js.map @@ -1 +1 @@ -{"version":3,"file":"mime.js","sourceRoot":"","sources":["../src/mime.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"mime.js","sourceRoot":"","sources":["../src/mime.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/dist/network.d.ts b/packages/core/dist/network.d.ts index 05d86c75..48f1ddbd 100644 --- a/packages/core/dist/network.d.ts +++ b/packages/core/dist/network.d.ts @@ -1,177 +1,177 @@ -import { URI } from './uri.js'; -export declare namespace Schemas { - /** - * A schema that is used for models that exist in memory - * only and that have no correspondence on a server or such. - */ - const inMemory = "inmemory"; - /** - * A schema that is used for setting files - */ - const vscode = "vscode"; - /** - * A schema that is used for internal private files - */ - const internal = "private"; - /** - * A walk-through document. - */ - const walkThrough = "walkThrough"; - /** - * An embedded code snippet. - */ - const walkThroughSnippet = "walkThroughSnippet"; - const http = "http"; - const https = "https"; - const file = "file"; - const mailto = "mailto"; - const untitled = "untitled"; - const data = "data"; - const command = "command"; - const vscodeRemote = "vscode-remote"; - const vscodeRemoteResource = "vscode-remote-resource"; - const vscodeManagedRemoteResource = "vscode-managed-remote-resource"; - const vscodeUserData = "vscode-userdata"; - const vscodeCustomEditor = "vscode-custom-editor"; - const vscodeNotebookCell = "vscode-notebook-cell"; - const vscodeNotebookCellMetadata = "vscode-notebook-cell-metadata"; - const vscodeNotebookCellMetadataDiff = "vscode-notebook-cell-metadata-diff"; - const vscodeNotebookCellOutput = "vscode-notebook-cell-output"; - const vscodeNotebookCellOutputDiff = "vscode-notebook-cell-output-diff"; - const vscodeNotebookMetadata = "vscode-notebook-metadata"; - const vscodeInteractiveInput = "vscode-interactive-input"; - const vscodeSettings = "vscode-settings"; - const vscodeWorkspaceTrust = "vscode-workspace-trust"; - const vscodeTerminal = "vscode-terminal"; - /** Scheme used for code blocks in chat. */ - const vscodeChatCodeBlock = "vscode-chat-code-block"; - /** Scheme used for LHS of code compare (aka diff) blocks in chat. */ - const vscodeChatCodeCompareBlock = "vscode-chat-code-compare-block"; - /** Scheme used for the chat input editor. */ - const vscodeChatSesssion = "vscode-chat-editor"; - /** - * Scheme used internally for webviews that aren't linked to a resource (i.e. not custom editors) - */ - const webviewPanel = "webview-panel"; - /** - * Scheme used for loading the wrapper html and script in webviews. - */ - const vscodeWebview = "vscode-webview"; - /** - * Scheme used for extension pages - */ - const extension = "extension"; - /** - * Scheme used as a replacement of `file` scheme to load - * files with our custom protocol handler (desktop only). - */ - const vscodeFileResource = "vscode-file"; - /** - * Scheme used for temporary resources - */ - const tmp = "tmp"; - /** - * Scheme used vs live share - */ - const vsls = "vsls"; - /** - * Scheme used for the Source Control commit input's text document - */ - const vscodeSourceControl = "vscode-scm"; - /** - * Scheme used for input box for creating comments. - */ - const commentsInput = "comment"; - /** - * Scheme used for special rendering of settings in the release notes - */ - const codeSetting = "code-setting"; - /** - * Scheme used for output panel resources - */ - const outputChannel = "output"; - /** - * Scheme used for the accessible view - */ - const accessibleView = "accessible-view"; -} -export declare function matchesScheme(target: URI | string, scheme: string): boolean; -export declare function matchesSomeScheme(target: URI | string, ...schemes: string[]): boolean; -export declare const connectionTokenCookieName = "vscode-tkn"; -export declare const connectionTokenQueryName = "tkn"; -declare class RemoteAuthoritiesImpl { - private readonly _hosts; - private readonly _ports; - private readonly _connectionTokens; - private _preferredWebSchema; - private _delegate; - private _serverRootPath; - setPreferredWebSchema(schema: 'http' | 'https'): void; - setDelegate(delegate: (uri: URI) => URI): void; - setServerRootPath(product: { - quality?: string; - commit?: string; - }, serverBasePath: string | undefined): void; - getServerRootPath(): string; - private get _remoteResourcesPath(); - set(authority: string, host: string, port: number): void; - setConnectionToken(authority: string, connectionToken: string): void; - getPreferredWebSchema(): 'http' | 'https'; - rewrite(uri: URI): URI; -} -export declare const RemoteAuthorities: RemoteAuthoritiesImpl; -export declare function getServerProductSegment(product: { - quality?: string; - commit?: string; -}): string; -/** - * A string pointing to a path inside the app. It should not begin with ./ or ../ - */ -export type AppResourcePath = (`a${string}` | `b${string}` | `c${string}` | `d${string}` | `e${string}` | `f${string}` | `g${string}` | `h${string}` | `i${string}` | `j${string}` | `k${string}` | `l${string}` | `m${string}` | `n${string}` | `o${string}` | `p${string}` | `q${string}` | `r${string}` | `s${string}` | `t${string}` | `u${string}` | `v${string}` | `w${string}` | `x${string}` | `y${string}` | `z${string}`); -export declare const builtinExtensionsPath: AppResourcePath; -export declare const nodeModulesPath: AppResourcePath; -export declare const nodeModulesAsarPath: AppResourcePath; -export declare const nodeModulesAsarUnpackedPath: AppResourcePath; -export declare const VSCODE_AUTHORITY = "vscode-app"; -declare class FileAccessImpl { - private static readonly FALLBACK_AUTHORITY; - /** - * Returns a URI to use in contexts where the browser is responsible - * for loading (e.g. fetch()) or when used within the DOM. - * - * **Note:** use `dom.ts#asCSSUrl` whenever the URL is to be used in CSS context. - */ - asBrowserUri(resourcePath: AppResourcePath | ''): URI; - /** - * Returns a URI to use in contexts where the browser is responsible - * for loading (e.g. fetch()) or when used within the DOM. - * - * **Note:** use `dom.ts#asCSSUrl` whenever the URL is to be used in CSS context. - */ - uriToBrowserUri(uri: URI): URI; - /** - * Returns the `file` URI to use in contexts where node.js - * is responsible for loading. - */ - asFileUri(resourcePath: AppResourcePath | ''): URI; - /** - * Returns the `file` URI to use in contexts where node.js - * is responsible for loading. - */ - uriToFileUri(uri: URI): URI; - private toUri; -} -export declare const FileAccess: FileAccessImpl; -export declare namespace COI { - const CoopAndCoep: Readonly>; - /** - * Extract desired headers from `vscode-coi` invocation - */ - function getHeadersFromQuery(url: string | URI | URL): Record | undefined; - /** - * Add the `vscode-coi` query attribute based on wanting `COOP` and `COEP`. Will be a noop when `crossOriginIsolated` - * isn't enabled the current context - */ - function addSearchParam(urlOrSearch: URLSearchParams | Record, coop: boolean, coep: boolean): void; -} -export {}; +import { URI } from './uri.js'; +export declare namespace Schemas { + /** + * A schema that is used for models that exist in memory + * only and that have no correspondence on a server or such. + */ + const inMemory = "inmemory"; + /** + * A schema that is used for setting files + */ + const vscode = "vscode"; + /** + * A schema that is used for internal private files + */ + const internal = "private"; + /** + * A walk-through document. + */ + const walkThrough = "walkThrough"; + /** + * An embedded code snippet. + */ + const walkThroughSnippet = "walkThroughSnippet"; + const http = "http"; + const https = "https"; + const file = "file"; + const mailto = "mailto"; + const untitled = "untitled"; + const data = "data"; + const command = "command"; + const vscodeRemote = "vscode-remote"; + const vscodeRemoteResource = "vscode-remote-resource"; + const vscodeManagedRemoteResource = "vscode-managed-remote-resource"; + const vscodeUserData = "vscode-userdata"; + const vscodeCustomEditor = "vscode-custom-editor"; + const vscodeNotebookCell = "vscode-notebook-cell"; + const vscodeNotebookCellMetadata = "vscode-notebook-cell-metadata"; + const vscodeNotebookCellMetadataDiff = "vscode-notebook-cell-metadata-diff"; + const vscodeNotebookCellOutput = "vscode-notebook-cell-output"; + const vscodeNotebookCellOutputDiff = "vscode-notebook-cell-output-diff"; + const vscodeNotebookMetadata = "vscode-notebook-metadata"; + const vscodeInteractiveInput = "vscode-interactive-input"; + const vscodeSettings = "vscode-settings"; + const vscodeWorkspaceTrust = "vscode-workspace-trust"; + const vscodeTerminal = "vscode-terminal"; + /** Scheme used for code blocks in chat. */ + const vscodeChatCodeBlock = "vscode-chat-code-block"; + /** Scheme used for LHS of code compare (aka diff) blocks in chat. */ + const vscodeChatCodeCompareBlock = "vscode-chat-code-compare-block"; + /** Scheme used for the chat input editor. */ + const vscodeChatSesssion = "vscode-chat-editor"; + /** + * Scheme used internally for webviews that aren't linked to a resource (i.e. not custom editors) + */ + const webviewPanel = "webview-panel"; + /** + * Scheme used for loading the wrapper html and script in webviews. + */ + const vscodeWebview = "vscode-webview"; + /** + * Scheme used for extension pages + */ + const extension = "extension"; + /** + * Scheme used as a replacement of `file` scheme to load + * files with our custom protocol handler (desktop only). + */ + const vscodeFileResource = "vscode-file"; + /** + * Scheme used for temporary resources + */ + const tmp = "tmp"; + /** + * Scheme used vs live share + */ + const vsls = "vsls"; + /** + * Scheme used for the Source Control commit input's text document + */ + const vscodeSourceControl = "vscode-scm"; + /** + * Scheme used for input box for creating comments. + */ + const commentsInput = "comment"; + /** + * Scheme used for special rendering of settings in the release notes + */ + const codeSetting = "code-setting"; + /** + * Scheme used for output panel resources + */ + const outputChannel = "output"; + /** + * Scheme used for the accessible view + */ + const accessibleView = "accessible-view"; +} +export declare function matchesScheme(target: URI | string, scheme: string): boolean; +export declare function matchesSomeScheme(target: URI | string, ...schemes: string[]): boolean; +export declare const connectionTokenCookieName = "vscode-tkn"; +export declare const connectionTokenQueryName = "tkn"; +declare class RemoteAuthoritiesImpl { + private readonly _hosts; + private readonly _ports; + private readonly _connectionTokens; + private _preferredWebSchema; + private _delegate; + private _serverRootPath; + setPreferredWebSchema(schema: 'http' | 'https'): void; + setDelegate(delegate: (uri: URI) => URI): void; + setServerRootPath(product: { + quality?: string; + commit?: string; + }, serverBasePath: string | undefined): void; + getServerRootPath(): string; + private get _remoteResourcesPath(); + set(authority: string, host: string, port: number): void; + setConnectionToken(authority: string, connectionToken: string): void; + getPreferredWebSchema(): 'http' | 'https'; + rewrite(uri: URI): URI; +} +export declare const RemoteAuthorities: RemoteAuthoritiesImpl; +export declare function getServerProductSegment(product: { + quality?: string; + commit?: string; +}): string; +/** + * A string pointing to a path inside the app. It should not begin with ./ or ../ + */ +export type AppResourcePath = (`a${string}` | `b${string}` | `c${string}` | `d${string}` | `e${string}` | `f${string}` | `g${string}` | `h${string}` | `i${string}` | `j${string}` | `k${string}` | `l${string}` | `m${string}` | `n${string}` | `o${string}` | `p${string}` | `q${string}` | `r${string}` | `s${string}` | `t${string}` | `u${string}` | `v${string}` | `w${string}` | `x${string}` | `y${string}` | `z${string}`); +export declare const builtinExtensionsPath: AppResourcePath; +export declare const nodeModulesPath: AppResourcePath; +export declare const nodeModulesAsarPath: AppResourcePath; +export declare const nodeModulesAsarUnpackedPath: AppResourcePath; +export declare const VSCODE_AUTHORITY = "vscode-app"; +declare class FileAccessImpl { + private static readonly FALLBACK_AUTHORITY; + /** + * Returns a URI to use in contexts where the browser is responsible + * for loading (e.g. fetch()) or when used within the DOM. + * + * **Note:** use `dom.ts#asCSSUrl` whenever the URL is to be used in CSS context. + */ + asBrowserUri(resourcePath: AppResourcePath | ''): URI; + /** + * Returns a URI to use in contexts where the browser is responsible + * for loading (e.g. fetch()) or when used within the DOM. + * + * **Note:** use `dom.ts#asCSSUrl` whenever the URL is to be used in CSS context. + */ + uriToBrowserUri(uri: URI): URI; + /** + * Returns the `file` URI to use in contexts where node.js + * is responsible for loading. + */ + asFileUri(resourcePath: AppResourcePath | ''): URI; + /** + * Returns the `file` URI to use in contexts where node.js + * is responsible for loading. + */ + uriToFileUri(uri: URI): URI; + private toUri; +} +export declare const FileAccess: FileAccessImpl; +export declare namespace COI { + const CoopAndCoep: Readonly>; + /** + * Extract desired headers from `vscode-coi` invocation + */ + function getHeadersFromQuery(url: string | URI | URL): Record | undefined; + /** + * Add the `vscode-coi` query attribute based on wanting `COOP` and `COEP`. Will be a noop when `crossOriginIsolated` + * isn't enabled the current context + */ + function addSearchParam(urlOrSearch: URLSearchParams | Record, coop: boolean, coep: boolean): void; +} +export {}; diff --git a/packages/core/dist/network.js b/packages/core/dist/network.js index 6501c968..0db84939 100644 --- a/packages/core/dist/network.js +++ b/packages/core/dist/network.js @@ -1,329 +1,329 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ -import * as errors from './errors.js'; -import * as platform from './platform.js'; -import { equalsIgnoreCase, startsWithIgnoreCase } from './strings.js'; -import { URI } from './uri.js'; -import * as paths from './path.js'; -export var Schemas; -(function (Schemas) { - /** - * A schema that is used for models that exist in memory - * only and that have no correspondence on a server or such. - */ - Schemas.inMemory = 'inmemory'; - /** - * A schema that is used for setting files - */ - Schemas.vscode = 'vscode'; - /** - * A schema that is used for internal private files - */ - Schemas.internal = 'private'; - /** - * A walk-through document. - */ - Schemas.walkThrough = 'walkThrough'; - /** - * An embedded code snippet. - */ - Schemas.walkThroughSnippet = 'walkThroughSnippet'; - Schemas.http = 'http'; - Schemas.https = 'https'; - Schemas.file = 'file'; - Schemas.mailto = 'mailto'; - Schemas.untitled = 'untitled'; - Schemas.data = 'data'; - Schemas.command = 'command'; - Schemas.vscodeRemote = 'vscode-remote'; - Schemas.vscodeRemoteResource = 'vscode-remote-resource'; - Schemas.vscodeManagedRemoteResource = 'vscode-managed-remote-resource'; - Schemas.vscodeUserData = 'vscode-userdata'; - Schemas.vscodeCustomEditor = 'vscode-custom-editor'; - Schemas.vscodeNotebookCell = 'vscode-notebook-cell'; - Schemas.vscodeNotebookCellMetadata = 'vscode-notebook-cell-metadata'; - Schemas.vscodeNotebookCellMetadataDiff = 'vscode-notebook-cell-metadata-diff'; - Schemas.vscodeNotebookCellOutput = 'vscode-notebook-cell-output'; - Schemas.vscodeNotebookCellOutputDiff = 'vscode-notebook-cell-output-diff'; - Schemas.vscodeNotebookMetadata = 'vscode-notebook-metadata'; - Schemas.vscodeInteractiveInput = 'vscode-interactive-input'; - Schemas.vscodeSettings = 'vscode-settings'; - Schemas.vscodeWorkspaceTrust = 'vscode-workspace-trust'; - Schemas.vscodeTerminal = 'vscode-terminal'; - /** Scheme used for code blocks in chat. */ - Schemas.vscodeChatCodeBlock = 'vscode-chat-code-block'; - /** Scheme used for LHS of code compare (aka diff) blocks in chat. */ - Schemas.vscodeChatCodeCompareBlock = 'vscode-chat-code-compare-block'; - /** Scheme used for the chat input editor. */ - Schemas.vscodeChatSesssion = 'vscode-chat-editor'; - /** - * Scheme used internally for webviews that aren't linked to a resource (i.e. not custom editors) - */ - Schemas.webviewPanel = 'webview-panel'; - /** - * Scheme used for loading the wrapper html and script in webviews. - */ - Schemas.vscodeWebview = 'vscode-webview'; - /** - * Scheme used for extension pages - */ - Schemas.extension = 'extension'; - /** - * Scheme used as a replacement of `file` scheme to load - * files with our custom protocol handler (desktop only). - */ - Schemas.vscodeFileResource = 'vscode-file'; - /** - * Scheme used for temporary resources - */ - Schemas.tmp = 'tmp'; - /** - * Scheme used vs live share - */ - Schemas.vsls = 'vsls'; - /** - * Scheme used for the Source Control commit input's text document - */ - Schemas.vscodeSourceControl = 'vscode-scm'; - /** - * Scheme used for input box for creating comments. - */ - Schemas.commentsInput = 'comment'; - /** - * Scheme used for special rendering of settings in the release notes - */ - Schemas.codeSetting = 'code-setting'; - /** - * Scheme used for output panel resources - */ - Schemas.outputChannel = 'output'; - /** - * Scheme used for the accessible view - */ - Schemas.accessibleView = 'accessible-view'; -})(Schemas = Schemas || (Schemas = {})); -export function matchesScheme(target, scheme) { - if (URI.isUri(target)) { - return equalsIgnoreCase(target.scheme, scheme); - } - else { - return startsWithIgnoreCase(target, scheme + ':'); - } -} -export function matchesSomeScheme(target, ...schemes) { - return schemes.some(scheme => matchesScheme(target, scheme)); -} -export const connectionTokenCookieName = 'vscode-tkn'; -export const connectionTokenQueryName = 'tkn'; -class RemoteAuthoritiesImpl { - _hosts = Object.create(null); - _ports = Object.create(null); - _connectionTokens = Object.create(null); - _preferredWebSchema = 'http'; - _delegate = null; - _serverRootPath = '/'; - setPreferredWebSchema(schema) { - this._preferredWebSchema = schema; - } - setDelegate(delegate) { - this._delegate = delegate; - } - setServerRootPath(product, serverBasePath) { - this._serverRootPath = paths.posix.join(serverBasePath ?? '/', getServerProductSegment(product)); - } - getServerRootPath() { - return this._serverRootPath; - } - get _remoteResourcesPath() { - return paths.posix.join(this._serverRootPath, Schemas.vscodeRemoteResource); - } - set(authority, host, port) { - this._hosts[authority] = host; - this._ports[authority] = port; - } - setConnectionToken(authority, connectionToken) { - this._connectionTokens[authority] = connectionToken; - } - getPreferredWebSchema() { - return this._preferredWebSchema; - } - rewrite(uri) { - if (this._delegate) { - try { - return this._delegate(uri); - } - catch (err) { - errors.onUnexpectedError(err); - return uri; - } - } - const authority = uri.authority; - let host = this._hosts[authority]; - if (host && host.indexOf(':') !== -1 && host.indexOf('[') === -1) { - host = `[${host}]`; - } - const port = this._ports[authority]; - const connectionToken = this._connectionTokens[authority]; - let query = `path=${encodeURIComponent(uri.path)}`; - if (typeof connectionToken === 'string') { - query += `&${connectionTokenQueryName}=${encodeURIComponent(connectionToken)}`; - } - return URI.from({ - scheme: platform.isWeb ? this._preferredWebSchema : Schemas.vscodeRemoteResource, - authority: `${host}:${port}`, - path: this._remoteResourcesPath, - query - }); - } -} -export const RemoteAuthorities = new RemoteAuthoritiesImpl(); -export function getServerProductSegment(product) { - return `${product.quality ?? 'oss'}-${product.commit ?? 'dev'}`; -} -export const builtinExtensionsPath = 'vs/../../extensions'; -export const nodeModulesPath = 'vs/../../node_modules'; -export const nodeModulesAsarPath = 'vs/../../node_modules.asar'; -export const nodeModulesAsarUnpackedPath = 'vs/../../node_modules.asar.unpacked'; -export const VSCODE_AUTHORITY = 'vscode-app'; -class FileAccessImpl { - static FALLBACK_AUTHORITY = VSCODE_AUTHORITY; - /** - * Returns a URI to use in contexts where the browser is responsible - * for loading (e.g. fetch()) or when used within the DOM. - * - * **Note:** use `dom.ts#asCSSUrl` whenever the URL is to be used in CSS context. - */ - asBrowserUri(resourcePath) { - const uri = this.toUri(resourcePath); - return this.uriToBrowserUri(uri); - } - /** - * Returns a URI to use in contexts where the browser is responsible - * for loading (e.g. fetch()) or when used within the DOM. - * - * **Note:** use `dom.ts#asCSSUrl` whenever the URL is to be used in CSS context. - */ - uriToBrowserUri(uri) { - // Handle remote URIs via `RemoteAuthorities` - if (uri.scheme === Schemas.vscodeRemote) { - return RemoteAuthorities.rewrite(uri); - } - // Convert to `vscode-file` resource.. - if ( - // ...only ever for `file` resources - uri.scheme === Schemas.file && - ( - // ...and we run in native environments - platform.isNative || - // ...or web worker extensions on desktop - (platform.webWorkerOrigin === `${Schemas.vscodeFileResource}://${FileAccessImpl.FALLBACK_AUTHORITY}`))) { - return uri.with({ - scheme: Schemas.vscodeFileResource, - // We need to provide an authority here so that it can serve - // as origin for network and loading matters in chromium. - // If the URI is not coming with an authority already, we - // add our own - authority: uri.authority || FileAccessImpl.FALLBACK_AUTHORITY, - query: null, - fragment: null - }); - } - return uri; - } - /** - * Returns the `file` URI to use in contexts where node.js - * is responsible for loading. - */ - asFileUri(resourcePath) { - const uri = this.toUri(resourcePath); - return this.uriToFileUri(uri); - } - /** - * Returns the `file` URI to use in contexts where node.js - * is responsible for loading. - */ - uriToFileUri(uri) { - // Only convert the URI if it is `vscode-file:` scheme - if (uri.scheme === Schemas.vscodeFileResource) { - return uri.with({ - scheme: Schemas.file, - // Only preserve the `authority` if it is different from - // our fallback authority. This ensures we properly preserve - // Windows UNC paths that come with their own authority. - authority: uri.authority !== FileAccessImpl.FALLBACK_AUTHORITY ? uri.authority : null, - query: null, - fragment: null - }); - } - return uri; - } - toUri(uriOrModule, moduleIdToUrl) { - if (URI.isUri(uriOrModule)) { - return uriOrModule; - } - if (globalThis._VSCODE_FILE_ROOT) { - const rootUriOrPath = globalThis._VSCODE_FILE_ROOT; - // File URL (with scheme) - if (/^\w[\w\d+.-]*:\/\//.test(rootUriOrPath)) { - return URI.joinPath(URI.parse(rootUriOrPath, true), uriOrModule); - } - // File Path (no scheme) - const modulePath = paths.join(rootUriOrPath, uriOrModule); - return URI.file(modulePath); - } - return URI.parse(moduleIdToUrl.toUrl(uriOrModule)); - } -} -export const FileAccess = new FileAccessImpl(); -export var COI; -(function (COI) { - const coiHeaders = new Map([ - ['1', { 'Cross-Origin-Opener-Policy': 'same-origin' }], - ['2', { 'Cross-Origin-Embedder-Policy': 'require-corp' }], - ['3', { 'Cross-Origin-Opener-Policy': 'same-origin', 'Cross-Origin-Embedder-Policy': 'require-corp' }], - ]); - COI.CoopAndCoep = Object.freeze(coiHeaders.get('3')); - const coiSearchParamName = 'vscode-coi'; - /** - * Extract desired headers from `vscode-coi` invocation - */ - function getHeadersFromQuery(url) { - let params; - if (typeof url === 'string') { - params = new URL(url).searchParams; - } - else if (url instanceof URL) { - params = url.searchParams; - } - else if (URI.isUri(url)) { - params = new URL(url.toString(true)).searchParams; - } - const value = params?.get(coiSearchParamName); - if (!value) { - return undefined; - } - return coiHeaders.get(value); - } - COI.getHeadersFromQuery = getHeadersFromQuery; - /** - * Add the `vscode-coi` query attribute based on wanting `COOP` and `COEP`. Will be a noop when `crossOriginIsolated` - * isn't enabled the current context - */ - function addSearchParam(urlOrSearch, coop, coep) { - if (!globalThis.crossOriginIsolated) { - // depends on the current context being COI - return; - } - const value = coop && coep ? '3' : coep ? '2' : '1'; - if (urlOrSearch instanceof URLSearchParams) { - urlOrSearch.set(coiSearchParamName, value); - } - else { - urlOrSearch[coiSearchParamName] = value; - } - } - COI.addSearchParam = addSearchParam; -})(COI = COI || (COI = {})); +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +import * as errors from './errors.js'; +import * as platform from './platform.js'; +import { equalsIgnoreCase, startsWithIgnoreCase } from './strings.js'; +import { URI } from './uri.js'; +import * as paths from './path.js'; +export var Schemas; +(function (Schemas) { + /** + * A schema that is used for models that exist in memory + * only and that have no correspondence on a server or such. + */ + Schemas.inMemory = 'inmemory'; + /** + * A schema that is used for setting files + */ + Schemas.vscode = 'vscode'; + /** + * A schema that is used for internal private files + */ + Schemas.internal = 'private'; + /** + * A walk-through document. + */ + Schemas.walkThrough = 'walkThrough'; + /** + * An embedded code snippet. + */ + Schemas.walkThroughSnippet = 'walkThroughSnippet'; + Schemas.http = 'http'; + Schemas.https = 'https'; + Schemas.file = 'file'; + Schemas.mailto = 'mailto'; + Schemas.untitled = 'untitled'; + Schemas.data = 'data'; + Schemas.command = 'command'; + Schemas.vscodeRemote = 'vscode-remote'; + Schemas.vscodeRemoteResource = 'vscode-remote-resource'; + Schemas.vscodeManagedRemoteResource = 'vscode-managed-remote-resource'; + Schemas.vscodeUserData = 'vscode-userdata'; + Schemas.vscodeCustomEditor = 'vscode-custom-editor'; + Schemas.vscodeNotebookCell = 'vscode-notebook-cell'; + Schemas.vscodeNotebookCellMetadata = 'vscode-notebook-cell-metadata'; + Schemas.vscodeNotebookCellMetadataDiff = 'vscode-notebook-cell-metadata-diff'; + Schemas.vscodeNotebookCellOutput = 'vscode-notebook-cell-output'; + Schemas.vscodeNotebookCellOutputDiff = 'vscode-notebook-cell-output-diff'; + Schemas.vscodeNotebookMetadata = 'vscode-notebook-metadata'; + Schemas.vscodeInteractiveInput = 'vscode-interactive-input'; + Schemas.vscodeSettings = 'vscode-settings'; + Schemas.vscodeWorkspaceTrust = 'vscode-workspace-trust'; + Schemas.vscodeTerminal = 'vscode-terminal'; + /** Scheme used for code blocks in chat. */ + Schemas.vscodeChatCodeBlock = 'vscode-chat-code-block'; + /** Scheme used for LHS of code compare (aka diff) blocks in chat. */ + Schemas.vscodeChatCodeCompareBlock = 'vscode-chat-code-compare-block'; + /** Scheme used for the chat input editor. */ + Schemas.vscodeChatSesssion = 'vscode-chat-editor'; + /** + * Scheme used internally for webviews that aren't linked to a resource (i.e. not custom editors) + */ + Schemas.webviewPanel = 'webview-panel'; + /** + * Scheme used for loading the wrapper html and script in webviews. + */ + Schemas.vscodeWebview = 'vscode-webview'; + /** + * Scheme used for extension pages + */ + Schemas.extension = 'extension'; + /** + * Scheme used as a replacement of `file` scheme to load + * files with our custom protocol handler (desktop only). + */ + Schemas.vscodeFileResource = 'vscode-file'; + /** + * Scheme used for temporary resources + */ + Schemas.tmp = 'tmp'; + /** + * Scheme used vs live share + */ + Schemas.vsls = 'vsls'; + /** + * Scheme used for the Source Control commit input's text document + */ + Schemas.vscodeSourceControl = 'vscode-scm'; + /** + * Scheme used for input box for creating comments. + */ + Schemas.commentsInput = 'comment'; + /** + * Scheme used for special rendering of settings in the release notes + */ + Schemas.codeSetting = 'code-setting'; + /** + * Scheme used for output panel resources + */ + Schemas.outputChannel = 'output'; + /** + * Scheme used for the accessible view + */ + Schemas.accessibleView = 'accessible-view'; +})(Schemas || (Schemas = {})); +export function matchesScheme(target, scheme) { + if (URI.isUri(target)) { + return equalsIgnoreCase(target.scheme, scheme); + } + else { + return startsWithIgnoreCase(target, scheme + ':'); + } +} +export function matchesSomeScheme(target, ...schemes) { + return schemes.some(scheme => matchesScheme(target, scheme)); +} +export const connectionTokenCookieName = 'vscode-tkn'; +export const connectionTokenQueryName = 'tkn'; +class RemoteAuthoritiesImpl { + _hosts = Object.create(null); + _ports = Object.create(null); + _connectionTokens = Object.create(null); + _preferredWebSchema = 'http'; + _delegate = null; + _serverRootPath = '/'; + setPreferredWebSchema(schema) { + this._preferredWebSchema = schema; + } + setDelegate(delegate) { + this._delegate = delegate; + } + setServerRootPath(product, serverBasePath) { + this._serverRootPath = paths.posix.join(serverBasePath ?? '/', getServerProductSegment(product)); + } + getServerRootPath() { + return this._serverRootPath; + } + get _remoteResourcesPath() { + return paths.posix.join(this._serverRootPath, Schemas.vscodeRemoteResource); + } + set(authority, host, port) { + this._hosts[authority] = host; + this._ports[authority] = port; + } + setConnectionToken(authority, connectionToken) { + this._connectionTokens[authority] = connectionToken; + } + getPreferredWebSchema() { + return this._preferredWebSchema; + } + rewrite(uri) { + if (this._delegate) { + try { + return this._delegate(uri); + } + catch (err) { + errors.onUnexpectedError(err); + return uri; + } + } + const authority = uri.authority; + let host = this._hosts[authority]; + if (host && host.indexOf(':') !== -1 && host.indexOf('[') === -1) { + host = `[${host}]`; + } + const port = this._ports[authority]; + const connectionToken = this._connectionTokens[authority]; + let query = `path=${encodeURIComponent(uri.path)}`; + if (typeof connectionToken === 'string') { + query += `&${connectionTokenQueryName}=${encodeURIComponent(connectionToken)}`; + } + return URI.from({ + scheme: platform.isWeb ? this._preferredWebSchema : Schemas.vscodeRemoteResource, + authority: `${host}:${port}`, + path: this._remoteResourcesPath, + query + }); + } +} +export const RemoteAuthorities = new RemoteAuthoritiesImpl(); +export function getServerProductSegment(product) { + return `${product.quality ?? 'oss'}-${product.commit ?? 'dev'}`; +} +export const builtinExtensionsPath = 'vs/../../extensions'; +export const nodeModulesPath = 'vs/../../node_modules'; +export const nodeModulesAsarPath = 'vs/../../node_modules.asar'; +export const nodeModulesAsarUnpackedPath = 'vs/../../node_modules.asar.unpacked'; +export const VSCODE_AUTHORITY = 'vscode-app'; +class FileAccessImpl { + static FALLBACK_AUTHORITY = VSCODE_AUTHORITY; + /** + * Returns a URI to use in contexts where the browser is responsible + * for loading (e.g. fetch()) or when used within the DOM. + * + * **Note:** use `dom.ts#asCSSUrl` whenever the URL is to be used in CSS context. + */ + asBrowserUri(resourcePath) { + const uri = this.toUri(resourcePath); + return this.uriToBrowserUri(uri); + } + /** + * Returns a URI to use in contexts where the browser is responsible + * for loading (e.g. fetch()) or when used within the DOM. + * + * **Note:** use `dom.ts#asCSSUrl` whenever the URL is to be used in CSS context. + */ + uriToBrowserUri(uri) { + // Handle remote URIs via `RemoteAuthorities` + if (uri.scheme === Schemas.vscodeRemote) { + return RemoteAuthorities.rewrite(uri); + } + // Convert to `vscode-file` resource.. + if ( + // ...only ever for `file` resources + uri.scheme === Schemas.file && + ( + // ...and we run in native environments + platform.isNative || + // ...or web worker extensions on desktop + (platform.webWorkerOrigin === `${Schemas.vscodeFileResource}://${FileAccessImpl.FALLBACK_AUTHORITY}`))) { + return uri.with({ + scheme: Schemas.vscodeFileResource, + // We need to provide an authority here so that it can serve + // as origin for network and loading matters in chromium. + // If the URI is not coming with an authority already, we + // add our own + authority: uri.authority || FileAccessImpl.FALLBACK_AUTHORITY, + query: null, + fragment: null + }); + } + return uri; + } + /** + * Returns the `file` URI to use in contexts where node.js + * is responsible for loading. + */ + asFileUri(resourcePath) { + const uri = this.toUri(resourcePath); + return this.uriToFileUri(uri); + } + /** + * Returns the `file` URI to use in contexts where node.js + * is responsible for loading. + */ + uriToFileUri(uri) { + // Only convert the URI if it is `vscode-file:` scheme + if (uri.scheme === Schemas.vscodeFileResource) { + return uri.with({ + scheme: Schemas.file, + // Only preserve the `authority` if it is different from + // our fallback authority. This ensures we properly preserve + // Windows UNC paths that come with their own authority. + authority: uri.authority !== FileAccessImpl.FALLBACK_AUTHORITY ? uri.authority : null, + query: null, + fragment: null + }); + } + return uri; + } + toUri(uriOrModule, moduleIdToUrl) { + if (URI.isUri(uriOrModule)) { + return uriOrModule; + } + if (globalThis._VSCODE_FILE_ROOT) { + const rootUriOrPath = globalThis._VSCODE_FILE_ROOT; + // File URL (with scheme) + if (/^\w[\w\d+.-]*:\/\//.test(rootUriOrPath)) { + return URI.joinPath(URI.parse(rootUriOrPath, true), uriOrModule); + } + // File Path (no scheme) + const modulePath = paths.join(rootUriOrPath, uriOrModule); + return URI.file(modulePath); + } + return URI.parse(moduleIdToUrl.toUrl(uriOrModule)); + } +} +export const FileAccess = new FileAccessImpl(); +export var COI; +(function (COI) { + const coiHeaders = new Map([ + ['1', { 'Cross-Origin-Opener-Policy': 'same-origin' }], + ['2', { 'Cross-Origin-Embedder-Policy': 'require-corp' }], + ['3', { 'Cross-Origin-Opener-Policy': 'same-origin', 'Cross-Origin-Embedder-Policy': 'require-corp' }], + ]); + COI.CoopAndCoep = Object.freeze(coiHeaders.get('3')); + const coiSearchParamName = 'vscode-coi'; + /** + * Extract desired headers from `vscode-coi` invocation + */ + function getHeadersFromQuery(url) { + let params; + if (typeof url === 'string') { + params = new URL(url).searchParams; + } + else if (url instanceof URL) { + params = url.searchParams; + } + else if (URI.isUri(url)) { + params = new URL(url.toString(true)).searchParams; + } + const value = params?.get(coiSearchParamName); + if (!value) { + return undefined; + } + return coiHeaders.get(value); + } + COI.getHeadersFromQuery = getHeadersFromQuery; + /** + * Add the `vscode-coi` query attribute based on wanting `COOP` and `COEP`. Will be a noop when `crossOriginIsolated` + * isn't enabled the current context + */ + function addSearchParam(urlOrSearch, coop, coep) { + if (!globalThis.crossOriginIsolated) { + // depends on the current context being COI + return; + } + const value = coop && coep ? '3' : coep ? '2' : '1'; + if (urlOrSearch instanceof URLSearchParams) { + urlOrSearch.set(coiSearchParamName, value); + } + else { + urlOrSearch[coiSearchParamName] = value; + } + } + COI.addSearchParam = addSearchParam; +})(COI || (COI = {})); //# sourceMappingURL=network.js.map \ No newline at end of file diff --git a/packages/core/dist/network.js.map b/packages/core/dist/network.js.map index 5eaf56a2..2f9b7720 100644 --- a/packages/core/dist/network.js.map +++ b/packages/core/dist/network.js.map @@ -1 +1 @@ -{"version":3,"file":"network.js","sourceRoot":"","sources":["../src/network.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"network.js","sourceRoot":"","sources":["../src/network.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACtE,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,KAAK,KAAK,MAAM,WAAW,CAAC;AAEnC,MAAM,KAAW,OAAO,CAkIvB;AAlID,WAAiB,OAAO;IAEvB;;;OAGG;IACU,gBAAQ,GAAG,UAAU,CAAC;IAEnC;;OAEG;IACU,cAAM,GAAG,QAAQ,CAAC;IAE/B;;OAEG;IACU,gBAAQ,GAAG,SAAS,CAAC;IAElC;;OAEG;IACU,mBAAW,GAAG,aAAa,CAAC;IAEzC;;OAEG;IACU,0BAAkB,GAAG,oBAAoB,CAAC;IAE1C,YAAI,GAAG,MAAM,CAAC;IAEd,aAAK,GAAG,OAAO,CAAC;IAEhB,YAAI,GAAG,MAAM,CAAC;IAEd,cAAM,GAAG,QAAQ,CAAC;IAElB,gBAAQ,GAAG,UAAU,CAAC;IAEtB,YAAI,GAAG,MAAM,CAAC;IAEd,eAAO,GAAG,SAAS,CAAC;IAEpB,oBAAY,GAAG,eAAe,CAAC;IAE/B,4BAAoB,GAAG,wBAAwB,CAAC;IAEhD,mCAA2B,GAAG,gCAAgC,CAAC;IAE/D,sBAAc,GAAG,iBAAiB,CAAC;IAEnC,0BAAkB,GAAG,sBAAsB,CAAC;IAE5C,0BAAkB,GAAG,sBAAsB,CAAC;IAC5C,kCAA0B,GAAG,+BAA+B,CAAC;IAC7D,sCAA8B,GAAG,oCAAoC,CAAC;IACtE,gCAAwB,GAAG,6BAA6B,CAAC;IACzD,oCAA4B,GAAG,kCAAkC,CAAC;IAClE,8BAAsB,GAAG,0BAA0B,CAAC;IACpD,8BAAsB,GAAG,0BAA0B,CAAC;IAEpD,sBAAc,GAAG,iBAAiB,CAAC;IAEnC,4BAAoB,GAAG,wBAAwB,CAAC;IAEhD,sBAAc,GAAG,iBAAiB,CAAC;IAEhD,2CAA2C;IAC9B,2BAAmB,GAAG,wBAAwB,CAAC;IAE5D,qEAAqE;IACxD,kCAA0B,GAAG,gCAAgC,CAAC;IAE3E,6CAA6C;IAChC,0BAAkB,GAAG,oBAAoB,CAAC;IAEvD;;OAEG;IACU,oBAAY,GAAG,eAAe,CAAC;IAE5C;;OAEG;IACU,qBAAa,GAAG,gBAAgB,CAAC;IAE9C;;OAEG;IACU,iBAAS,GAAG,WAAW,CAAC;IAErC;;;OAGG;IACU,0BAAkB,GAAG,aAAa,CAAC;IAEhD;;OAEG;IACU,WAAG,GAAG,KAAK,CAAC;IAEzB;;OAEG;IACU,YAAI,GAAG,MAAM,CAAC;IAE3B;;OAEG;IACU,2BAAmB,GAAG,YAAY,CAAC;IAEhD;;OAEG;IACU,qBAAa,GAAG,SAAS,CAAC;IAEvC;;OAEG;IACU,mBAAW,GAAG,cAAc,CAAC;IAE1C;;OAEG;IACU,qBAAa,GAAG,QAAQ,CAAC;IAEtC;;OAEG;IACU,sBAAc,GAAG,iBAAiB,CAAC;AACjD,CAAC,EAlIgB,OAAO,KAAP,OAAO,QAkIvB;AAED,MAAM,UAAU,aAAa,CAAC,MAAoB,EAAE,MAAc;IACjE,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;QACvB,OAAO,gBAAgB,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChD,CAAC;SAAM,CAAC;QACP,OAAO,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,CAAC,CAAC;IACnD,CAAC;AACF,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,MAAoB,EAAE,GAAG,OAAiB;IAC3E,OAAO,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AAC9D,CAAC;AAED,MAAM,CAAC,MAAM,yBAAyB,GAAG,YAAY,CAAC;AACtD,MAAM,CAAC,MAAM,wBAAwB,GAAG,KAAK,CAAC;AAE9C,MAAM,qBAAqB;IACT,MAAM,GAAgD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC1E,MAAM,GAAgD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC1E,iBAAiB,GAAgD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC9F,mBAAmB,GAAqB,MAAM,CAAC;IAC/C,SAAS,GAA+B,IAAI,CAAC;IAC7C,eAAe,GAAW,GAAG,CAAC;IAEtC,qBAAqB,CAAC,MAAwB;QAC7C,IAAI,CAAC,mBAAmB,GAAG,MAAM,CAAC;IACnC,CAAC;IAED,WAAW,CAAC,QAA2B;QACtC,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED,iBAAiB,CAAC,OAA8C,EAAE,cAAkC;QACnG,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,IAAI,GAAG,EAAE,uBAAuB,CAAC,OAAO,CAAC,CAAC,CAAC;IAClG,CAAC;IAED,iBAAiB;QAChB,OAAO,IAAI,CAAC,eAAe,CAAC;IAC7B,CAAC;IAED,IAAY,oBAAoB;QAC/B,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAC7E,CAAC;IAED,GAAG,CAAC,SAAiB,EAAE,IAAY,EAAE,IAAY;QAChD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;QAC9B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;IAC/B,CAAC;IAED,kBAAkB,CAAC,SAAiB,EAAE,eAAuB;QAC5D,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,GAAG,eAAe,CAAC;IACrD,CAAC;IAED,qBAAqB;QACpB,OAAO,IAAI,CAAC,mBAAmB,CAAC;IACjC,CAAC;IAED,OAAO,CAAC,GAAQ;QACf,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,IAAI,CAAC;gBACJ,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YAC5B,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACd,MAAM,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;gBAC9B,OAAO,GAAG,CAAC;YACZ,CAAC;QACF,CAAC;QACD,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC;QAChC,IAAI,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAClC,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;YAClE,IAAI,GAAG,IAAI,IAAI,GAAG,CAAC;QACpB,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACpC,MAAM,eAAe,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAC1D,IAAI,KAAK,GAAG,QAAQ,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QACnD,IAAI,OAAO,eAAe,KAAK,QAAQ,EAAE,CAAC;YACzC,KAAK,IAAI,IAAI,wBAAwB,IAAI,kBAAkB,CAAC,eAAe,CAAC,EAAE,CAAC;QAChF,CAAC;QACD,OAAO,GAAG,CAAC,IAAI,CAAC;YACf,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,OAAO,CAAC,oBAAoB;YAChF,SAAS,EAAE,GAAG,IAAI,IAAI,IAAI,EAAE;YAC5B,IAAI,EAAE,IAAI,CAAC,oBAAoB;YAC/B,KAAK;SACL,CAAC,CAAC;IACJ,CAAC;CACD;AAED,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,qBAAqB,EAAE,CAAC;AAE7D,MAAM,UAAU,uBAAuB,CAAC,OAA8C;IACrF,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,KAAK,IAAI,OAAO,CAAC,MAAM,IAAI,KAAK,EAAE,CAAC;AACjE,CAAC;AAaD,MAAM,CAAC,MAAM,qBAAqB,GAAoB,qBAAqB,CAAC;AAC5E,MAAM,CAAC,MAAM,eAAe,GAAoB,uBAAuB,CAAC;AACxE,MAAM,CAAC,MAAM,mBAAmB,GAAoB,4BAA4B,CAAC;AACjF,MAAM,CAAC,MAAM,2BAA2B,GAAoB,qCAAqC,CAAC;AAElG,MAAM,CAAC,MAAM,gBAAgB,GAAG,YAAY,CAAC;AAE7C,MAAM,cAAc;IAEX,MAAM,CAAU,kBAAkB,GAAG,gBAAgB,CAAC;IAE9D;;;;;OAKG;IACH,YAAY,CAAC,YAAkC;QAC9C,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QACrC,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;IAClC,CAAC;IAED;;;;;OAKG;IACH,eAAe,CAAC,GAAQ;QACvB,6CAA6C;QAC7C,IAAI,GAAG,CAAC,MAAM,KAAK,OAAO,CAAC,YAAY,EAAE,CAAC;YACzC,OAAO,iBAAiB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACvC,CAAC;QAED,sCAAsC;QACtC;QACC,oCAAoC;QACpC,GAAG,CAAC,MAAM,KAAK,OAAO,CAAC,IAAI;YAC3B;YACC,uCAAuC;YACvC,QAAQ,CAAC,QAAQ;gBACjB,yCAAyC;gBACzC,CAAC,QAAQ,CAAC,eAAe,KAAK,GAAG,OAAO,CAAC,kBAAkB,MAAM,cAAc,CAAC,kBAAkB,EAAE,CAAC,CACrG,EACA,CAAC;YACF,OAAO,GAAG,CAAC,IAAI,CAAC;gBACf,MAAM,EAAE,OAAO,CAAC,kBAAkB;gBAClC,4DAA4D;gBAC5D,yDAAyD;gBACzD,yDAAyD;gBACzD,cAAc;gBACd,SAAS,EAAE,GAAG,CAAC,SAAS,IAAI,cAAc,CAAC,kBAAkB;gBAC7D,KAAK,EAAE,IAAI;gBACX,QAAQ,EAAE,IAAI;aACd,CAAC,CAAC;QACJ,CAAC;QAED,OAAO,GAAG,CAAC;IACZ,CAAC;IAED;;;OAGG;IACH,SAAS,CAAC,YAAkC;QAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QACrC,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC;IAED;;;OAGG;IACH,YAAY,CAAC,GAAQ;QACpB,sDAAsD;QACtD,IAAI,GAAG,CAAC,MAAM,KAAK,OAAO,CAAC,kBAAkB,EAAE,CAAC;YAC/C,OAAO,GAAG,CAAC,IAAI,CAAC;gBACf,MAAM,EAAE,OAAO,CAAC,IAAI;gBACpB,wDAAwD;gBACxD,4DAA4D;gBAC5D,wDAAwD;gBACxD,SAAS,EAAE,GAAG,CAAC,SAAS,KAAK,cAAc,CAAC,kBAAkB,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI;gBACrF,KAAK,EAAE,IAAI;gBACX,QAAQ,EAAE,IAAI;aACd,CAAC,CAAC;QACJ,CAAC;QAED,OAAO,GAAG,CAAC;IACZ,CAAC;IAEO,KAAK,CAAC,WAAyB,EAAE,aAAmD;QAC3F,IAAI,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;YAC5B,OAAO,WAAW,CAAC;QACpB,CAAC;QAED,IAAI,UAAU,CAAC,iBAAiB,EAAE,CAAC;YAClC,MAAM,aAAa,GAAG,UAAU,CAAC,iBAAiB,CAAC;YAEnD,yBAAyB;YACzB,IAAI,oBAAoB,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;gBAC9C,OAAO,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,EAAE,IAAI,CAAC,EAAE,WAAW,CAAC,CAAC;YAClE,CAAC;YAED,wBAAwB;YACxB,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;YAC1D,OAAO,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC7B,CAAC;QAED,OAAO,GAAG,CAAC,KAAK,CAAC,aAAc,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;IACrD,CAAC;;AAGF,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,cAAc,EAAE,CAAC;AAG/C,MAAM,KAAW,GAAG,CA+CnB;AA/CD,WAAiB,GAAG;IAEnB,MAAM,UAAU,GAAG,IAAI,GAAG,CAAmD;QAC5E,CAAC,GAAG,EAAE,EAAE,4BAA4B,EAAE,aAAa,EAAE,CAAC;QACtD,CAAC,GAAG,EAAE,EAAE,8BAA8B,EAAE,cAAc,EAAE,CAAC;QACzD,CAAC,GAAG,EAAE,EAAE,4BAA4B,EAAE,aAAa,EAAE,8BAA8B,EAAE,cAAc,EAAE,CAAC;KACtG,CAAC,CAAC;IAEU,eAAW,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IAE9D,MAAM,kBAAkB,GAAG,YAAY,CAAC;IAExC;;OAEG;IACH,SAAgB,mBAAmB,CAAC,GAAuB;QAC1D,IAAI,MAAmC,CAAC;QACxC,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC7B,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC;QACpC,CAAC;aAAM,IAAI,GAAG,YAAY,GAAG,EAAE,CAAC;YAC/B,MAAM,GAAG,GAAG,CAAC,YAAY,CAAC;QAC3B,CAAC;aAAM,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;YAC3B,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC;QACnD,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,EAAE,GAAG,CAAC,kBAAkB,CAAC,CAAC;QAC9C,IAAI,CAAC,KAAK,EAAE,CAAC;YACZ,OAAO,SAAS,CAAC;QAClB,CAAC;QACD,OAAO,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;IAde,uBAAmB,sBAclC,CAAA;IAED;;;OAGG;IACH,SAAgB,cAAc,CAAC,WAAqD,EAAE,IAAa,EAAE,IAAa;QACjH,IAAI,CAAO,UAAW,CAAC,mBAAmB,EAAE,CAAC;YAC5C,2CAA2C;YAC3C,OAAO;QACR,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QACpD,IAAI,WAAW,YAAY,eAAe,EAAE,CAAC;YAC5C,WAAW,CAAC,GAAG,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;QAC5C,CAAC;aAAM,CAAC;YACkB,WAAY,CAAC,kBAAkB,CAAC,GAAG,KAAK,CAAC;QACnE,CAAC;IACF,CAAC;IAXe,kBAAc,iBAW7B,CAAA;AACF,CAAC,EA/CgB,GAAG,KAAH,GAAG,QA+CnB"} \ No newline at end of file diff --git a/packages/core/dist/nls.d.ts b/packages/core/dist/nls.d.ts index 99ed9160..c49a1cba 100644 --- a/packages/core/dist/nls.d.ts +++ b/packages/core/dist/nls.d.ts @@ -1,142 +1,142 @@ -export { getNLSLanguage, getNLSMessages } from './nls.messages.js'; -export interface ILocalizeInfo { - key: string; - comment: string[]; -} -export interface ILocalizedString { - original: string; - value: string; -} -/** - * Marks a string to be localized. Returns the localized string. - * - * @param info The {@linkcode ILocalizeInfo} which describes the id and comments associated with the localized string. - * @param message The string to localize - * @param args The arguments to the string - * - * @note `message` can contain `{n}` notation where it is replaced by the nth value in `...args` - * @example `localize({ key: 'sayHello', comment: ['Welcomes user'] }, 'hello {0}', name)` - * - * @returns string The localized string. - */ -export declare function localize(info: ILocalizeInfo, message: string, ...args: (string | number | boolean | undefined | null)[]): string; -/** - * Marks a string to be localized. Returns the localized string. - * - * @param key The key to use for localizing the string - * @param message The string to localize - * @param args The arguments to the string - * - * @note `message` can contain `{n}` notation where it is replaced by the nth value in `...args` - * @example For example, `localize('sayHello', 'hello {0}', name)` - * - * @returns string The localized string. - */ -export declare function localize(key: string, message: string, ...args: (string | number | boolean | undefined | null)[]): string; -/** - * Marks a string to be localized. Returns an {@linkcode ILocalizedString} - * which contains the localized string and the original string. - * - * @param info The {@linkcode ILocalizeInfo} which describes the id and comments associated with the localized string. - * @param message The string to localize - * @param args The arguments to the string - * - * @note `message` can contain `{n}` notation where it is replaced by the nth value in `...args` - * @example `localize2({ key: 'sayHello', comment: ['Welcomes user'] }, 'hello {0}', name)` - * - * @returns ILocalizedString which contains the localized string and the original string. - */ -export declare function localize2(info: ILocalizeInfo, message: string, ...args: (string | number | boolean | undefined | null)[]): ILocalizedString; -/** - * Marks a string to be localized. Returns an {@linkcode ILocalizedString} - * which contains the localized string and the original string. - * - * @param key The key to use for localizing the string - * @param message The string to localize - * @param args The arguments to the string - * - * @note `message` can contain `{n}` notation where it is replaced by the nth value in `...args` - * @example `localize('sayHello', 'hello {0}', name)` - * - * @returns ILocalizedString which contains the localized string and the original string. - */ -export declare function localize2(key: string, message: string, ...args: (string | number | boolean | undefined | null)[]): ILocalizedString; -export interface INLSLanguagePackConfiguration { - /** - * The path to the translations config file that contains pointers to - * all message bundles for `main` and extensions. - */ - readonly translationsConfigFile: string; - /** - * The path to the file containing the translations for this language - * pack as flat string array. - */ - readonly messagesFile: string; - /** - * The path to the file that can be used to signal a corrupt language - * pack, for example when reading the `messagesFile` fails. This will - * instruct the application to re-create the cache on next startup. - */ - readonly corruptMarkerFile: string; -} -export interface INLSConfiguration { - /** - * Locale as defined in `argv.json` or `app.getLocale()`. - */ - readonly userLocale: string; - /** - * Locale as defined by the OS (e.g. `app.getPreferredSystemLanguages()`). - */ - readonly osLocale: string; - /** - * The actual language of the UI that ends up being used considering `userLocale` - * and `osLocale`. - */ - readonly resolvedLanguage: string; - /** - * Defined if a language pack is used that is not the - * default english language pack. This requires a language - * pack to be installed as extension. - */ - readonly languagePack?: INLSLanguagePackConfiguration; - /** - * The path to the file containing the default english messages - * as flat string array. The file is only present in built - * versions of the application. - */ - readonly defaultMessagesFile: string; - /** - * Below properties are deprecated and only there to continue support - * for `vscode-nls` module that depends on them. - * Refs https://github.com/microsoft/vscode-nls/blob/main/src/node/main.ts#L36-L46 - */ - /** @deprecated */ - readonly locale: string; - /** @deprecated */ - readonly availableLanguages: Record; - /** @deprecated */ - readonly _languagePackSupport?: boolean; - /** @deprecated */ - readonly _languagePackId?: string; - /** @deprecated */ - readonly _translationsConfigFile?: string; - /** @deprecated */ - readonly _cacheRoot?: string; - /** @deprecated */ - readonly _resolvedLanguagePackCoreLocation?: string; - /** @deprecated */ - readonly _corruptedFile?: string; -} -export interface ILanguagePack { - readonly hash: string; - readonly label: string | undefined; - readonly extensions: { - readonly extensionIdentifier: { - readonly id: string; - readonly uuid?: string; - }; - readonly version: string; - }[]; - readonly translations: Record; -} -export type ILanguagePacks = Record; +export { getNLSLanguage, getNLSMessages } from './nls.messages.js'; +export interface ILocalizeInfo { + key: string; + comment: string[]; +} +export interface ILocalizedString { + original: string; + value: string; +} +/** + * Marks a string to be localized. Returns the localized string. + * + * @param info The {@linkcode ILocalizeInfo} which describes the id and comments associated with the localized string. + * @param message The string to localize + * @param args The arguments to the string + * + * @note `message` can contain `{n}` notation where it is replaced by the nth value in `...args` + * @example `localize({ key: 'sayHello', comment: ['Welcomes user'] }, 'hello {0}', name)` + * + * @returns string The localized string. + */ +export declare function localize(info: ILocalizeInfo, message: string, ...args: (string | number | boolean | undefined | null)[]): string; +/** + * Marks a string to be localized. Returns the localized string. + * + * @param key The key to use for localizing the string + * @param message The string to localize + * @param args The arguments to the string + * + * @note `message` can contain `{n}` notation where it is replaced by the nth value in `...args` + * @example For example, `localize('sayHello', 'hello {0}', name)` + * + * @returns string The localized string. + */ +export declare function localize(key: string, message: string, ...args: (string | number | boolean | undefined | null)[]): string; +/** + * Marks a string to be localized. Returns an {@linkcode ILocalizedString} + * which contains the localized string and the original string. + * + * @param info The {@linkcode ILocalizeInfo} which describes the id and comments associated with the localized string. + * @param message The string to localize + * @param args The arguments to the string + * + * @note `message` can contain `{n}` notation where it is replaced by the nth value in `...args` + * @example `localize2({ key: 'sayHello', comment: ['Welcomes user'] }, 'hello {0}', name)` + * + * @returns ILocalizedString which contains the localized string and the original string. + */ +export declare function localize2(info: ILocalizeInfo, message: string, ...args: (string | number | boolean | undefined | null)[]): ILocalizedString; +/** + * Marks a string to be localized. Returns an {@linkcode ILocalizedString} + * which contains the localized string and the original string. + * + * @param key The key to use for localizing the string + * @param message The string to localize + * @param args The arguments to the string + * + * @note `message` can contain `{n}` notation where it is replaced by the nth value in `...args` + * @example `localize('sayHello', 'hello {0}', name)` + * + * @returns ILocalizedString which contains the localized string and the original string. + */ +export declare function localize2(key: string, message: string, ...args: (string | number | boolean | undefined | null)[]): ILocalizedString; +export interface INLSLanguagePackConfiguration { + /** + * The path to the translations config file that contains pointers to + * all message bundles for `main` and extensions. + */ + readonly translationsConfigFile: string; + /** + * The path to the file containing the translations for this language + * pack as flat string array. + */ + readonly messagesFile: string; + /** + * The path to the file that can be used to signal a corrupt language + * pack, for example when reading the `messagesFile` fails. This will + * instruct the application to re-create the cache on next startup. + */ + readonly corruptMarkerFile: string; +} +export interface INLSConfiguration { + /** + * Locale as defined in `argv.json` or `app.getLocale()`. + */ + readonly userLocale: string; + /** + * Locale as defined by the OS (e.g. `app.getPreferredSystemLanguages()`). + */ + readonly osLocale: string; + /** + * The actual language of the UI that ends up being used considering `userLocale` + * and `osLocale`. + */ + readonly resolvedLanguage: string; + /** + * Defined if a language pack is used that is not the + * default english language pack. This requires a language + * pack to be installed as extension. + */ + readonly languagePack?: INLSLanguagePackConfiguration; + /** + * The path to the file containing the default english messages + * as flat string array. The file is only present in built + * versions of the application. + */ + readonly defaultMessagesFile: string; + /** + * Below properties are deprecated and only there to continue support + * for `vscode-nls` module that depends on them. + * Refs https://github.com/microsoft/vscode-nls/blob/main/src/node/main.ts#L36-L46 + */ + /** @deprecated */ + readonly locale: string; + /** @deprecated */ + readonly availableLanguages: Record; + /** @deprecated */ + readonly _languagePackSupport?: boolean; + /** @deprecated */ + readonly _languagePackId?: string; + /** @deprecated */ + readonly _translationsConfigFile?: string; + /** @deprecated */ + readonly _cacheRoot?: string; + /** @deprecated */ + readonly _resolvedLanguagePackCoreLocation?: string; + /** @deprecated */ + readonly _corruptedFile?: string; +} +export interface ILanguagePack { + readonly hash: string; + readonly label: string | undefined; + readonly extensions: { + readonly extensionIdentifier: { + readonly id: string; + readonly uuid?: string; + }; + readonly version: string; + }[]; + readonly translations: Record; +} +export type ILanguagePacks = Record; diff --git a/packages/core/dist/nls.js b/packages/core/dist/nls.js index c7289444..7b63ffee 100644 --- a/packages/core/dist/nls.js +++ b/packages/core/dist/nls.js @@ -1,76 +1,76 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ -// eslint-disable-next-line local/code-import-patterns -import { getNLSLanguage, getNLSMessages } from './nls.messages.js'; -// eslint-disable-next-line local/code-import-patterns -export { getNLSLanguage, getNLSMessages } from './nls.messages.js'; -const isPseudo = getNLSLanguage() === 'pseudo' || (typeof document !== 'undefined' && document.location && typeof document.location.hash === 'string' && document.location.hash.indexOf('pseudo=true') >= 0); -function _format(message, args) { - let result; - if (args.length === 0) { - result = message; - } - else { - result = message.replace(/\{(\d+)\}/g, (match, rest) => { - const index = rest[0]; - const arg = args[index]; - let result = match; - if (typeof arg === 'string') { - result = arg; - } - else if (typeof arg === 'number' || typeof arg === 'boolean' || arg === void 0 || arg === null) { - result = String(arg); - } - return result; - }); - } - if (isPseudo) { - // FF3B and FF3D is the Unicode zenkaku representation for [ and ] - result = '\uFF3B' + result.replace(/[aouei]/g, '$&$&') + '\uFF3D'; - } - return result; -} -/** - * @skipMangle - */ -export function localize(data /* | number when built */, message /* | null when built */, ...args) { - if (typeof data === 'number') { - return _format(lookupMessage(data, message), args); - } - return _format(message, args); -} -/** - * Only used when built: Looks up the message in the global NLS table. - * This table is being made available as a global through bootstrapping - * depending on the target context. - */ -function lookupMessage(index, fallback) { - const message = getNLSMessages()?.[index]; - if (typeof message !== 'string') { - if (typeof fallback === 'string') { - return fallback; - } - throw new Error(`!!! NLS MISSING: ${index} !!!`); - } - return message; -} -/** - * @skipMangle - */ -export function localize2(data /* | number when built */, originalMessage, ...args) { - let message; - if (typeof data === 'number') { - message = lookupMessage(data, originalMessage); - } - else { - message = originalMessage; - } - const value = _format(message, args); - return { - value, - original: originalMessage === message ? value : _format(originalMessage, args) - }; -} +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +// eslint-disable-next-line local/code-import-patterns +import { getNLSLanguage, getNLSMessages } from './nls.messages.js'; +// eslint-disable-next-line local/code-import-patterns +export { getNLSLanguage, getNLSMessages } from './nls.messages.js'; +const isPseudo = getNLSLanguage() === 'pseudo' || (typeof document !== 'undefined' && document.location && typeof document.location.hash === 'string' && document.location.hash.indexOf('pseudo=true') >= 0); +function _format(message, args) { + let result; + if (args.length === 0) { + result = message; + } + else { + result = message.replace(/\{(\d+)\}/g, (match, rest) => { + const index = rest[0]; + const arg = args[index]; + let result = match; + if (typeof arg === 'string') { + result = arg; + } + else if (typeof arg === 'number' || typeof arg === 'boolean' || arg === void 0 || arg === null) { + result = String(arg); + } + return result; + }); + } + if (isPseudo) { + // FF3B and FF3D is the Unicode zenkaku representation for [ and ] + result = '\uFF3B' + result.replace(/[aouei]/g, '$&$&') + '\uFF3D'; + } + return result; +} +/** + * @skipMangle + */ +export function localize(data /* | number when built */, message /* | null when built */, ...args) { + if (typeof data === 'number') { + return _format(lookupMessage(data, message), args); + } + return _format(message, args); +} +/** + * Only used when built: Looks up the message in the global NLS table. + * This table is being made available as a global through bootstrapping + * depending on the target context. + */ +function lookupMessage(index, fallback) { + const message = getNLSMessages()?.[index]; + if (typeof message !== 'string') { + if (typeof fallback === 'string') { + return fallback; + } + throw new Error(`!!! NLS MISSING: ${index} !!!`); + } + return message; +} +/** + * @skipMangle + */ +export function localize2(data /* | number when built */, originalMessage, ...args) { + let message; + if (typeof data === 'number') { + message = lookupMessage(data, originalMessage); + } + else { + message = originalMessage; + } + const value = _format(message, args); + return { + value, + original: originalMessage === message ? value : _format(originalMessage, args) + }; +} //# sourceMappingURL=nls.js.map \ No newline at end of file diff --git a/packages/core/dist/nls.js.map b/packages/core/dist/nls.js.map index ef09ad53..d6231c56 100644 --- a/packages/core/dist/nls.js.map +++ b/packages/core/dist/nls.js.map @@ -1 +1 @@ -{"version":3,"file":"nls.js","sourceRoot":"","sources":["../src/nls.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"nls.js","sourceRoot":"","sources":["../src/nls.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/dist/nls.messages.d.ts b/packages/core/dist/nls.messages.d.ts index b8f9ac84..e9ee76b4 100644 --- a/packages/core/dist/nls.messages.d.ts +++ b/packages/core/dist/nls.messages.d.ts @@ -1,2 +1,2 @@ -export declare function getNLSMessages(): string[]; -export declare function getNLSLanguage(): string | undefined; +export declare function getNLSMessages(): string[]; +export declare function getNLSLanguage(): string | undefined; diff --git a/packages/core/dist/nls.messages.js b/packages/core/dist/nls.messages.js index 008a5f00..44349459 100644 --- a/packages/core/dist/nls.messages.js +++ b/packages/core/dist/nls.messages.js @@ -1,17 +1,17 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ -/* - * This module exists so that the AMD build of the monaco editor can replace this with an async loader plugin. - * If you add new functions to this module make sure that they are also provided in the AMD build of the monaco editor. - * - * TODO@esm remove me once we no longer ship an AMD build. - */ -export function getNLSMessages() { - return globalThis._VSCODE_NLS_MESSAGES; -} -export function getNLSLanguage() { - return globalThis._VSCODE_NLS_LANGUAGE; -} +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +/* + * This module exists so that the AMD build of the monaco editor can replace this with an async loader plugin. + * If you add new functions to this module make sure that they are also provided in the AMD build of the monaco editor. + * + * TODO@esm remove me once we no longer ship an AMD build. + */ +export function getNLSMessages() { + return globalThis._VSCODE_NLS_MESSAGES; +} +export function getNLSLanguage() { + return globalThis._VSCODE_NLS_LANGUAGE; +} //# sourceMappingURL=nls.messages.js.map \ No newline at end of file diff --git a/packages/core/dist/objects.d.ts b/packages/core/dist/objects.d.ts index b722a516..db4aac85 100644 --- a/packages/core/dist/objects.d.ts +++ b/packages/core/dist/objects.d.ts @@ -1,38 +1,38 @@ -export declare function deepClone(obj: T): T; -export declare function deepFreeze(obj: T): T; -export declare function cloneAndChange(obj: any, changer: (orig: any) => any): any; -/** - * Copies all properties of source into destination. The optional parameter "overwrite" allows to control - * if existing properties on the destination should be overwritten or not. Defaults to true (overwrite). - */ -export declare function mixin(destination: any, source: any, overwrite?: boolean): any; -export declare function equals(one: any, other: any): boolean; -/** - * Calls `JSON.Stringify` with a replacer to break apart any circular references. - * This prevents `JSON`.stringify` from throwing the exception - * "Uncaught TypeError: Converting circular structure to JSON" - */ -export declare function safeStringify(obj: any): string; -type obj = { - [key: string]: any; -}; -/** - * Returns an object that has keys for each value that is different in the base object. Keys - * that do not exist in the target but in the base object are not considered. - * - * Note: This is not a deep-diffing method, so the values are strictly taken into the resulting - * object if they differ. - * - * @param base the object to diff against - * @param obj the object to use for diffing - */ -export declare function distinct(base: obj, target: obj): obj; -export declare function getCaseInsensitive(target: obj, key: string): unknown; -export declare function filter(obj: obj, predicate: (key: string, value: any) => boolean): obj; -export declare function getAllPropertyNames(obj: object): string[]; -export declare function getAllMethodNames(obj: object): string[]; -export declare function createProxyObject(methodNames: string[], invoke: (method: string, args: unknown[]) => unknown): T; -export declare function mapValues(obj: T, fn: (value: T[keyof T], key: string) => R): { - [K in keyof T]: R; -}; -export {}; +export declare function deepClone(obj: T): T; +export declare function deepFreeze(obj: T): T; +export declare function cloneAndChange(obj: any, changer: (orig: any) => any): any; +/** + * Copies all properties of source into destination. The optional parameter "overwrite" allows to control + * if existing properties on the destination should be overwritten or not. Defaults to true (overwrite). + */ +export declare function mixin(destination: any, source: any, overwrite?: boolean): any; +export declare function equals(one: any, other: any): boolean; +/** + * Calls `JSON.Stringify` with a replacer to break apart any circular references. + * This prevents `JSON`.stringify` from throwing the exception + * "Uncaught TypeError: Converting circular structure to JSON" + */ +export declare function safeStringify(obj: any): string; +type obj = { + [key: string]: any; +}; +/** + * Returns an object that has keys for each value that is different in the base object. Keys + * that do not exist in the target but in the base object are not considered. + * + * Note: This is not a deep-diffing method, so the values are strictly taken into the resulting + * object if they differ. + * + * @param base the object to diff against + * @param obj the object to use for diffing + */ +export declare function distinct(base: obj, target: obj): obj; +export declare function getCaseInsensitive(target: obj, key: string): unknown; +export declare function filter(obj: obj, predicate: (key: string, value: any) => boolean): obj; +export declare function getAllPropertyNames(obj: object): string[]; +export declare function getAllMethodNames(obj: object): string[]; +export declare function createProxyObject(methodNames: string[], invoke: (method: string, args: unknown[]) => unknown): T; +export declare function mapValues(obj: T, fn: (value: T[keyof T], key: string) => R): { + [K in keyof T]: R; +}; +export {}; diff --git a/packages/core/dist/objects.js b/packages/core/dist/objects.js index 394f4ef0..cdda168e 100644 --- a/packages/core/dist/objects.js +++ b/packages/core/dist/objects.js @@ -1,249 +1,249 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ -import { isTypedArray, isObject, isUndefinedOrNull } from './primitives.js'; -export function deepClone(obj) { - if (!obj || typeof obj !== 'object') { - return obj; - } - if (obj instanceof RegExp) { - return obj; - } - const result = Array.isArray(obj) ? [] : {}; - Object.entries(obj).forEach(([key, value]) => { - result[key] = value && typeof value === 'object' ? deepClone(value) : value; - }); - return result; -} -export function deepFreeze(obj) { - if (!obj || typeof obj !== 'object') { - return obj; - } - const stack = [obj]; - while (stack.length > 0) { - const obj = stack.shift(); - Object.freeze(obj); - for (const key in obj) { - if (_hasOwnProperty.call(obj, key)) { - const prop = obj[key]; - if (typeof prop === 'object' && !Object.isFrozen(prop) && !isTypedArray(prop)) { - stack.push(prop); - } - } - } - } - return obj; -} -const _hasOwnProperty = Object.prototype.hasOwnProperty; -export function cloneAndChange(obj, changer) { - return _cloneAndChange(obj, changer, new Set()); -} -function _cloneAndChange(obj, changer, seen) { - if (isUndefinedOrNull(obj)) { - return obj; - } - const changed = changer(obj); - if (typeof changed !== 'undefined') { - return changed; - } - if (Array.isArray(obj)) { - const r1 = []; - for (const e of obj) { - r1.push(_cloneAndChange(e, changer, seen)); - } - return r1; - } - if (isObject(obj)) { - if (seen.has(obj)) { - throw new Error('Cannot clone recursive data-structure'); - } - seen.add(obj); - const r2 = {}; - for (const i2 in obj) { - if (_hasOwnProperty.call(obj, i2)) { - r2[i2] = _cloneAndChange(obj[i2], changer, seen); - } - } - seen.delete(obj); - return r2; - } - return obj; -} -/** - * Copies all properties of source into destination. The optional parameter "overwrite" allows to control - * if existing properties on the destination should be overwritten or not. Defaults to true (overwrite). - */ -export function mixin(destination, source, overwrite = true) { - if (!isObject(destination)) { - return source; - } - if (isObject(source)) { - Object.keys(source).forEach(key => { - if (key in destination) { - if (overwrite) { - if (isObject(destination[key]) && isObject(source[key])) { - mixin(destination[key], source[key], overwrite); - } - else { - destination[key] = source[key]; - } - } - } - else { - destination[key] = source[key]; - } - }); - } - return destination; -} -export function equals(one, other) { - if (one === other) { - return true; - } - if (one === null || one === undefined || other === null || other === undefined) { - return false; - } - if (typeof one !== typeof other) { - return false; - } - if (typeof one !== 'object') { - return false; - } - if ((Array.isArray(one)) !== (Array.isArray(other))) { - return false; - } - let i; - let key; - if (Array.isArray(one)) { - if (one.length !== other.length) { - return false; - } - for (i = 0; i < one.length; i++) { - if (!equals(one[i], other[i])) { - return false; - } - } - } - else { - const oneKeys = []; - for (key in one) { - oneKeys.push(key); - } - oneKeys.sort(); - const otherKeys = []; - for (key in other) { - otherKeys.push(key); - } - otherKeys.sort(); - if (!equals(oneKeys, otherKeys)) { - return false; - } - for (i = 0; i < oneKeys.length; i++) { - if (!equals(one[oneKeys[i]], other[oneKeys[i]])) { - return false; - } - } - } - return true; -} -/** - * Calls `JSON.Stringify` with a replacer to break apart any circular references. - * This prevents `JSON`.stringify` from throwing the exception - * "Uncaught TypeError: Converting circular structure to JSON" - */ -export function safeStringify(obj) { - const seen = new Set(); - return JSON.stringify(obj, (key, value) => { - if (isObject(value) || Array.isArray(value)) { - if (seen.has(value)) { - return '[Circular]'; - } - else { - seen.add(value); - } - } - if (typeof value === 'bigint') { - return `[BigInt ${value.toString()}]`; - } - return value; - }); -} -/** - * Returns an object that has keys for each value that is different in the base object. Keys - * that do not exist in the target but in the base object are not considered. - * - * Note: This is not a deep-diffing method, so the values are strictly taken into the resulting - * object if they differ. - * - * @param base the object to diff against - * @param obj the object to use for diffing - */ -export function distinct(base, target) { - const result = Object.create(null); - if (!base || !target) { - return result; - } - const targetKeys = Object.keys(target); - targetKeys.forEach(k => { - const baseValue = base[k]; - const targetValue = target[k]; - if (!equals(baseValue, targetValue)) { - result[k] = targetValue; - } - }); - return result; -} -export function getCaseInsensitive(target, key) { - const lowercaseKey = key.toLowerCase(); - const equivalentKey = Object.keys(target).find(k => k.toLowerCase() === lowercaseKey); - return equivalentKey ? target[equivalentKey] : target[key]; -} -export function filter(obj, predicate) { - const result = Object.create(null); - for (const [key, value] of Object.entries(obj)) { - if (predicate(key, value)) { - result[key] = value; - } - } - return result; -} -export function getAllPropertyNames(obj) { - let res = []; - while (Object.prototype !== obj) { - res = res.concat(Object.getOwnPropertyNames(obj)); - obj = Object.getPrototypeOf(obj); - } - return res; -} -export function getAllMethodNames(obj) { - const methods = []; - for (const prop of getAllPropertyNames(obj)) { - if (typeof obj[prop] === 'function') { - methods.push(prop); - } - } - return methods; -} -export function createProxyObject(methodNames, invoke) { - const createProxyMethod = (method) => { - return function () { - const args = Array.prototype.slice.call(arguments, 0); - return invoke(method, args); - }; - }; - // eslint-disable-next-line local/code-no-dangerous-type-assertions - const result = {}; - for (const methodName of methodNames) { - result[methodName] = createProxyMethod(methodName); - } - return result; -} -export function mapValues(obj, fn) { - const result = {}; - for (const [key, value] of Object.entries(obj)) { - result[key] = fn(value, key); - } - return result; -} +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +import { isTypedArray, isObject, isUndefinedOrNull } from './primitives.js'; +export function deepClone(obj) { + if (!obj || typeof obj !== 'object') { + return obj; + } + if (obj instanceof RegExp) { + return obj; + } + const result = Array.isArray(obj) ? [] : {}; + Object.entries(obj).forEach(([key, value]) => { + result[key] = value && typeof value === 'object' ? deepClone(value) : value; + }); + return result; +} +export function deepFreeze(obj) { + if (!obj || typeof obj !== 'object') { + return obj; + } + const stack = [obj]; + while (stack.length > 0) { + const obj = stack.shift(); + Object.freeze(obj); + for (const key in obj) { + if (_hasOwnProperty.call(obj, key)) { + const prop = obj[key]; + if (typeof prop === 'object' && !Object.isFrozen(prop) && !isTypedArray(prop)) { + stack.push(prop); + } + } + } + } + return obj; +} +const _hasOwnProperty = Object.prototype.hasOwnProperty; +export function cloneAndChange(obj, changer) { + return _cloneAndChange(obj, changer, new Set()); +} +function _cloneAndChange(obj, changer, seen) { + if (isUndefinedOrNull(obj)) { + return obj; + } + const changed = changer(obj); + if (typeof changed !== 'undefined') { + return changed; + } + if (Array.isArray(obj)) { + const r1 = []; + for (const e of obj) { + r1.push(_cloneAndChange(e, changer, seen)); + } + return r1; + } + if (isObject(obj)) { + if (seen.has(obj)) { + throw new Error('Cannot clone recursive data-structure'); + } + seen.add(obj); + const r2 = {}; + for (const i2 in obj) { + if (_hasOwnProperty.call(obj, i2)) { + r2[i2] = _cloneAndChange(obj[i2], changer, seen); + } + } + seen.delete(obj); + return r2; + } + return obj; +} +/** + * Copies all properties of source into destination. The optional parameter "overwrite" allows to control + * if existing properties on the destination should be overwritten or not. Defaults to true (overwrite). + */ +export function mixin(destination, source, overwrite = true) { + if (!isObject(destination)) { + return source; + } + if (isObject(source)) { + Object.keys(source).forEach(key => { + if (key in destination) { + if (overwrite) { + if (isObject(destination[key]) && isObject(source[key])) { + mixin(destination[key], source[key], overwrite); + } + else { + destination[key] = source[key]; + } + } + } + else { + destination[key] = source[key]; + } + }); + } + return destination; +} +export function equals(one, other) { + if (one === other) { + return true; + } + if (one === null || one === undefined || other === null || other === undefined) { + return false; + } + if (typeof one !== typeof other) { + return false; + } + if (typeof one !== 'object') { + return false; + } + if ((Array.isArray(one)) !== (Array.isArray(other))) { + return false; + } + let i; + let key; + if (Array.isArray(one)) { + if (one.length !== other.length) { + return false; + } + for (i = 0; i < one.length; i++) { + if (!equals(one[i], other[i])) { + return false; + } + } + } + else { + const oneKeys = []; + for (key in one) { + oneKeys.push(key); + } + oneKeys.sort(); + const otherKeys = []; + for (key in other) { + otherKeys.push(key); + } + otherKeys.sort(); + if (!equals(oneKeys, otherKeys)) { + return false; + } + for (i = 0; i < oneKeys.length; i++) { + if (!equals(one[oneKeys[i]], other[oneKeys[i]])) { + return false; + } + } + } + return true; +} +/** + * Calls `JSON.Stringify` with a replacer to break apart any circular references. + * This prevents `JSON`.stringify` from throwing the exception + * "Uncaught TypeError: Converting circular structure to JSON" + */ +export function safeStringify(obj) { + const seen = new Set(); + return JSON.stringify(obj, (key, value) => { + if (isObject(value) || Array.isArray(value)) { + if (seen.has(value)) { + return '[Circular]'; + } + else { + seen.add(value); + } + } + if (typeof value === 'bigint') { + return `[BigInt ${value.toString()}]`; + } + return value; + }); +} +/** + * Returns an object that has keys for each value that is different in the base object. Keys + * that do not exist in the target but in the base object are not considered. + * + * Note: This is not a deep-diffing method, so the values are strictly taken into the resulting + * object if they differ. + * + * @param base the object to diff against + * @param obj the object to use for diffing + */ +export function distinct(base, target) { + const result = Object.create(null); + if (!base || !target) { + return result; + } + const targetKeys = Object.keys(target); + targetKeys.forEach(k => { + const baseValue = base[k]; + const targetValue = target[k]; + if (!equals(baseValue, targetValue)) { + result[k] = targetValue; + } + }); + return result; +} +export function getCaseInsensitive(target, key) { + const lowercaseKey = key.toLowerCase(); + const equivalentKey = Object.keys(target).find(k => k.toLowerCase() === lowercaseKey); + return equivalentKey ? target[equivalentKey] : target[key]; +} +export function filter(obj, predicate) { + const result = Object.create(null); + for (const [key, value] of Object.entries(obj)) { + if (predicate(key, value)) { + result[key] = value; + } + } + return result; +} +export function getAllPropertyNames(obj) { + let res = []; + while (Object.prototype !== obj) { + res = res.concat(Object.getOwnPropertyNames(obj)); + obj = Object.getPrototypeOf(obj); + } + return res; +} +export function getAllMethodNames(obj) { + const methods = []; + for (const prop of getAllPropertyNames(obj)) { + if (typeof obj[prop] === 'function') { + methods.push(prop); + } + } + return methods; +} +export function createProxyObject(methodNames, invoke) { + const createProxyMethod = (method) => { + return function () { + const args = Array.prototype.slice.call(arguments, 0); + return invoke(method, args); + }; + }; + // eslint-disable-next-line local/code-no-dangerous-type-assertions + const result = {}; + for (const methodName of methodNames) { + result[methodName] = createProxyMethod(methodName); + } + return result; +} +export function mapValues(obj, fn) { + const result = {}; + for (const [key, value] of Object.entries(obj)) { + result[key] = fn(value, key); + } + return result; +} //# sourceMappingURL=objects.js.map \ No newline at end of file diff --git a/packages/core/dist/objects.js.map b/packages/core/dist/objects.js.map index f7139885..4b0d5d56 100644 --- a/packages/core/dist/objects.js.map +++ b/packages/core/dist/objects.js.map @@ -1 +1 @@ -{"version":3,"file":"objects.js","sourceRoot":"","sources":["../src/objects.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"objects.js","sourceRoot":"","sources":["../src/objects.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAE5E,MAAM,UAAU,SAAS,CAAI,GAAM;IAClC,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QACrC,OAAO,GAAG,CAAC;IACZ,CAAC;IACD,IAAI,GAAG,YAAY,MAAM,EAAE,CAAC;QAC3B,OAAO,GAAG,CAAC;IACZ,CAAC;IACD,MAAM,MAAM,GAAQ,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACjD,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;QAC5C,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAC7E,CAAC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AACf,CAAC;AAED,MAAM,UAAU,UAAU,CAAI,GAAM;IACnC,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QACrC,OAAO,GAAG,CAAC;IACZ,CAAC;IACD,MAAM,KAAK,GAAU,CAAC,GAAG,CAAC,CAAC;IAC3B,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;QAC1B,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACnB,KAAK,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;YACvB,IAAI,eAAe,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC;gBACpC,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;gBACtB,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC/E,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAClB,CAAC;YACF,CAAC;QACF,CAAC;IACF,CAAC;IACD,OAAO,GAAG,CAAC;AACZ,CAAC;AAED,MAAM,eAAe,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC;AAGxD,MAAM,UAAU,cAAc,CAAC,GAAQ,EAAE,OAA2B;IACnE,OAAO,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;AACjD,CAAC;AAED,SAAS,eAAe,CAAC,GAAQ,EAAE,OAA2B,EAAE,IAAc;IAC7E,IAAI,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5B,OAAO,GAAG,CAAC;IACZ,CAAC;IAED,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAC7B,IAAI,OAAO,OAAO,KAAK,WAAW,EAAE,CAAC;QACpC,OAAO,OAAO,CAAC;IAChB,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,EAAE,GAAU,EAAE,CAAC;QACrB,KAAK,MAAM,CAAC,IAAI,GAAG,EAAE,CAAC;YACrB,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;QAC5C,CAAC;QACD,OAAO,EAAE,CAAC;IACX,CAAC;IAED,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACnB,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAC1D,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACd,MAAM,EAAE,GAAG,EAAE,CAAC;QACd,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;YACtB,IAAI,eAAe,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC;gBAClC,EAAU,CAAC,EAAE,CAAC,GAAG,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;YAC3D,CAAC;QACF,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjB,OAAO,EAAE,CAAC;IACX,CAAC;IAED,OAAO,GAAG,CAAC;AACZ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,KAAK,CAAC,WAAgB,EAAE,MAAW,EAAE,YAAqB,IAAI;IAC7E,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QAC5B,OAAO,MAAM,CAAC;IACf,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACtB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YACjC,IAAI,GAAG,IAAI,WAAW,EAAE,CAAC;gBACxB,IAAI,SAAS,EAAE,CAAC;oBACf,IAAI,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;wBACzD,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC,CAAC;oBACjD,CAAC;yBAAM,CAAC;wBACP,WAAW,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;oBAChC,CAAC;gBACF,CAAC;YACF,CAAC;iBAAM,CAAC;gBACP,WAAW,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;YAChC,CAAC;QACF,CAAC,CAAC,CAAC;IACJ,CAAC;IACD,OAAO,WAAW,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,GAAQ,EAAE,KAAU;IAC1C,IAAI,GAAG,KAAK,KAAK,EAAE,CAAC;QACnB,OAAO,IAAI,CAAC;IACb,CAAC;IACD,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QAChF,OAAO,KAAK,CAAC;IACd,CAAC;IACD,IAAI,OAAO,GAAG,KAAK,OAAO,KAAK,EAAE,CAAC;QACjC,OAAO,KAAK,CAAC;IACd,CAAC;IACD,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC7B,OAAO,KAAK,CAAC;IACd,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QACrD,OAAO,KAAK,CAAC;IACd,CAAC;IAED,IAAI,CAAS,CAAC;IACd,IAAI,GAAW,CAAC;IAEhB,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,EAAE,CAAC;YACjC,OAAO,KAAK,CAAC;QACd,CAAC;QACD,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACjC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC/B,OAAO,KAAK,CAAC;YACd,CAAC;QACF,CAAC;IACF,CAAC;SAAM,CAAC;QACP,MAAM,OAAO,GAAa,EAAE,CAAC;QAE7B,KAAK,GAAG,IAAI,GAAG,EAAE,CAAC;YACjB,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC;QACD,OAAO,CAAC,IAAI,EAAE,CAAC;QACf,MAAM,SAAS,GAAa,EAAE,CAAC;QAC/B,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC;YACnB,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACrB,CAAC;QACD,SAAS,CAAC,IAAI,EAAE,CAAC;QACjB,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,CAAC;YACjC,OAAO,KAAK,CAAC;QACd,CAAC;QACD,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACrC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACjD,OAAO,KAAK,CAAC;YACd,CAAC;QACF,CAAC;IACF,CAAC;IACD,OAAO,IAAI,CAAC;AACb,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,GAAQ;IACrC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAO,CAAC;IAC5B,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;QACzC,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAC7C,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBACrB,OAAO,YAAY,CAAC;YACrB,CAAC;iBAAM,CAAC;gBACP,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACjB,CAAC;QACF,CAAC;QACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC/B,OAAO,WAAW,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC;QACvC,CAAC;QACD,OAAO,KAAK,CAAC;IACd,CAAC,CAAC,CAAC;AACJ,CAAC;AAGD;;;;;;;;;GASG;AACH,MAAM,UAAU,QAAQ,CAAC,IAAS,EAAE,MAAW;IAC9C,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAEnC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QACtB,OAAO,MAAM,CAAC;IACf,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACvC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;QACtB,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAC1B,MAAM,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QAE9B,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC,EAAE,CAAC;YACrC,MAAM,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC;QACzB,CAAC;IACF,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AACf,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,MAAW,EAAE,GAAW;IAC1D,MAAM,YAAY,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;IACvC,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,YAAY,CAAC,CAAC;IACtF,OAAO,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,GAAQ,EAAE,SAA+C;IAC/E,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACnC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAChD,IAAI,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC;YAC3B,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACrB,CAAC;IACF,CAAC;IACD,OAAO,MAAM,CAAC;AACf,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,GAAW;IAC9C,IAAI,GAAG,GAAa,EAAE,CAAC;IACvB,OAAO,MAAM,CAAC,SAAS,KAAK,GAAG,EAAE,CAAC;QACjC,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC;QAClD,GAAG,GAAG,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;IAClC,CAAC;IACD,OAAO,GAAG,CAAC;AACZ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,GAAW;IAC5C,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,MAAM,IAAI,IAAI,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7C,IAAI,OAAQ,GAAW,CAAC,IAAI,CAAC,KAAK,UAAU,EAAE,CAAC;YAC9C,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpB,CAAC;IACF,CAAC;IACD,OAAO,OAAO,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAmB,WAAqB,EAAE,MAAoD;IAC9H,MAAM,iBAAiB,GAAG,CAAC,MAAc,EAAiB,EAAE;QAC3D,OAAO;YACN,MAAM,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;YACtD,OAAO,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC7B,CAAC,CAAC;IACH,CAAC,CAAC;IAEF,mEAAmE;IACnE,MAAM,MAAM,GAAG,EAAO,CAAC;IACvB,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;QAChC,MAAO,CAAC,UAAU,CAAC,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;IAC3D,CAAC;IACD,OAAO,MAAM,CAAC;AACf,CAAC;AAED,MAAM,UAAU,SAAS,CAAkB,GAAM,EAAE,EAAyC;IAC3F,MAAM,MAAM,GAAyB,EAAE,CAAC;IACxC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAChD,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAa,KAAK,EAAE,GAAG,CAAC,CAAC;IAC1C,CAAC;IACD,OAAO,MAA+B,CAAC;AACxC,CAAC"} \ No newline at end of file diff --git a/packages/core/dist/observable.d.ts b/packages/core/dist/observable.d.ts index ab10390c..8df759d7 100644 --- a/packages/core/dist/observable.d.ts +++ b/packages/core/dist/observable.d.ts @@ -1 +1 @@ -export * from './observableInternal/index.js'; +export * from './observableInternal/index.js'; diff --git a/packages/core/dist/observable.js b/packages/core/dist/observable.js index d4320aff..d1ac5722 100644 --- a/packages/core/dist/observable.js +++ b/packages/core/dist/observable.js @@ -1,7 +1,7 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ -// This is a facade for the observable implementation. Only import from here! -export * from './observableInternal/index.js'; +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +// This is a facade for the observable implementation. Only import from here! +export * from './observableInternal/index.js'; //# sourceMappingURL=observable.js.map \ No newline at end of file diff --git a/packages/core/dist/observableInternal/api.d.ts b/packages/core/dist/observableInternal/api.d.ts index 5d086cba..0d1a6d95 100644 --- a/packages/core/dist/observableInternal/api.d.ts +++ b/packages/core/dist/observableInternal/api.d.ts @@ -1,7 +1,7 @@ -import { ISettableObservable } from './base.js'; -import { IDebugNameData } from './debugName.js'; -import { EqualityComparer } from './commonFacade/deps.js'; -export declare function observableValueOpts(options: IDebugNameData & { - equalsFn?: EqualityComparer; - lazy?: boolean; -}, initialValue: T): ISettableObservable; +import { ISettableObservable } from './base.js'; +import { IDebugNameData } from './debugName.js'; +import { EqualityComparer } from './commonFacade/deps.js'; +export declare function observableValueOpts(options: IDebugNameData & { + equalsFn?: EqualityComparer; + lazy?: boolean; +}, initialValue: T): ISettableObservable; diff --git a/packages/core/dist/observableInternal/api.js b/packages/core/dist/observableInternal/api.js index 8b31e011..e22fb7bc 100644 --- a/packages/core/dist/observableInternal/api.js +++ b/packages/core/dist/observableInternal/api.js @@ -1,15 +1,15 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ -import { ObservableValue } from './base.js'; -import { DebugNameData } from './debugName.js'; -import { strictEquals } from './commonFacade/deps.js'; -import { LazyObservableValue } from './lazyObservableValue.js'; -export function observableValueOpts(options, initialValue) { - if (options.lazy) { - return new LazyObservableValue(new DebugNameData(options.owner, options.debugName, undefined), initialValue, options.equalsFn ?? strictEquals); - } - return new ObservableValue(new DebugNameData(options.owner, options.debugName, undefined), initialValue, options.equalsFn ?? strictEquals); -} +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +import { ObservableValue } from './base.js'; +import { DebugNameData } from './debugName.js'; +import { strictEquals } from './commonFacade/deps.js'; +import { LazyObservableValue } from './lazyObservableValue.js'; +export function observableValueOpts(options, initialValue) { + if (options.lazy) { + return new LazyObservableValue(new DebugNameData(options.owner, options.debugName, undefined), initialValue, options.equalsFn ?? strictEquals); + } + return new ObservableValue(new DebugNameData(options.owner, options.debugName, undefined), initialValue, options.equalsFn ?? strictEquals); +} //# sourceMappingURL=api.js.map \ No newline at end of file diff --git a/packages/core/dist/observableInternal/api.js.map b/packages/core/dist/observableInternal/api.js.map index b7b574ad..4c0702ce 100644 --- a/packages/core/dist/observableInternal/api.js.map +++ b/packages/core/dist/observableInternal/api.js.map @@ -1 +1 @@ -{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/observableInternal/api.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,EAAuB,eAAe,EAAE,MAAM,WAAW,CAAC;AACjE,OAAO,EAAE,aAAa,EAAkB,MAAM,gBAAgB,CAAC;AAC/D,OAAO,EAAoB,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,MAAM,UAAU,mBAAmB,CAClC,OAGC,EACD,YAAe;IAEf,IAAI,OAAO,CAAC,IAAI,EAAE;QACjB,OAAO,IAAI,mBAAmB,CAC7B,IAAI,aAAa,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,EAC9D,YAAY,EACZ,OAAO,CAAC,QAAQ,IAAI,YAAY,CAChC,CAAC;KACF;IACD,OAAO,IAAI,eAAe,CACzB,IAAI,aAAa,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,EAC9D,YAAY,EACZ,OAAO,CAAC,QAAQ,IAAI,YAAY,CAChC,CAAC;AACH,CAAC"} \ No newline at end of file +{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/observableInternal/api.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,EAAuB,eAAe,EAAE,MAAM,WAAW,CAAC;AACjE,OAAO,EAAE,aAAa,EAAkB,MAAM,gBAAgB,CAAC;AAC/D,OAAO,EAAoB,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,MAAM,UAAU,mBAAmB,CAClC,OAGC,EACD,YAAe;IAEf,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QAClB,OAAO,IAAI,mBAAmB,CAC7B,IAAI,aAAa,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,EAC9D,YAAY,EACZ,OAAO,CAAC,QAAQ,IAAI,YAAY,CAChC,CAAC;IACH,CAAC;IACD,OAAO,IAAI,eAAe,CACzB,IAAI,aAAa,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,EAC9D,YAAY,EACZ,OAAO,CAAC,QAAQ,IAAI,YAAY,CAChC,CAAC;AACH,CAAC"} \ No newline at end of file diff --git a/packages/core/dist/observableInternal/autorun.d.ts b/packages/core/dist/observableInternal/autorun.d.ts index 3d86e0e1..29a3dc01 100644 --- a/packages/core/dist/observableInternal/autorun.d.ts +++ b/packages/core/dist/observableInternal/autorun.d.ts @@ -1,73 +1,73 @@ -import { IChangeContext, IObservable, IObservableWithChange, IObserver, IReader } from './base.js'; -import { DebugNameData, IDebugNameData } from './debugName.js'; -import { DisposableStore, IDisposable } from './commonFacade/deps.js'; -/** - * Runs immediately and whenever a transaction ends and an observed observable changed. - * {@link fn} should start with a JS Doc using `@description` to name the autorun. - */ -export declare function autorun(fn: (reader: IReader) => void): IDisposable; -/** - * Runs immediately and whenever a transaction ends and an observed observable changed. - * {@link fn} should start with a JS Doc using `@description` to name the autorun. - */ -export declare function autorunOpts(options: IDebugNameData & {}, fn: (reader: IReader) => void): IDisposable; -/** - * Runs immediately and whenever a transaction ends and an observed observable changed. - * {@link fn} should start with a JS Doc using `@description` to name the autorun. - * - * Use `createEmptyChangeSummary` to create a "change summary" that can collect the changes. - * Use `handleChange` to add a reported change to the change summary. - * The run function is given the last change summary. - * The change summary is discarded after the run function was called. - * - * @see autorun - */ -export declare function autorunHandleChanges(options: IDebugNameData & { - createEmptyChangeSummary?: () => TChangeSummary; - handleChange: (context: IChangeContext, changeSummary: TChangeSummary) => boolean; -}, fn: (reader: IReader, changeSummary: TChangeSummary) => void): IDisposable; -/** - * @see autorunHandleChanges (but with a disposable store that is cleared before the next run or on dispose) - */ -export declare function autorunWithStoreHandleChanges(options: IDebugNameData & { - createEmptyChangeSummary?: () => TChangeSummary; - handleChange: (context: IChangeContext, changeSummary: TChangeSummary) => boolean; -}, fn: (reader: IReader, changeSummary: TChangeSummary, store: DisposableStore) => void): IDisposable; -/** - * @see autorun (but with a disposable store that is cleared before the next run or on dispose) - */ -export declare function autorunWithStore(fn: (reader: IReader, store: DisposableStore) => void): IDisposable; -export declare function autorunDelta(observable: IObservable, handler: (args: { - lastValue: T | undefined; - newValue: T; -}) => void): IDisposable; -export declare function autorunIterableDelta(getValue: (reader: IReader) => Iterable, handler: (args: { - addedValues: T[]; - removedValues: T[]; -}) => void, getUniqueIdentifier?: (value: T) => unknown): IDisposable; -export declare class AutorunObserver implements IObserver, IReader, IDisposable { - readonly _debugNameData: DebugNameData; - readonly _runFn: (reader: IReader, changeSummary: TChangeSummary) => void; - private readonly createChangeSummary; - private readonly _handleChange; - private state; - private updateCount; - private disposed; - private dependencies; - private dependenciesToBeRemoved; - private changeSummary; - get debugName(): string; - constructor(_debugNameData: DebugNameData, _runFn: (reader: IReader, changeSummary: TChangeSummary) => void, createChangeSummary: (() => TChangeSummary) | undefined, _handleChange: ((context: IChangeContext, summary: TChangeSummary) => boolean) | undefined); - dispose(): void; - private _runIfNeeded; - toString(): string; - beginUpdate(): void; - endUpdate(): void; - handlePossibleChange(observable: IObservable): void; - handleChange(observable: IObservableWithChange, change: TChange): void; - private _isReaderValid; - readObservable(observable: IObservable): T; -} -export declare namespace autorun { - const Observer: typeof AutorunObserver; -} +import { IChangeContext, IObservable, IObservableWithChange, IObserver, IReader } from './base.js'; +import { DebugNameData, IDebugNameData } from './debugName.js'; +import { DisposableStore, IDisposable } from './commonFacade/deps.js'; +/** + * Runs immediately and whenever a transaction ends and an observed observable changed. + * {@link fn} should start with a JS Doc using `@description` to name the autorun. + */ +export declare function autorun(fn: (reader: IReader) => void): IDisposable; +/** + * Runs immediately and whenever a transaction ends and an observed observable changed. + * {@link fn} should start with a JS Doc using `@description` to name the autorun. + */ +export declare function autorunOpts(options: IDebugNameData & {}, fn: (reader: IReader) => void): IDisposable; +/** + * Runs immediately and whenever a transaction ends and an observed observable changed. + * {@link fn} should start with a JS Doc using `@description` to name the autorun. + * + * Use `createEmptyChangeSummary` to create a "change summary" that can collect the changes. + * Use `handleChange` to add a reported change to the change summary. + * The run function is given the last change summary. + * The change summary is discarded after the run function was called. + * + * @see autorun + */ +export declare function autorunHandleChanges(options: IDebugNameData & { + createEmptyChangeSummary?: () => TChangeSummary; + handleChange: (context: IChangeContext, changeSummary: TChangeSummary) => boolean; +}, fn: (reader: IReader, changeSummary: TChangeSummary) => void): IDisposable; +/** + * @see autorunHandleChanges (but with a disposable store that is cleared before the next run or on dispose) + */ +export declare function autorunWithStoreHandleChanges(options: IDebugNameData & { + createEmptyChangeSummary?: () => TChangeSummary; + handleChange: (context: IChangeContext, changeSummary: TChangeSummary) => boolean; +}, fn: (reader: IReader, changeSummary: TChangeSummary, store: DisposableStore) => void): IDisposable; +/** + * @see autorun (but with a disposable store that is cleared before the next run or on dispose) + */ +export declare function autorunWithStore(fn: (reader: IReader, store: DisposableStore) => void): IDisposable; +export declare function autorunDelta(observable: IObservable, handler: (args: { + lastValue: T | undefined; + newValue: T; +}) => void): IDisposable; +export declare function autorunIterableDelta(getValue: (reader: IReader) => Iterable, handler: (args: { + addedValues: T[]; + removedValues: T[]; +}) => void, getUniqueIdentifier?: (value: T) => unknown): IDisposable; +export declare class AutorunObserver implements IObserver, IReader, IDisposable { + readonly _debugNameData: DebugNameData; + readonly _runFn: (reader: IReader, changeSummary: TChangeSummary) => void; + private readonly createChangeSummary; + private readonly _handleChange; + private state; + private updateCount; + private disposed; + private dependencies; + private dependenciesToBeRemoved; + private changeSummary; + get debugName(): string; + constructor(_debugNameData: DebugNameData, _runFn: (reader: IReader, changeSummary: TChangeSummary) => void, createChangeSummary: (() => TChangeSummary) | undefined, _handleChange: ((context: IChangeContext, summary: TChangeSummary) => boolean) | undefined); + dispose(): void; + private _runIfNeeded; + toString(): string; + beginUpdate(): void; + endUpdate(): void; + handlePossibleChange(observable: IObservable): void; + handleChange(observable: IObservableWithChange, change: TChange): void; + private _isReaderValid; + readObservable(observable: IObservable): T; +} +export declare namespace autorun { + const Observer: typeof AutorunObserver; +} diff --git a/packages/core/dist/observableInternal/autorun.js b/packages/core/dist/observableInternal/autorun.js index 44f15071..abac9c61 100644 --- a/packages/core/dist/observableInternal/autorun.js +++ b/packages/core/dist/observableInternal/autorun.js @@ -1,264 +1,264 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ -import { DebugNameData } from './debugName.js'; -import { assertFn, BugIndicatingError, DisposableStore, markAsDisposed, onBugIndicatingError, toDisposable, trackDisposable } from './commonFacade/deps.js'; -import { getLogger } from './logging.js'; -/** - * Runs immediately and whenever a transaction ends and an observed observable changed. - * {@link fn} should start with a JS Doc using `@description` to name the autorun. - */ -export function autorun(fn) { - return new AutorunObserver(new DebugNameData(undefined, undefined, fn), fn, undefined, undefined); -} -/** - * Runs immediately and whenever a transaction ends and an observed observable changed. - * {@link fn} should start with a JS Doc using `@description` to name the autorun. - */ -export function autorunOpts(options, fn) { - return new AutorunObserver(new DebugNameData(options.owner, options.debugName, options.debugReferenceFn ?? fn), fn, undefined, undefined); -} -/** - * Runs immediately and whenever a transaction ends and an observed observable changed. - * {@link fn} should start with a JS Doc using `@description` to name the autorun. - * - * Use `createEmptyChangeSummary` to create a "change summary" that can collect the changes. - * Use `handleChange` to add a reported change to the change summary. - * The run function is given the last change summary. - * The change summary is discarded after the run function was called. - * - * @see autorun - */ -export function autorunHandleChanges(options, fn) { - return new AutorunObserver(new DebugNameData(options.owner, options.debugName, options.debugReferenceFn ?? fn), fn, options.createEmptyChangeSummary, options.handleChange); -} -/** - * @see autorunHandleChanges (but with a disposable store that is cleared before the next run or on dispose) - */ -export function autorunWithStoreHandleChanges(options, fn) { - const store = new DisposableStore(); - const disposable = autorunHandleChanges({ - owner: options.owner, - debugName: options.debugName, - debugReferenceFn: options.debugReferenceFn ?? fn, - createEmptyChangeSummary: options.createEmptyChangeSummary, - handleChange: options.handleChange, - }, (reader, changeSummary) => { - store.clear(); - fn(reader, changeSummary, store); - }); - return toDisposable(() => { - disposable.dispose(); - store.dispose(); - }); -} -/** - * @see autorun (but with a disposable store that is cleared before the next run or on dispose) - */ -export function autorunWithStore(fn) { - const store = new DisposableStore(); - const disposable = autorunOpts({ - owner: undefined, - debugName: undefined, - debugReferenceFn: fn, - }, reader => { - store.clear(); - fn(reader, store); - }); - return toDisposable(() => { - disposable.dispose(); - store.dispose(); - }); -} -export function autorunDelta(observable, handler) { - let _lastValue; - return autorunOpts({ debugReferenceFn: handler }, (reader) => { - const newValue = observable.read(reader); - const lastValue = _lastValue; - _lastValue = newValue; - handler({ lastValue, newValue }); - }); -} -export function autorunIterableDelta(getValue, handler, getUniqueIdentifier = v => v) { - const lastValues = new Map(); - return autorunOpts({ debugReferenceFn: getValue }, (reader) => { - const newValues = new Map(); - const removedValues = new Map(lastValues); - for (const value of getValue(reader)) { - const id = getUniqueIdentifier(value); - if (lastValues.has(id)) { - removedValues.delete(id); - } - else { - newValues.set(id, value); - lastValues.set(id, value); - } - } - for (const id of removedValues.keys()) { - lastValues.delete(id); - } - if (newValues.size || removedValues.size) { - handler({ addedValues: [...newValues.values()], removedValues: [...removedValues.values()] }); - } - }); -} -var AutorunState; -(function (AutorunState) { - /** - * A dependency could have changed. - * We need to explicitly ask them if at least one dependency changed. - */ - AutorunState[AutorunState["dependenciesMightHaveChanged"] = 1] = "dependenciesMightHaveChanged"; - /** - * A dependency changed and we need to recompute. - */ - AutorunState[AutorunState["stale"] = 2] = "stale"; - AutorunState[AutorunState["upToDate"] = 3] = "upToDate"; -})(AutorunState || (AutorunState = {})); -export class AutorunObserver { - _debugNameData; - _runFn; - createChangeSummary; - _handleChange; - state = 2 /* AutorunState.stale */; - updateCount = 0; - disposed = false; - dependencies = new Set(); - dependenciesToBeRemoved = new Set(); - changeSummary; - get debugName() { - return this._debugNameData.getDebugName(this) ?? '(anonymous)'; - } - constructor(_debugNameData, _runFn, createChangeSummary, _handleChange) { - this._debugNameData = _debugNameData; - this._runFn = _runFn; - this.createChangeSummary = createChangeSummary; - this._handleChange = _handleChange; - this.changeSummary = this.createChangeSummary?.(); - getLogger()?.handleAutorunCreated(this); - this._runIfNeeded(); - trackDisposable(this); - } - dispose() { - this.disposed = true; - for (const o of this.dependencies) { - o.removeObserver(this); - } - this.dependencies.clear(); - markAsDisposed(this); - } - _runIfNeeded() { - if (this.state === 3 /* AutorunState.upToDate */) { - return; - } - const emptySet = this.dependenciesToBeRemoved; - this.dependenciesToBeRemoved = this.dependencies; - this.dependencies = emptySet; - this.state = 3 /* AutorunState.upToDate */; - const isDisposed = this.disposed; - try { - if (!isDisposed) { - getLogger()?.handleAutorunTriggered(this); - const changeSummary = this.changeSummary; - try { - this.changeSummary = this.createChangeSummary?.(); - this._isReaderValid = true; - this._runFn(this, changeSummary); - } - catch (e) { - onBugIndicatingError(e); - } - finally { - this._isReaderValid = false; - } - } - } - finally { - if (!isDisposed) { - getLogger()?.handleAutorunFinished(this); - } - // We don't want our observed observables to think that they are (not even temporarily) not being observed. - // Thus, we only unsubscribe from observables that are definitely not read anymore. - for (const o of this.dependenciesToBeRemoved) { - o.removeObserver(this); - } - this.dependenciesToBeRemoved.clear(); - } - } - toString() { - return `Autorun<${this.debugName}>`; - } - // IObserver implementation - beginUpdate() { - if (this.state === 3 /* AutorunState.upToDate */) { - this.state = 1 /* AutorunState.dependenciesMightHaveChanged */; - } - this.updateCount++; - } - endUpdate() { - try { - if (this.updateCount === 1) { - do { - if (this.state === 1 /* AutorunState.dependenciesMightHaveChanged */) { - this.state = 3 /* AutorunState.upToDate */; - for (const d of this.dependencies) { - d.reportChanges(); - if (this.state === 2 /* AutorunState.stale */) { - // The other dependencies will refresh on demand - break; - } - } - } - this._runIfNeeded(); - } while (this.state !== 3 /* AutorunState.upToDate */); - } - } - finally { - this.updateCount--; - } - assertFn(() => this.updateCount >= 0); - } - handlePossibleChange(observable) { - if (this.state === 3 /* AutorunState.upToDate */ && this.dependencies.has(observable) && !this.dependenciesToBeRemoved.has(observable)) { - this.state = 1 /* AutorunState.dependenciesMightHaveChanged */; - } - } - handleChange(observable, change) { - if (this.dependencies.has(observable) && !this.dependenciesToBeRemoved.has(observable)) { - try { - const shouldReact = this._handleChange ? this._handleChange({ - changedObservable: observable, - change, - didChange: (o) => o === observable, - }, this.changeSummary) : true; - if (shouldReact) { - this.state = 2 /* AutorunState.stale */; - } - } - catch (e) { - onBugIndicatingError(e); - } - } - } - // IReader implementation - _isReaderValid = false; - readObservable(observable) { - if (!this._isReaderValid) { - throw new BugIndicatingError('The reader object cannot be used outside its compute function!'); - } - // In case the run action disposes the autorun - if (this.disposed) { - return observable.get(); - } - observable.addObserver(this); - const value = observable.get(); - this.dependencies.add(observable); - this.dependenciesToBeRemoved.delete(observable); - return value; - } -} -(function (autorun) { - autorun.Observer = AutorunObserver; -})(autorun = autorun || (autorun = {})); +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +import { DebugNameData } from './debugName.js'; +import { assertFn, BugIndicatingError, DisposableStore, markAsDisposed, onBugIndicatingError, toDisposable, trackDisposable } from './commonFacade/deps.js'; +import { getLogger } from './logging.js'; +/** + * Runs immediately and whenever a transaction ends and an observed observable changed. + * {@link fn} should start with a JS Doc using `@description` to name the autorun. + */ +export function autorun(fn) { + return new AutorunObserver(new DebugNameData(undefined, undefined, fn), fn, undefined, undefined); +} +/** + * Runs immediately and whenever a transaction ends and an observed observable changed. + * {@link fn} should start with a JS Doc using `@description` to name the autorun. + */ +export function autorunOpts(options, fn) { + return new AutorunObserver(new DebugNameData(options.owner, options.debugName, options.debugReferenceFn ?? fn), fn, undefined, undefined); +} +/** + * Runs immediately and whenever a transaction ends and an observed observable changed. + * {@link fn} should start with a JS Doc using `@description` to name the autorun. + * + * Use `createEmptyChangeSummary` to create a "change summary" that can collect the changes. + * Use `handleChange` to add a reported change to the change summary. + * The run function is given the last change summary. + * The change summary is discarded after the run function was called. + * + * @see autorun + */ +export function autorunHandleChanges(options, fn) { + return new AutorunObserver(new DebugNameData(options.owner, options.debugName, options.debugReferenceFn ?? fn), fn, options.createEmptyChangeSummary, options.handleChange); +} +/** + * @see autorunHandleChanges (but with a disposable store that is cleared before the next run or on dispose) + */ +export function autorunWithStoreHandleChanges(options, fn) { + const store = new DisposableStore(); + const disposable = autorunHandleChanges({ + owner: options.owner, + debugName: options.debugName, + debugReferenceFn: options.debugReferenceFn ?? fn, + createEmptyChangeSummary: options.createEmptyChangeSummary, + handleChange: options.handleChange, + }, (reader, changeSummary) => { + store.clear(); + fn(reader, changeSummary, store); + }); + return toDisposable(() => { + disposable.dispose(); + store.dispose(); + }); +} +/** + * @see autorun (but with a disposable store that is cleared before the next run or on dispose) + */ +export function autorunWithStore(fn) { + const store = new DisposableStore(); + const disposable = autorunOpts({ + owner: undefined, + debugName: undefined, + debugReferenceFn: fn, + }, reader => { + store.clear(); + fn(reader, store); + }); + return toDisposable(() => { + disposable.dispose(); + store.dispose(); + }); +} +export function autorunDelta(observable, handler) { + let _lastValue; + return autorunOpts({ debugReferenceFn: handler }, (reader) => { + const newValue = observable.read(reader); + const lastValue = _lastValue; + _lastValue = newValue; + handler({ lastValue, newValue }); + }); +} +export function autorunIterableDelta(getValue, handler, getUniqueIdentifier = v => v) { + const lastValues = new Map(); + return autorunOpts({ debugReferenceFn: getValue }, (reader) => { + const newValues = new Map(); + const removedValues = new Map(lastValues); + for (const value of getValue(reader)) { + const id = getUniqueIdentifier(value); + if (lastValues.has(id)) { + removedValues.delete(id); + } + else { + newValues.set(id, value); + lastValues.set(id, value); + } + } + for (const id of removedValues.keys()) { + lastValues.delete(id); + } + if (newValues.size || removedValues.size) { + handler({ addedValues: [...newValues.values()], removedValues: [...removedValues.values()] }); + } + }); +} +var AutorunState; +(function (AutorunState) { + /** + * A dependency could have changed. + * We need to explicitly ask them if at least one dependency changed. + */ + AutorunState[AutorunState["dependenciesMightHaveChanged"] = 1] = "dependenciesMightHaveChanged"; + /** + * A dependency changed and we need to recompute. + */ + AutorunState[AutorunState["stale"] = 2] = "stale"; + AutorunState[AutorunState["upToDate"] = 3] = "upToDate"; +})(AutorunState || (AutorunState = {})); +export class AutorunObserver { + _debugNameData; + _runFn; + createChangeSummary; + _handleChange; + state = 2 /* AutorunState.stale */; + updateCount = 0; + disposed = false; + dependencies = new Set(); + dependenciesToBeRemoved = new Set(); + changeSummary; + get debugName() { + return this._debugNameData.getDebugName(this) ?? '(anonymous)'; + } + constructor(_debugNameData, _runFn, createChangeSummary, _handleChange) { + this._debugNameData = _debugNameData; + this._runFn = _runFn; + this.createChangeSummary = createChangeSummary; + this._handleChange = _handleChange; + this.changeSummary = this.createChangeSummary?.(); + getLogger()?.handleAutorunCreated(this); + this._runIfNeeded(); + trackDisposable(this); + } + dispose() { + this.disposed = true; + for (const o of this.dependencies) { + o.removeObserver(this); + } + this.dependencies.clear(); + markAsDisposed(this); + } + _runIfNeeded() { + if (this.state === 3 /* AutorunState.upToDate */) { + return; + } + const emptySet = this.dependenciesToBeRemoved; + this.dependenciesToBeRemoved = this.dependencies; + this.dependencies = emptySet; + this.state = 3 /* AutorunState.upToDate */; + const isDisposed = this.disposed; + try { + if (!isDisposed) { + getLogger()?.handleAutorunTriggered(this); + const changeSummary = this.changeSummary; + try { + this.changeSummary = this.createChangeSummary?.(); + this._isReaderValid = true; + this._runFn(this, changeSummary); + } + catch (e) { + onBugIndicatingError(e); + } + finally { + this._isReaderValid = false; + } + } + } + finally { + if (!isDisposed) { + getLogger()?.handleAutorunFinished(this); + } + // We don't want our observed observables to think that they are (not even temporarily) not being observed. + // Thus, we only unsubscribe from observables that are definitely not read anymore. + for (const o of this.dependenciesToBeRemoved) { + o.removeObserver(this); + } + this.dependenciesToBeRemoved.clear(); + } + } + toString() { + return `Autorun<${this.debugName}>`; + } + // IObserver implementation + beginUpdate() { + if (this.state === 3 /* AutorunState.upToDate */) { + this.state = 1 /* AutorunState.dependenciesMightHaveChanged */; + } + this.updateCount++; + } + endUpdate() { + try { + if (this.updateCount === 1) { + do { + if (this.state === 1 /* AutorunState.dependenciesMightHaveChanged */) { + this.state = 3 /* AutorunState.upToDate */; + for (const d of this.dependencies) { + d.reportChanges(); + if (this.state === 2 /* AutorunState.stale */) { + // The other dependencies will refresh on demand + break; + } + } + } + this._runIfNeeded(); + } while (this.state !== 3 /* AutorunState.upToDate */); + } + } + finally { + this.updateCount--; + } + assertFn(() => this.updateCount >= 0); + } + handlePossibleChange(observable) { + if (this.state === 3 /* AutorunState.upToDate */ && this.dependencies.has(observable) && !this.dependenciesToBeRemoved.has(observable)) { + this.state = 1 /* AutorunState.dependenciesMightHaveChanged */; + } + } + handleChange(observable, change) { + if (this.dependencies.has(observable) && !this.dependenciesToBeRemoved.has(observable)) { + try { + const shouldReact = this._handleChange ? this._handleChange({ + changedObservable: observable, + change, + didChange: (o) => o === observable, + }, this.changeSummary) : true; + if (shouldReact) { + this.state = 2 /* AutorunState.stale */; + } + } + catch (e) { + onBugIndicatingError(e); + } + } + } + // IReader implementation + _isReaderValid = false; + readObservable(observable) { + if (!this._isReaderValid) { + throw new BugIndicatingError('The reader object cannot be used outside its compute function!'); + } + // In case the run action disposes the autorun + if (this.disposed) { + return observable.get(); + } + observable.addObserver(this); + const value = observable.get(); + this.dependencies.add(observable); + this.dependenciesToBeRemoved.delete(observable); + return value; + } +} +(function (autorun) { + autorun.Observer = AutorunObserver; +})(autorun || (autorun = {})); //# sourceMappingURL=autorun.js.map \ No newline at end of file diff --git a/packages/core/dist/observableInternal/autorun.js.map b/packages/core/dist/observableInternal/autorun.js.map index 98935262..515ad2db 100644 --- a/packages/core/dist/observableInternal/autorun.js.map +++ b/packages/core/dist/observableInternal/autorun.js.map @@ -1 +1 @@ -{"version":3,"file":"autorun.js","sourceRoot":"","sources":["../../src/observableInternal/autorun.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAGhG,OAAO,EAAE,aAAa,EAAkB,MAAM,gBAAgB,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,eAAe,EAAe,cAAc,EAAE,oBAAoB,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzK,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC;;;GAGG;AACH,MAAM,UAAU,OAAO,CAAC,EAA6B;IACpD,OAAO,IAAI,eAAe,CACzB,IAAI,aAAa,CAAC,SAAS,EAAE,SAAS,EAAE,EAAE,CAAC,EAC3C,EAAE,EACF,SAAS,EACT,SAAS,CACT,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,OAA4B,EAAE,EAA6B;IACtF,OAAO,IAAI,eAAe,CACzB,IAAI,aAAa,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,gBAAgB,IAAI,EAAE,CAAC,EACnF,EAAE,EACF,SAAS,EACT,SAAS,CACT,CAAC;AACH,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,oBAAoB,CACnC,OAGC,EACD,EAA4D;IAE5D,OAAO,IAAI,eAAe,CACzB,IAAI,aAAa,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,gBAAgB,IAAI,EAAE,CAAC,EACnF,EAAE,EACF,OAAO,CAAC,wBAAwB,EAChC,OAAO,CAAC,YAAY,CACpB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,6BAA6B,CAC5C,OAGC,EACD,EAAoF;IAEpF,MAAM,KAAK,GAAG,IAAI,eAAe,EAAE,CAAC;IACpC,MAAM,UAAU,GAAG,oBAAoB,CACtC;QACC,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,IAAI,EAAE;QAChD,wBAAwB,EAAE,OAAO,CAAC,wBAAwB;QAC1D,YAAY,EAAE,OAAO,CAAC,YAAY;KAClC,EACD,CAAC,MAAM,EAAE,aAAa,EAAE,EAAE;QACzB,KAAK,CAAC,KAAK,EAAE,CAAC;QACd,EAAE,CAAC,MAAM,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC;IAClC,CAAC,CACD,CAAC;IACF,OAAO,YAAY,CAAC,GAAG,EAAE;QACxB,UAAU,CAAC,OAAO,EAAE,CAAC;QACrB,KAAK,CAAC,OAAO,EAAE,CAAC;IACjB,CAAC,CAAC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,EAAqD;IACrF,MAAM,KAAK,GAAG,IAAI,eAAe,EAAE,CAAC;IACpC,MAAM,UAAU,GAAG,WAAW,CAC7B;QACC,KAAK,EAAE,SAAS;QAChB,SAAS,EAAE,SAAS;QACpB,gBAAgB,EAAE,EAAE;KACpB,EACD,MAAM,CAAC,EAAE;QACR,KAAK,CAAC,KAAK,EAAE,CAAC;QACd,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACnB,CAAC,CACD,CAAC;IACF,OAAO,YAAY,CAAC,GAAG,EAAE;QACxB,UAAU,CAAC,OAAO,EAAE,CAAC;QACrB,KAAK,CAAC,OAAO,EAAE,CAAC;IACjB,CAAC,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,YAAY,CAC3B,UAA0B,EAC1B,OAAkE;IAElE,IAAI,UAAyB,CAAC;IAC9B,OAAO,WAAW,CAAC,EAAE,gBAAgB,EAAE,OAAO,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE;QAC5D,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACzC,MAAM,SAAS,GAAG,UAAU,CAAC;QAC7B,UAAU,GAAG,QAAQ,CAAC;QACtB,OAAO,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oBAAoB,CACnC,QAA0C,EAC1C,OAAiE,EACjE,sBAA6C,CAAC,CAAC,EAAE,CAAC,CAAC;IAEnD,MAAM,UAAU,GAAG,IAAI,GAAG,EAAc,CAAC;IACzC,OAAO,WAAW,CAAC,EAAE,gBAAgB,EAAE,QAAQ,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE;QAC7D,MAAM,SAAS,GAAG,IAAI,GAAG,EAAE,CAAC;QAC5B,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC;QAC1C,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE;YACrC,MAAM,EAAE,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;YACtC,IAAI,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;gBACvB,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;aACzB;iBAAM;gBACN,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;gBACzB,UAAU,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;aAC1B;SACD;QACD,KAAK,MAAM,EAAE,IAAI,aAAa,CAAC,IAAI,EAAE,EAAE;YACtC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;SACtB;QAED,IAAI,SAAS,CAAC,IAAI,IAAI,aAAa,CAAC,IAAI,EAAE;YACzC,OAAO,CAAC,EAAE,WAAW,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,aAAa,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;SAC9F;IACF,CAAC,CAAC,CAAC;AACJ,CAAC;AAID,IAAW,YAYV;AAZD,WAAW,YAAY;IACtB;;;OAGG;IACH,+FAAgC,CAAA;IAEhC;;OAEG;IACH,iDAAS,CAAA;IACT,uDAAY,CAAA;AACb,CAAC,EAZU,YAAY,KAAZ,YAAY,QAYtB;AAED,MAAM,OAAO,eAAe;IAaV;IACA;IACC;IACA;IAfV,KAAK,8BAAsB;IAC3B,WAAW,GAAG,CAAC,CAAC;IAChB,QAAQ,GAAG,KAAK,CAAC;IACjB,YAAY,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC3C,uBAAuB,GAAG,IAAI,GAAG,EAAoB,CAAC;IACtD,aAAa,CAA6B;IAElD,IAAW,SAAS;QACnB,OAAO,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,aAAa,CAAC;IAChE,CAAC;IAED,YACiB,cAA6B,EAC7B,MAAgE,EAC/D,mBAAuD,EACvD,aAA0F;QAH3F,mBAAc,GAAd,cAAc,CAAe;QAC7B,WAAM,GAAN,MAAM,CAA0D;QAC/D,wBAAmB,GAAnB,mBAAmB,CAAoC;QACvD,kBAAa,GAAb,aAAa,CAA6E;QAE3G,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,mBAAmB,EAAE,EAAE,CAAC;QAClD,SAAS,EAAE,EAAE,oBAAoB,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,CAAC,YAAY,EAAE,CAAC;QAEpB,eAAe,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC;IAEM,OAAO;QACb,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,YAAY,EAAE;YAClC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;SACvB;QACD,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;QAE1B,cAAc,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;IAEO,YAAY;QACnB,IAAI,IAAI,CAAC,KAAK,kCAA0B,EAAE;YACzC,OAAO;SACP;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,uBAAuB,CAAC;QAC9C,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,YAAY,CAAC;QACjD,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC;QAE7B,IAAI,CAAC,KAAK,gCAAwB,CAAC;QAEnC,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC;QACjC,IAAI;YACH,IAAI,CAAC,UAAU,EAAE;gBAChB,SAAS,EAAE,EAAE,sBAAsB,CAAC,IAAI,CAAC,CAAC;gBAC1C,MAAM,aAAa,GAAG,IAAI,CAAC,aAAc,CAAC;gBAC1C,IAAI;oBACH,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,mBAAmB,EAAE,EAAE,CAAC;oBAClD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;oBAC3B,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;iBACjC;gBAAC,OAAO,CAAC,EAAE;oBACX,oBAAoB,CAAC,CAAC,CAAC,CAAC;iBACxB;wBAAS;oBACT,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;iBAC5B;aACD;SACD;gBAAS;YACT,IAAI,CAAC,UAAU,EAAE;gBAChB,SAAS,EAAE,EAAE,qBAAqB,CAAC,IAAI,CAAC,CAAC;aACzC;YACD,2GAA2G;YAC3G,mFAAmF;YACnF,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,uBAAuB,EAAE;gBAC7C,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;aACvB;YACD,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE,CAAC;SACrC;IACF,CAAC;IAEM,QAAQ;QACd,OAAO,WAAW,IAAI,CAAC,SAAS,GAAG,CAAC;IACrC,CAAC;IAED,2BAA2B;IACpB,WAAW;QACjB,IAAI,IAAI,CAAC,KAAK,kCAA0B,EAAE;YACzC,IAAI,CAAC,KAAK,oDAA4C,CAAC;SACvD;QACD,IAAI,CAAC,WAAW,EAAE,CAAC;IACpB,CAAC;IAEM,SAAS;QACf,IAAI;YACH,IAAI,IAAI,CAAC,WAAW,KAAK,CAAC,EAAE;gBAC3B,GAAG;oBACF,IAAI,IAAI,CAAC,KAAK,sDAA8C,EAAE;wBAC7D,IAAI,CAAC,KAAK,gCAAwB,CAAC;wBACnC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,YAAY,EAAE;4BAClC,CAAC,CAAC,aAAa,EAAE,CAAC;4BAClB,IAAI,IAAI,CAAC,KAAqB,+BAAuB,EAAE;gCACtD,gDAAgD;gCAChD,MAAM;6BACN;yBACD;qBACD;oBAED,IAAI,CAAC,YAAY,EAAE,CAAC;iBACpB,QAAQ,IAAI,CAAC,KAAK,kCAA0B,EAAE;aAC/C;SACD;gBAAS;YACT,IAAI,CAAC,WAAW,EAAE,CAAC;SACnB;QAED,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC,CAAC;IACvC,CAAC;IAEM,oBAAoB,CAAC,UAA4B;QACvD,IAAI,IAAI,CAAC,KAAK,kCAA0B,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;YAC/H,IAAI,CAAC,KAAK,oDAA4C,CAAC;SACvD;IACF,CAAC;IAEM,YAAY,CAAa,UAA6C,EAAE,MAAe;QAC7F,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;YACvF,IAAI;gBACH,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC;oBAC3D,iBAAiB,EAAE,UAAU;oBAC7B,MAAM;oBACN,SAAS,EAAE,CAAC,CAAC,EAAe,EAAE,CAAC,CAAC,KAAK,UAAiB;iBACtD,EAAE,IAAI,CAAC,aAAc,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;gBAC/B,IAAI,WAAW,EAAE;oBAChB,IAAI,CAAC,KAAK,6BAAqB,CAAC;iBAChC;aACD;YAAC,OAAO,CAAC,EAAE;gBACX,oBAAoB,CAAC,CAAC,CAAC,CAAC;aACxB;SACD;IACF,CAAC;IAED,yBAAyB;IACjB,cAAc,GAAG,KAAK,CAAC;IAExB,cAAc,CAAI,UAA0B;QAClD,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;YAAE,MAAM,IAAI,kBAAkB,CAAC,gEAAgE,CAAC,CAAC;SAAE;QAE7H,8CAA8C;QAC9C,IAAI,IAAI,CAAC,QAAQ,EAAE;YAClB,OAAO,UAAU,CAAC,GAAG,EAAE,CAAC;SACxB;QAED,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAC7B,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC;QAC/B,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAClC,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAChD,OAAO,KAAK,CAAC;IACd,CAAC;CACD;AAED,WAAiB,OAAO;IACV,gBAAQ,GAAG,eAAe,CAAC;AACzC,CAAC,EAFgB,OAAO,GAAP,OAAO,KAAP,OAAO,QAEvB"} \ No newline at end of file +{"version":3,"file":"autorun.js","sourceRoot":"","sources":["../../src/observableInternal/autorun.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/dist/observableInternal/base.d.ts b/packages/core/dist/observableInternal/base.d.ts index 726589eb..a2a58737 100644 --- a/packages/core/dist/observableInternal/base.d.ts +++ b/packages/core/dist/observableInternal/base.d.ts @@ -1,257 +1,257 @@ -import { DebugNameData, DebugOwner } from './debugName.js'; -import { DisposableStore, EqualityComparer, IDisposable } from './commonFacade/deps.js'; -import { keepObserved, recomputeInitiallyAndOnChange } from './utils.js'; -/** - * Represents an observable value. - * - * @template T The type of the values the observable can hold. - */ -export interface IObservable extends IObservableWithChange { -} -/** - * Represents an observable value. - * - * @template T The type of the values the observable can hold. - * @template TChange The type used to describe value changes - * (usually `void` and only used in advanced scenarios). - * While observers can miss temporary values of an observable, - * they will receive all change values (as long as they are subscribed)! - */ -export interface IObservableWithChange { - /** - * Returns the current value. - * - * Calls {@link IObserver.handleChange} if the observable notices that the value changed. - * Must not be called from {@link IObserver.handleChange}! - */ - get(): T; - /** - * Forces the observable to check for changes and report them. - * - * Has the same effect as calling {@link IObservable.get}, but does not force the observable - * to actually construct the value, e.g. if change deltas are used. - * Calls {@link IObserver.handleChange} if the observable notices that the value changed. - * Must not be called from {@link IObserver.handleChange}! - */ - reportChanges(): void; - /** - * Adds the observer to the set of subscribed observers. - * This method is idempotent. - */ - addObserver(observer: IObserver): void; - /** - * Removes the observer from the set of subscribed observers. - * This method is idempotent. - */ - removeObserver(observer: IObserver): void; - /** - * Reads the current value and subscribes the reader to this observable. - * - * Calls {@link IReader.readObservable} if a reader is given, otherwise {@link IObservable.get} - * (see {@link ConvenientObservable.read} for the implementation). - */ - read(reader: IReader | undefined): T; - /** - * Creates a derived observable that depends on this observable. - * Use the reader to read other observables - * (see {@link ConvenientObservable.map} for the implementation). - */ - map(fn: (value: T, reader: IReader) => TNew): IObservable; - map(owner: object, fn: (value: T, reader: IReader) => TNew): IObservable; - flatten(this: IObservable>): IObservable; - /** - * ONLY FOR DEBUGGING! - * Logs computations of this derived. - */ - log(): IObservableWithChange; - /** - * Makes sure this value is computed eagerly. - */ - recomputeInitiallyAndOnChange(store: DisposableStore, handleValue?: (value: T) => void): IObservable; - /** - * Makes sure this value is cached. - */ - keepObserved(store: DisposableStore): IObservable; - /** - * A human-readable name for debugging purposes. - */ - readonly debugName: string; - /** - * This property captures the type of the change object. Do not use it at runtime! - */ - readonly TChange: TChange; -} -export interface IReader { - /** - * Reads the value of an observable and subscribes to it. - */ - readObservable(observable: IObservableWithChange): T; -} -/** - * Represents an observer that can be subscribed to an observable. - * - * If an observer is subscribed to an observable and that observable didn't signal - * a change through one of the observer methods, the observer can assume that the - * observable didn't change. - * If an observable reported a possible change, {@link IObservable.reportChanges} forces - * the observable to report an actual change if there was one. - */ -export interface IObserver { - /** - * Signals that the given observable might have changed and a transaction potentially modifying that observable started. - * Before the given observable can call this method again, is must call {@link IObserver.endUpdate}. - * - * Implementations must not get/read the value of other observables, as they might not have received this event yet! - * The method {@link IObservable.reportChanges} can be used to force the observable to report the changes. - */ - beginUpdate(observable: IObservable): void; - /** - * Signals that the transaction that potentially modified the given observable ended. - * This is a good place to react to (potential) changes. - */ - endUpdate(observable: IObservable): void; - /** - * Signals that the given observable might have changed. - * The method {@link IObservable.reportChanges} can be used to force the observable to report the changes. - * - * Implementations must not get/read the value of other observables, as they might not have received this event yet! - * The change should be processed lazily or in {@link IObserver.endUpdate}. - */ - handlePossibleChange(observable: IObservable): void; - /** - * Signals that the given {@link observable} changed. - * - * Implementations must not get/read the value of other observables, as they might not have received this event yet! - * The change should be processed lazily or in {@link IObserver.endUpdate}. - * - * @param change Indicates how or why the value changed. - */ - handleChange(observable: IObservableWithChange, change: TChange): void; -} -export interface ISettable { - /** - * Sets the value of the observable. - * Use a transaction to batch multiple changes (with a transaction, observers only react at the end of the transaction). - * - * @param transaction When given, value changes are handled on demand or when the transaction ends. - * @param change Describes how or why the value changed. - */ - set(value: T, transaction: ITransaction | undefined, change: TChange): void; -} -export interface ITransaction { - /** - * Calls {@link Observer.beginUpdate} immediately - * and {@link Observer.endUpdate} when the transaction ends. - */ - updateObserver(observer: IObserver, observable: IObservableWithChange): void; -} -declare let _recomputeInitiallyAndOnChange: typeof recomputeInitiallyAndOnChange; -export declare function _setRecomputeInitiallyAndOnChange(recomputeInitiallyAndOnChange: typeof _recomputeInitiallyAndOnChange): void; -declare let _keepObserved: typeof keepObserved; -export declare function _setKeepObserved(keepObserved: typeof _keepObserved): void; -export declare abstract class ConvenientObservable implements IObservableWithChange { - get TChange(): TChange; - abstract get(): T; - reportChanges(): void; - abstract addObserver(observer: IObserver): void; - abstract removeObserver(observer: IObserver): void; - /** @sealed */ - read(reader: IReader | undefined): T; - /** @sealed */ - map(fn: (value: T, reader: IReader) => TNew): IObservable; - map(owner: DebugOwner, fn: (value: T, reader: IReader) => TNew): IObservable; - log(): IObservableWithChange; - /** - * @sealed - * Converts an observable of an observable value into a direct observable of the value. - */ - flatten(this: IObservable>): IObservable; - recomputeInitiallyAndOnChange(store: DisposableStore, handleValue?: (value: T) => void): IObservable; - /** - * Ensures that this observable is observed. This keeps the cache alive. - * However, in case of deriveds, it does not force eager evaluation (only when the value is read/get). - * Use `recomputeInitiallyAndOnChange` for eager evaluation. - */ - keepObserved(store: DisposableStore): IObservable; - abstract get debugName(): string; - protected get debugValue(): T; -} -export declare abstract class BaseObservable extends ConvenientObservable { - protected readonly observers: Set; - addObserver(observer: IObserver): void; - removeObserver(observer: IObserver): void; - protected onFirstObserverAdded(): void; - protected onLastObserverRemoved(): void; -} -/** - * Starts a transaction in which many observables can be changed at once. - * {@link fn} should start with a JS Doc using `@description` to give the transaction a debug name. - * Reaction run on demand or when the transaction ends. - */ -export declare function transaction(fn: (tx: ITransaction) => void, getDebugName?: () => string): void; -export declare function globalTransaction(fn: (tx: ITransaction) => void): void; -export declare function asyncTransaction(fn: (tx: ITransaction) => Promise, getDebugName?: () => string): Promise; -/** - * Allows to chain transactions. - */ -export declare function subtransaction(tx: ITransaction | undefined, fn: (tx: ITransaction) => void, getDebugName?: () => string): void; -export declare class TransactionImpl implements ITransaction { - readonly _fn: Function; - private readonly _getDebugName?; - private updatingObservers; - constructor(_fn: Function, _getDebugName?: () => string); - getDebugName(): string | undefined; - updateObserver(observer: IObserver, observable: IObservable): void; - finish(): void; -} -/** - * A settable observable. - */ -export interface ISettableObservable extends IObservableWithChange, ISettable { -} -/** - * Creates an observable value. - * Observers get informed when the value changes. - * @template TChange An arbitrary type to describe how or why the value changed. Defaults to `void`. - * Observers will receive every single change value. - */ -export declare function observableValue(name: string, initialValue: T): ISettableObservable; -export declare function observableValue(owner: object, initialValue: T): ISettableObservable; -export declare class ObservableValue extends BaseObservable implements ISettableObservable { - private readonly _debugNameData; - private readonly _equalityComparator; - protected _value: T; - get debugName(): string; - constructor(_debugNameData: DebugNameData, initialValue: T, _equalityComparator: EqualityComparer); - get(): T; - set(value: T, tx: ITransaction | undefined, change: TChange): void; - toString(): string; - protected _setValue(newValue: T): void; -} -/** - * A disposable observable. When disposed, its value is also disposed. - * When a new value is set, the previous value is disposed. - */ -export declare function disposableObservableValue(nameOrOwner: string | object, initialValue: T): ISettableObservable & IDisposable; -export declare class DisposableObservableValue extends ObservableValue implements IDisposable { - protected _setValue(newValue: T): void; - dispose(): void; -} -export interface IChangeTracker { - /** - * Returns if this change should cause an invalidation. - * Implementations can record changes. - */ - handleChange(context: IChangeContext): boolean; -} -export interface IChangeContext { - readonly changedObservable: IObservableWithChange; - readonly change: unknown; - /** - * Returns if the given observable caused the change. - */ - didChange(observable: IObservableWithChange): this is { - change: TChange; - }; -} -export {}; +import { DebugNameData, DebugOwner } from './debugName.js'; +import { DisposableStore, EqualityComparer, IDisposable } from './commonFacade/deps.js'; +import { keepObserved, recomputeInitiallyAndOnChange } from './utils.js'; +/** + * Represents an observable value. + * + * @template T The type of the values the observable can hold. + */ +export interface IObservable extends IObservableWithChange { +} +/** + * Represents an observable value. + * + * @template T The type of the values the observable can hold. + * @template TChange The type used to describe value changes + * (usually `void` and only used in advanced scenarios). + * While observers can miss temporary values of an observable, + * they will receive all change values (as long as they are subscribed)! + */ +export interface IObservableWithChange { + /** + * Returns the current value. + * + * Calls {@link IObserver.handleChange} if the observable notices that the value changed. + * Must not be called from {@link IObserver.handleChange}! + */ + get(): T; + /** + * Forces the observable to check for changes and report them. + * + * Has the same effect as calling {@link IObservable.get}, but does not force the observable + * to actually construct the value, e.g. if change deltas are used. + * Calls {@link IObserver.handleChange} if the observable notices that the value changed. + * Must not be called from {@link IObserver.handleChange}! + */ + reportChanges(): void; + /** + * Adds the observer to the set of subscribed observers. + * This method is idempotent. + */ + addObserver(observer: IObserver): void; + /** + * Removes the observer from the set of subscribed observers. + * This method is idempotent. + */ + removeObserver(observer: IObserver): void; + /** + * Reads the current value and subscribes the reader to this observable. + * + * Calls {@link IReader.readObservable} if a reader is given, otherwise {@link IObservable.get} + * (see {@link ConvenientObservable.read} for the implementation). + */ + read(reader: IReader | undefined): T; + /** + * Creates a derived observable that depends on this observable. + * Use the reader to read other observables + * (see {@link ConvenientObservable.map} for the implementation). + */ + map(fn: (value: T, reader: IReader) => TNew): IObservable; + map(owner: object, fn: (value: T, reader: IReader) => TNew): IObservable; + flatten(this: IObservable>): IObservable; + /** + * ONLY FOR DEBUGGING! + * Logs computations of this derived. + */ + log(): IObservableWithChange; + /** + * Makes sure this value is computed eagerly. + */ + recomputeInitiallyAndOnChange(store: DisposableStore, handleValue?: (value: T) => void): IObservable; + /** + * Makes sure this value is cached. + */ + keepObserved(store: DisposableStore): IObservable; + /** + * A human-readable name for debugging purposes. + */ + readonly debugName: string; + /** + * This property captures the type of the change object. Do not use it at runtime! + */ + readonly TChange: TChange; +} +export interface IReader { + /** + * Reads the value of an observable and subscribes to it. + */ + readObservable(observable: IObservableWithChange): T; +} +/** + * Represents an observer that can be subscribed to an observable. + * + * If an observer is subscribed to an observable and that observable didn't signal + * a change through one of the observer methods, the observer can assume that the + * observable didn't change. + * If an observable reported a possible change, {@link IObservable.reportChanges} forces + * the observable to report an actual change if there was one. + */ +export interface IObserver { + /** + * Signals that the given observable might have changed and a transaction potentially modifying that observable started. + * Before the given observable can call this method again, is must call {@link IObserver.endUpdate}. + * + * Implementations must not get/read the value of other observables, as they might not have received this event yet! + * The method {@link IObservable.reportChanges} can be used to force the observable to report the changes. + */ + beginUpdate(observable: IObservable): void; + /** + * Signals that the transaction that potentially modified the given observable ended. + * This is a good place to react to (potential) changes. + */ + endUpdate(observable: IObservable): void; + /** + * Signals that the given observable might have changed. + * The method {@link IObservable.reportChanges} can be used to force the observable to report the changes. + * + * Implementations must not get/read the value of other observables, as they might not have received this event yet! + * The change should be processed lazily or in {@link IObserver.endUpdate}. + */ + handlePossibleChange(observable: IObservable): void; + /** + * Signals that the given {@link observable} changed. + * + * Implementations must not get/read the value of other observables, as they might not have received this event yet! + * The change should be processed lazily or in {@link IObserver.endUpdate}. + * + * @param change Indicates how or why the value changed. + */ + handleChange(observable: IObservableWithChange, change: TChange): void; +} +export interface ISettable { + /** + * Sets the value of the observable. + * Use a transaction to batch multiple changes (with a transaction, observers only react at the end of the transaction). + * + * @param transaction When given, value changes are handled on demand or when the transaction ends. + * @param change Describes how or why the value changed. + */ + set(value: T, transaction: ITransaction | undefined, change: TChange): void; +} +export interface ITransaction { + /** + * Calls {@link Observer.beginUpdate} immediately + * and {@link Observer.endUpdate} when the transaction ends. + */ + updateObserver(observer: IObserver, observable: IObservableWithChange): void; +} +declare let _recomputeInitiallyAndOnChange: typeof recomputeInitiallyAndOnChange; +export declare function _setRecomputeInitiallyAndOnChange(recomputeInitiallyAndOnChange: typeof _recomputeInitiallyAndOnChange): void; +declare let _keepObserved: typeof keepObserved; +export declare function _setKeepObserved(keepObserved: typeof _keepObserved): void; +export declare abstract class ConvenientObservable implements IObservableWithChange { + get TChange(): TChange; + abstract get(): T; + reportChanges(): void; + abstract addObserver(observer: IObserver): void; + abstract removeObserver(observer: IObserver): void; + /** @sealed */ + read(reader: IReader | undefined): T; + /** @sealed */ + map(fn: (value: T, reader: IReader) => TNew): IObservable; + map(owner: DebugOwner, fn: (value: T, reader: IReader) => TNew): IObservable; + log(): IObservableWithChange; + /** + * @sealed + * Converts an observable of an observable value into a direct observable of the value. + */ + flatten(this: IObservable>): IObservable; + recomputeInitiallyAndOnChange(store: DisposableStore, handleValue?: (value: T) => void): IObservable; + /** + * Ensures that this observable is observed. This keeps the cache alive. + * However, in case of deriveds, it does not force eager evaluation (only when the value is read/get). + * Use `recomputeInitiallyAndOnChange` for eager evaluation. + */ + keepObserved(store: DisposableStore): IObservable; + abstract get debugName(): string; + protected get debugValue(): T; +} +export declare abstract class BaseObservable extends ConvenientObservable { + protected readonly observers: Set; + addObserver(observer: IObserver): void; + removeObserver(observer: IObserver): void; + protected onFirstObserverAdded(): void; + protected onLastObserverRemoved(): void; +} +/** + * Starts a transaction in which many observables can be changed at once. + * {@link fn} should start with a JS Doc using `@description` to give the transaction a debug name. + * Reaction run on demand or when the transaction ends. + */ +export declare function transaction(fn: (tx: ITransaction) => void, getDebugName?: () => string): void; +export declare function globalTransaction(fn: (tx: ITransaction) => void): void; +export declare function asyncTransaction(fn: (tx: ITransaction) => Promise, getDebugName?: () => string): Promise; +/** + * Allows to chain transactions. + */ +export declare function subtransaction(tx: ITransaction | undefined, fn: (tx: ITransaction) => void, getDebugName?: () => string): void; +export declare class TransactionImpl implements ITransaction { + readonly _fn: Function; + private readonly _getDebugName?; + private updatingObservers; + constructor(_fn: Function, _getDebugName?: () => string); + getDebugName(): string | undefined; + updateObserver(observer: IObserver, observable: IObservable): void; + finish(): void; +} +/** + * A settable observable. + */ +export interface ISettableObservable extends IObservableWithChange, ISettable { +} +/** + * Creates an observable value. + * Observers get informed when the value changes. + * @template TChange An arbitrary type to describe how or why the value changed. Defaults to `void`. + * Observers will receive every single change value. + */ +export declare function observableValue(name: string, initialValue: T): ISettableObservable; +export declare function observableValue(owner: object, initialValue: T): ISettableObservable; +export declare class ObservableValue extends BaseObservable implements ISettableObservable { + private readonly _debugNameData; + private readonly _equalityComparator; + protected _value: T; + get debugName(): string; + constructor(_debugNameData: DebugNameData, initialValue: T, _equalityComparator: EqualityComparer); + get(): T; + set(value: T, tx: ITransaction | undefined, change: TChange): void; + toString(): string; + protected _setValue(newValue: T): void; +} +/** + * A disposable observable. When disposed, its value is also disposed. + * When a new value is set, the previous value is disposed. + */ +export declare function disposableObservableValue(nameOrOwner: string | object, initialValue: T): ISettableObservable & IDisposable; +export declare class DisposableObservableValue extends ObservableValue implements IDisposable { + protected _setValue(newValue: T): void; + dispose(): void; +} +export interface IChangeTracker { + /** + * Returns if this change should cause an invalidation. + * Implementations can record changes. + */ + handleChange(context: IChangeContext): boolean; +} +export interface IChangeContext { + readonly changedObservable: IObservableWithChange; + readonly change: unknown; + /** + * Returns if the given observable caused the change. + */ + didChange(observable: IObservableWithChange): this is { + change: TChange; + }; +} +export {}; diff --git a/packages/core/dist/observableInternal/base.js b/packages/core/dist/observableInternal/base.js index 2375a393..c98cf99b 100644 --- a/packages/core/dist/observableInternal/base.js +++ b/packages/core/dist/observableInternal/base.js @@ -1,278 +1,278 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ -import { DebugNameData, getFunctionName } from './debugName.js'; -import { strictEquals } from './commonFacade/deps.js'; -import { getLogger, logObservable } from './logging.js'; -let _recomputeInitiallyAndOnChange; -export function _setRecomputeInitiallyAndOnChange(recomputeInitiallyAndOnChange) { - _recomputeInitiallyAndOnChange = recomputeInitiallyAndOnChange; -} -let _keepObserved; -export function _setKeepObserved(keepObserved) { - _keepObserved = keepObserved; -} -let _derived; -/** - * @internal - * This is to allow splitting files. -*/ -export function _setDerivedOpts(derived) { - _derived = derived; -} -export class ConvenientObservable { - get TChange() { return null; } - reportChanges() { - this.get(); - } - /** @sealed */ - read(reader) { - if (reader) { - return reader.readObservable(this); - } - else { - return this.get(); - } - } - map(fnOrOwner, fnOrUndefined) { - const owner = fnOrUndefined === undefined ? undefined : fnOrOwner; - const fn = fnOrUndefined === undefined ? fnOrOwner : fnOrUndefined; - return _derived({ - owner, - debugName: () => { - const name = getFunctionName(fn); - if (name !== undefined) { - return name; - } - // regexp to match `x => x.y` or `x => x?.y` where x and y can be arbitrary identifiers (uses backref): - const regexp = /^\s*\(?\s*([a-zA-Z_$][a-zA-Z_$0-9]*)\s*\)?\s*=>\s*\1(?:\??)\.([a-zA-Z_$][a-zA-Z_$0-9]*)\s*$/; - const match = regexp.exec(fn.toString()); - if (match) { - return `${this.debugName}.${match[2]}`; - } - if (!owner) { - return `${this.debugName} (mapped)`; - } - return undefined; - }, - debugReferenceFn: fn, - }, (reader) => fn(this.read(reader), reader)); - } - log() { - logObservable(this); - return this; - } - /** - * @sealed - * Converts an observable of an observable value into a direct observable of the value. - */ - flatten() { - return _derived({ - owner: undefined, - debugName: () => `${this.debugName} (flattened)`, - }, (reader) => this.read(reader).read(reader)); - } - recomputeInitiallyAndOnChange(store, handleValue) { - store.add(_recomputeInitiallyAndOnChange(this, handleValue)); - return this; - } - /** - * Ensures that this observable is observed. This keeps the cache alive. - * However, in case of deriveds, it does not force eager evaluation (only when the value is read/get). - * Use `recomputeInitiallyAndOnChange` for eager evaluation. - */ - keepObserved(store) { - store.add(_keepObserved(this)); - return this; - } - get debugValue() { - return this.get(); - } -} -export class BaseObservable extends ConvenientObservable { - observers = new Set(); - addObserver(observer) { - const len = this.observers.size; - this.observers.add(observer); - if (len === 0) { - this.onFirstObserverAdded(); - } - } - removeObserver(observer) { - const deleted = this.observers.delete(observer); - if (deleted && this.observers.size === 0) { - this.onLastObserverRemoved(); - } - } - onFirstObserverAdded() { } - onLastObserverRemoved() { } -} -/** - * Starts a transaction in which many observables can be changed at once. - * {@link fn} should start with a JS Doc using `@description` to give the transaction a debug name. - * Reaction run on demand or when the transaction ends. - */ -export function transaction(fn, getDebugName) { - const tx = new TransactionImpl(fn, getDebugName); - try { - fn(tx); - } - finally { - tx.finish(); - } -} -let _globalTransaction = undefined; -export function globalTransaction(fn) { - if (_globalTransaction) { - fn(_globalTransaction); - } - else { - const tx = new TransactionImpl(fn, undefined); - _globalTransaction = tx; - try { - fn(tx); - } - finally { - tx.finish(); // During finish, more actions might be added to the transaction. - // Which is why we only clear the global transaction after finish. - _globalTransaction = undefined; - } - } -} -export async function asyncTransaction(fn, getDebugName) { - const tx = new TransactionImpl(fn, getDebugName); - try { - await fn(tx); - } - finally { - tx.finish(); - } -} -/** - * Allows to chain transactions. - */ -export function subtransaction(tx, fn, getDebugName) { - if (!tx) { - transaction(fn, getDebugName); - } - else { - fn(tx); - } -} -export class TransactionImpl { - _fn; - _getDebugName; - updatingObservers = []; - constructor(_fn, _getDebugName) { - this._fn = _fn; - this._getDebugName = _getDebugName; - getLogger()?.handleBeginTransaction(this); - } - getDebugName() { - if (this._getDebugName) { - return this._getDebugName(); - } - return getFunctionName(this._fn); - } - updateObserver(observer, observable) { - // When this gets called while finish is active, they will still get considered - this.updatingObservers.push({ observer, observable }); - observer.beginUpdate(observable); - } - finish() { - const updatingObservers = this.updatingObservers; - for (let i = 0; i < updatingObservers.length; i++) { - const { observer, observable } = updatingObservers[i]; - observer.endUpdate(observable); - } - // Prevent anyone from updating observers from now on. - this.updatingObservers = null; - getLogger()?.handleEndTransaction(); - } -} -export function observableValue(nameOrOwner, initialValue) { - let debugNameData; - if (typeof nameOrOwner === 'string') { - debugNameData = new DebugNameData(undefined, nameOrOwner, undefined); - } - else { - debugNameData = new DebugNameData(nameOrOwner, undefined, undefined); - } - return new ObservableValue(debugNameData, initialValue, strictEquals); -} -export class ObservableValue extends BaseObservable { - _debugNameData; - _equalityComparator; - _value; - get debugName() { - return this._debugNameData.getDebugName(this) ?? 'ObservableValue'; - } - constructor(_debugNameData, initialValue, _equalityComparator) { - super(); - this._debugNameData = _debugNameData; - this._equalityComparator = _equalityComparator; - this._value = initialValue; - } - get() { - return this._value; - } - set(value, tx, change) { - if (change === undefined && this._equalityComparator(this._value, value)) { - return; - } - let _tx; - if (!tx) { - tx = _tx = new TransactionImpl(() => { }, () => `Setting ${this.debugName}`); - } - try { - const oldValue = this._value; - this._setValue(value); - getLogger()?.handleObservableChanged(this, { oldValue, newValue: value, change, didChange: true, hadValue: true }); - for (const observer of this.observers) { - tx.updateObserver(observer, this); - observer.handleChange(this, change); - } - } - finally { - if (_tx) { - _tx.finish(); - } - } - } - toString() { - return `${this.debugName}: ${this._value}`; - } - _setValue(newValue) { - this._value = newValue; - } -} -/** - * A disposable observable. When disposed, its value is also disposed. - * When a new value is set, the previous value is disposed. - */ -export function disposableObservableValue(nameOrOwner, initialValue) { - let debugNameData; - if (typeof nameOrOwner === 'string') { - debugNameData = new DebugNameData(undefined, nameOrOwner, undefined); - } - else { - debugNameData = new DebugNameData(nameOrOwner, undefined, undefined); - } - return new DisposableObservableValue(debugNameData, initialValue, strictEquals); -} -export class DisposableObservableValue extends ObservableValue { - _setValue(newValue) { - if (this._value === newValue) { - return; - } - if (this._value) { - this._value.dispose(); - } - this._value = newValue; - } - dispose() { - this._value?.dispose(); - } -} +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +import { DebugNameData, getFunctionName } from './debugName.js'; +import { strictEquals } from './commonFacade/deps.js'; +import { getLogger, logObservable } from './logging.js'; +let _recomputeInitiallyAndOnChange; +export function _setRecomputeInitiallyAndOnChange(recomputeInitiallyAndOnChange) { + _recomputeInitiallyAndOnChange = recomputeInitiallyAndOnChange; +} +let _keepObserved; +export function _setKeepObserved(keepObserved) { + _keepObserved = keepObserved; +} +let _derived; +/** + * @internal + * This is to allow splitting files. +*/ +export function _setDerivedOpts(derived) { + _derived = derived; +} +export class ConvenientObservable { + get TChange() { return null; } + reportChanges() { + this.get(); + } + /** @sealed */ + read(reader) { + if (reader) { + return reader.readObservable(this); + } + else { + return this.get(); + } + } + map(fnOrOwner, fnOrUndefined) { + const owner = fnOrUndefined === undefined ? undefined : fnOrOwner; + const fn = fnOrUndefined === undefined ? fnOrOwner : fnOrUndefined; + return _derived({ + owner, + debugName: () => { + const name = getFunctionName(fn); + if (name !== undefined) { + return name; + } + // regexp to match `x => x.y` or `x => x?.y` where x and y can be arbitrary identifiers (uses backref): + const regexp = /^\s*\(?\s*([a-zA-Z_$][a-zA-Z_$0-9]*)\s*\)?\s*=>\s*\1(?:\??)\.([a-zA-Z_$][a-zA-Z_$0-9]*)\s*$/; + const match = regexp.exec(fn.toString()); + if (match) { + return `${this.debugName}.${match[2]}`; + } + if (!owner) { + return `${this.debugName} (mapped)`; + } + return undefined; + }, + debugReferenceFn: fn, + }, (reader) => fn(this.read(reader), reader)); + } + log() { + logObservable(this); + return this; + } + /** + * @sealed + * Converts an observable of an observable value into a direct observable of the value. + */ + flatten() { + return _derived({ + owner: undefined, + debugName: () => `${this.debugName} (flattened)`, + }, (reader) => this.read(reader).read(reader)); + } + recomputeInitiallyAndOnChange(store, handleValue) { + store.add(_recomputeInitiallyAndOnChange(this, handleValue)); + return this; + } + /** + * Ensures that this observable is observed. This keeps the cache alive. + * However, in case of deriveds, it does not force eager evaluation (only when the value is read/get). + * Use `recomputeInitiallyAndOnChange` for eager evaluation. + */ + keepObserved(store) { + store.add(_keepObserved(this)); + return this; + } + get debugValue() { + return this.get(); + } +} +export class BaseObservable extends ConvenientObservable { + observers = new Set(); + addObserver(observer) { + const len = this.observers.size; + this.observers.add(observer); + if (len === 0) { + this.onFirstObserverAdded(); + } + } + removeObserver(observer) { + const deleted = this.observers.delete(observer); + if (deleted && this.observers.size === 0) { + this.onLastObserverRemoved(); + } + } + onFirstObserverAdded() { } + onLastObserverRemoved() { } +} +/** + * Starts a transaction in which many observables can be changed at once. + * {@link fn} should start with a JS Doc using `@description` to give the transaction a debug name. + * Reaction run on demand or when the transaction ends. + */ +export function transaction(fn, getDebugName) { + const tx = new TransactionImpl(fn, getDebugName); + try { + fn(tx); + } + finally { + tx.finish(); + } +} +let _globalTransaction = undefined; +export function globalTransaction(fn) { + if (_globalTransaction) { + fn(_globalTransaction); + } + else { + const tx = new TransactionImpl(fn, undefined); + _globalTransaction = tx; + try { + fn(tx); + } + finally { + tx.finish(); // During finish, more actions might be added to the transaction. + // Which is why we only clear the global transaction after finish. + _globalTransaction = undefined; + } + } +} +export async function asyncTransaction(fn, getDebugName) { + const tx = new TransactionImpl(fn, getDebugName); + try { + await fn(tx); + } + finally { + tx.finish(); + } +} +/** + * Allows to chain transactions. + */ +export function subtransaction(tx, fn, getDebugName) { + if (!tx) { + transaction(fn, getDebugName); + } + else { + fn(tx); + } +} +export class TransactionImpl { + _fn; + _getDebugName; + updatingObservers = []; + constructor(_fn, _getDebugName) { + this._fn = _fn; + this._getDebugName = _getDebugName; + getLogger()?.handleBeginTransaction(this); + } + getDebugName() { + if (this._getDebugName) { + return this._getDebugName(); + } + return getFunctionName(this._fn); + } + updateObserver(observer, observable) { + // When this gets called while finish is active, they will still get considered + this.updatingObservers.push({ observer, observable }); + observer.beginUpdate(observable); + } + finish() { + const updatingObservers = this.updatingObservers; + for (let i = 0; i < updatingObservers.length; i++) { + const { observer, observable } = updatingObservers[i]; + observer.endUpdate(observable); + } + // Prevent anyone from updating observers from now on. + this.updatingObservers = null; + getLogger()?.handleEndTransaction(); + } +} +export function observableValue(nameOrOwner, initialValue) { + let debugNameData; + if (typeof nameOrOwner === 'string') { + debugNameData = new DebugNameData(undefined, nameOrOwner, undefined); + } + else { + debugNameData = new DebugNameData(nameOrOwner, undefined, undefined); + } + return new ObservableValue(debugNameData, initialValue, strictEquals); +} +export class ObservableValue extends BaseObservable { + _debugNameData; + _equalityComparator; + _value; + get debugName() { + return this._debugNameData.getDebugName(this) ?? 'ObservableValue'; + } + constructor(_debugNameData, initialValue, _equalityComparator) { + super(); + this._debugNameData = _debugNameData; + this._equalityComparator = _equalityComparator; + this._value = initialValue; + } + get() { + return this._value; + } + set(value, tx, change) { + if (change === undefined && this._equalityComparator(this._value, value)) { + return; + } + let _tx; + if (!tx) { + tx = _tx = new TransactionImpl(() => { }, () => `Setting ${this.debugName}`); + } + try { + const oldValue = this._value; + this._setValue(value); + getLogger()?.handleObservableChanged(this, { oldValue, newValue: value, change, didChange: true, hadValue: true }); + for (const observer of this.observers) { + tx.updateObserver(observer, this); + observer.handleChange(this, change); + } + } + finally { + if (_tx) { + _tx.finish(); + } + } + } + toString() { + return `${this.debugName}: ${this._value}`; + } + _setValue(newValue) { + this._value = newValue; + } +} +/** + * A disposable observable. When disposed, its value is also disposed. + * When a new value is set, the previous value is disposed. + */ +export function disposableObservableValue(nameOrOwner, initialValue) { + let debugNameData; + if (typeof nameOrOwner === 'string') { + debugNameData = new DebugNameData(undefined, nameOrOwner, undefined); + } + else { + debugNameData = new DebugNameData(nameOrOwner, undefined, undefined); + } + return new DisposableObservableValue(debugNameData, initialValue, strictEquals); +} +export class DisposableObservableValue extends ObservableValue { + _setValue(newValue) { + if (this._value === newValue) { + return; + } + if (this._value) { + this._value.dispose(); + } + this._value = newValue; + } + dispose() { + this._value?.dispose(); + } +} //# sourceMappingURL=base.js.map \ No newline at end of file diff --git a/packages/core/dist/observableInternal/base.js.map b/packages/core/dist/observableInternal/base.js.map index 5cbd8505..33489642 100644 --- a/packages/core/dist/observableInternal/base.js.map +++ b/packages/core/dist/observableInternal/base.js.map @@ -1 +1 @@ -{"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/observableInternal/base.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,EAAE,aAAa,EAAc,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAC5E,OAAO,EAAkD,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEtG,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAsKxD,IAAI,8BAAoE,CAAC;AACzE,MAAM,UAAU,iCAAiC,CAAC,6BAAoE;IACrH,8BAA8B,GAAG,6BAA6B,CAAC;AAChE,CAAC;AAED,IAAI,aAAkC,CAAC;AACvC,MAAM,UAAU,gBAAgB,CAAC,YAAkC;IAClE,aAAa,GAAG,YAAY,CAAC;AAC9B,CAAC;AAGD,IAAI,QAA4B,CAAC;AACjC;;;EAGE;AACF,MAAM,UAAU,eAAe,CAAC,OAAwB;IACvD,QAAQ,GAAG,OAAO,CAAC;AACpB,CAAC;AAED,MAAM,OAAgB,oBAAoB;IACzC,IAAI,OAAO,KAAc,OAAO,IAAK,CAAC,CAAC,CAAC;IAIjC,aAAa;QACnB,IAAI,CAAC,GAAG,EAAE,CAAC;IACZ,CAAC;IAKD,cAAc;IACP,IAAI,CAAC,MAA2B;QACtC,IAAI,MAAM,EAAE;YACX,OAAO,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;SACnC;aAAM;YACN,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;SAClB;IACF,CAAC;IAKM,GAAG,CAAO,SAA6D,EAAE,aAAmD;QAClI,MAAM,KAAK,GAAG,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAuB,CAAC;QAChF,MAAM,EAAE,GAAG,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,SAAgD,CAAC,CAAC,CAAC,aAAa,CAAC;QAE1G,OAAO,QAAQ,CACd;YACC,KAAK;YACL,SAAS,EAAE,GAAG,EAAE;gBACf,MAAM,IAAI,GAAG,eAAe,CAAC,EAAE,CAAC,CAAC;gBACjC,IAAI,IAAI,KAAK,SAAS,EAAE;oBACvB,OAAO,IAAI,CAAC;iBACZ;gBAED,uGAAuG;gBACvG,MAAM,MAAM,GAAG,6FAA6F,CAAC;gBAC7G,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;gBACzC,IAAI,KAAK,EAAE;oBACV,OAAO,GAAG,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;iBACvC;gBACD,IAAI,CAAC,KAAK,EAAE;oBACX,OAAO,GAAG,IAAI,CAAC,SAAS,WAAW,CAAC;iBACpC;gBACD,OAAO,SAAS,CAAC;YAClB,CAAC;YACD,gBAAgB,EAAE,EAAE;SACpB,EACD,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CACzC,CAAC;IACH,CAAC;IAEM,GAAG;QACT,aAAa,CAAC,IAAI,CAAC,CAAC;QACpB,OAAO,IAAI,CAAC;IACb,CAAC;IAED;;;MAGE;IACK,OAAO;QACb,OAAO,QAAQ,CACd;YACC,KAAK,EAAE,SAAS;YAChB,SAAS,EAAE,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,cAAc;SAChD,EACD,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAC1C,CAAC;IACH,CAAC;IAEM,6BAA6B,CAAC,KAAsB,EAAE,WAAgC;QAC5F,KAAK,CAAC,GAAG,CAAC,8BAA+B,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC;QAC9D,OAAO,IAAI,CAAC;IACb,CAAC;IAED;;;;OAIG;IACI,YAAY,CAAC,KAAsB;QACzC,KAAK,CAAC,GAAG,CAAC,aAAc,CAAC,IAAI,CAAC,CAAC,CAAC;QAChC,OAAO,IAAI,CAAC;IACb,CAAC;IAID,IAAc,UAAU;QACvB,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;IACnB,CAAC;CACD;AAED,MAAM,OAAgB,cAAkC,SAAQ,oBAAgC;IAC5E,SAAS,GAAG,IAAI,GAAG,EAAa,CAAC;IAE7C,WAAW,CAAC,QAAmB;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;QAChC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC7B,IAAI,GAAG,KAAK,CAAC,EAAE;YACd,IAAI,CAAC,oBAAoB,EAAE,CAAC;SAC5B;IACF,CAAC;IAEM,cAAc,CAAC,QAAmB;QACxC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAChD,IAAI,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,EAAE;YACzC,IAAI,CAAC,qBAAqB,EAAE,CAAC;SAC7B;IACF,CAAC;IAES,oBAAoB,KAAW,CAAC;IAChC,qBAAqB,KAAW,CAAC;CAC3C;AAED;;;;GAIG;AAEH,MAAM,UAAU,WAAW,CAAC,EAA8B,EAAE,YAA2B;IACtF,MAAM,EAAE,GAAG,IAAI,eAAe,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;IACjD,IAAI;QACH,EAAE,CAAC,EAAE,CAAC,CAAC;KACP;YAAS;QACT,EAAE,CAAC,MAAM,EAAE,CAAC;KACZ;AACF,CAAC;AAED,IAAI,kBAAkB,GAA6B,SAAS,CAAC;AAE7D,MAAM,UAAU,iBAAiB,CAAC,EAA8B;IAC/D,IAAI,kBAAkB,EAAE;QACvB,EAAE,CAAC,kBAAkB,CAAC,CAAC;KACvB;SAAM;QACN,MAAM,EAAE,GAAG,IAAI,eAAe,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;QAC9C,kBAAkB,GAAG,EAAE,CAAC;QACxB,IAAI;YACH,EAAE,CAAC,EAAE,CAAC,CAAC;SACP;gBAAS;YACT,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,iEAAiE;YAC9E,kEAAkE;YAClE,kBAAkB,GAAG,SAAS,CAAC;SAC/B;KACD;AACF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,EAAuC,EAAE,YAA2B;IAC1G,MAAM,EAAE,GAAG,IAAI,eAAe,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;IACjD,IAAI;QACH,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;KACb;YAAS;QACT,EAAE,CAAC,MAAM,EAAE,CAAC;KACZ;AACF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,EAA4B,EAAE,EAA8B,EAAE,YAA2B;IACvH,IAAI,CAAC,EAAE,EAAE;QACR,WAAW,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;KAC9B;SAAM;QACN,EAAE,CAAC,EAAE,CAAC,CAAC;KACP;AACF,CAAC;AAED,MAAM,OAAO,eAAe;IAGC;IAAgC;IAFpD,iBAAiB,GAAmE,EAAE,CAAC;IAE/F,YAA4B,GAAa,EAAmB,aAA4B;QAA5D,QAAG,GAAH,GAAG,CAAU;QAAmB,kBAAa,GAAb,aAAa,CAAe;QACvF,SAAS,EAAE,EAAE,sBAAsB,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC;IAEM,YAAY;QAClB,IAAI,IAAI,CAAC,aAAa,EAAE;YACvB,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC;SAC5B;QACD,OAAO,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAClC,CAAC;IAEM,cAAc,CAAC,QAAmB,EAAE,UAA4B;QACtE,+EAA+E;QAC/E,IAAI,CAAC,iBAAkB,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,CAAC;QACvD,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IAClC,CAAC;IAEM,MAAM;QACZ,MAAM,iBAAiB,GAAG,IAAI,CAAC,iBAAkB,CAAC;QAClD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,iBAAiB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAClD,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC;YACtD,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;SAC/B;QACD,sDAAsD;QACtD,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAC9B,SAAS,EAAE,EAAE,oBAAoB,EAAE,CAAC;IACrC,CAAC;CACD;AAgBD,MAAM,UAAU,eAAe,CAAoB,WAA4B,EAAE,YAAe;IAC/F,IAAI,aAA4B,CAAC;IACjC,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE;QACpC,aAAa,GAAG,IAAI,aAAa,CAAC,SAAS,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;KACrE;SAAM;QACN,aAAa,GAAG,IAAI,aAAa,CAAC,WAAW,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;KACrE;IACD,OAAO,IAAI,eAAe,CAAC,aAAa,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;AACvE,CAAC;AAED,MAAM,OAAO,eACZ,SAAQ,cAA0B;IAShB;IAEA;IATR,MAAM,CAAI;IAEpB,IAAI,SAAS;QACZ,OAAO,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,iBAAiB,CAAC;IACpE,CAAC;IAED,YACkB,cAA6B,EAC9C,YAAe,EACE,mBAAwC;QAEzD,KAAK,EAAE,CAAC;QAJS,mBAAc,GAAd,cAAc,CAAe;QAE7B,wBAAmB,GAAnB,mBAAmB,CAAqB;QAGzD,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC;IAC5B,CAAC;IACe,GAAG;QAClB,OAAO,IAAI,CAAC,MAAM,CAAC;IACpB,CAAC;IAEM,GAAG,CAAC,KAAQ,EAAE,EAA4B,EAAE,MAAe;QACjE,IAAI,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE;YACzE,OAAO;SACP;QAED,IAAI,GAAgC,CAAC;QACrC,IAAI,CAAC,EAAE,EAAE;YACR,EAAE,GAAG,GAAG,GAAG,IAAI,eAAe,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,WAAW,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;SAC7E;QACD,IAAI;YACH,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC;YAC7B,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YACtB,SAAS,EAAE,EAAE,uBAAuB,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;YAEnH,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE;gBACtC,EAAE,CAAC,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;gBAClC,QAAQ,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;aACpC;SACD;gBAAS;YACT,IAAI,GAAG,EAAE;gBACR,GAAG,CAAC,MAAM,EAAE,CAAC;aACb;SACD;IACF,CAAC;IAEQ,QAAQ;QAChB,OAAO,GAAG,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;IAC5C,CAAC;IAES,SAAS,CAAC,QAAW;QAC9B,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;IACxB,CAAC;CACD;AAED;;;GAGG;AACH,MAAM,UAAU,yBAAyB,CAAoD,WAA4B,EAAE,YAAe;IACzI,IAAI,aAA4B,CAAC;IACjC,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE;QACpC,aAAa,GAAG,IAAI,aAAa,CAAC,SAAS,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;KACrE;SAAM;QACN,aAAa,GAAG,IAAI,aAAa,CAAC,WAAW,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;KACrE;IACD,OAAO,IAAI,yBAAyB,CAAC,aAAa,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;AACjF,CAAC;AAED,MAAM,OAAO,yBAA6E,SAAQ,eAA2B;IACzG,SAAS,CAAC,QAAW;QACvC,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,EAAE;YAC7B,OAAO;SACP;QACD,IAAI,IAAI,CAAC,MAAM,EAAE;YAChB,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;SACtB;QACD,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;IACxB,CAAC;IAEM,OAAO;QACb,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;IACxB,CAAC;CACD"} \ No newline at end of file +{"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/observableInternal/base.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/dist/observableInternal/commonFacade/cancellation.d.ts b/packages/core/dist/observableInternal/commonFacade/cancellation.d.ts index b3399641..3d035d97 100644 --- a/packages/core/dist/observableInternal/commonFacade/cancellation.d.ts +++ b/packages/core/dist/observableInternal/commonFacade/cancellation.d.ts @@ -1,2 +1,2 @@ -export { CancellationError } from '../../errors.js'; -export { CancellationToken, CancellationTokenSource } from '../../cancellation.js'; +export { CancellationError } from '../../errors.js'; +export { CancellationToken, CancellationTokenSource } from '../../cancellation.js'; diff --git a/packages/core/dist/observableInternal/commonFacade/cancellation.js b/packages/core/dist/observableInternal/commonFacade/cancellation.js index 2a932907..0f838258 100644 --- a/packages/core/dist/observableInternal/commonFacade/cancellation.js +++ b/packages/core/dist/observableInternal/commonFacade/cancellation.js @@ -1,7 +1,7 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ -export { CancellationError } from '../../errors.js'; -export { CancellationToken, CancellationTokenSource } from '../../cancellation.js'; +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +export { CancellationError } from '../../errors.js'; +export { CancellationToken, CancellationTokenSource } from '../../cancellation.js'; //# sourceMappingURL=cancellation.js.map \ No newline at end of file diff --git a/packages/core/dist/observableInternal/commonFacade/deps.d.ts b/packages/core/dist/observableInternal/commonFacade/deps.d.ts index ab9f92ed..2c420227 100644 --- a/packages/core/dist/observableInternal/commonFacade/deps.d.ts +++ b/packages/core/dist/observableInternal/commonFacade/deps.d.ts @@ -1,5 +1,5 @@ -export { assertFn } from '../../assert.js'; -export { type EqualityComparer, strictEquals } from '../../equals.js'; -export { BugIndicatingError, onBugIndicatingError } from '../../errors.js'; -export { Event, type IValueWithChangeEvent } from '../../event.js'; -export { DisposableStore, type IDisposable, markAsDisposed, toDisposable, trackDisposable } from '../../lifecycle.js'; +export { assertFn } from '../../assert.js'; +export { type EqualityComparer, strictEquals } from '../../equals.js'; +export { BugIndicatingError, onBugIndicatingError } from '../../errors.js'; +export { Event, type IValueWithChangeEvent } from '../../event.js'; +export { DisposableStore, type IDisposable, markAsDisposed, toDisposable, trackDisposable } from '../../lifecycle.js'; diff --git a/packages/core/dist/observableInternal/commonFacade/deps.js b/packages/core/dist/observableInternal/commonFacade/deps.js index 806310a5..85572e98 100644 --- a/packages/core/dist/observableInternal/commonFacade/deps.js +++ b/packages/core/dist/observableInternal/commonFacade/deps.js @@ -1,10 +1,10 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ -export { assertFn } from '../../assert.js'; -export { strictEquals } from '../../equals.js'; -export { BugIndicatingError, onBugIndicatingError } from '../../errors.js'; -export { Event } from '../../event.js'; -export { DisposableStore, markAsDisposed, toDisposable, trackDisposable } from '../../lifecycle.js'; +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +export { assertFn } from '../../assert.js'; +export { strictEquals } from '../../equals.js'; +export { BugIndicatingError, onBugIndicatingError } from '../../errors.js'; +export { Event } from '../../event.js'; +export { DisposableStore, markAsDisposed, toDisposable, trackDisposable } from '../../lifecycle.js'; //# sourceMappingURL=deps.js.map \ No newline at end of file diff --git a/packages/core/dist/observableInternal/debugName.d.ts b/packages/core/dist/observableInternal/debugName.d.ts index e90a1d83..87db0b16 100644 --- a/packages/core/dist/observableInternal/debugName.d.ts +++ b/packages/core/dist/observableInternal/debugName.d.ts @@ -1,32 +1,32 @@ -export interface IDebugNameData { - /** - * The owner object of an observable. - * Used for debugging only, such as computing a name for the observable by iterating over the fields of the owner. - */ - readonly owner?: DebugOwner | undefined; - /** - * A string or function that returns a string that represents the name of the observable. - * Used for debugging only. - */ - readonly debugName?: DebugNameSource | undefined; - /** - * A function that points to the defining function of the object. - * Used for debugging only. - */ - readonly debugReferenceFn?: Function | undefined; -} -export declare class DebugNameData { - readonly owner: DebugOwner | undefined; - readonly debugNameSource: DebugNameSource | undefined; - readonly referenceFn: Function | undefined; - constructor(owner: DebugOwner | undefined, debugNameSource: DebugNameSource | undefined, referenceFn: Function | undefined); - getDebugName(target: object): string | undefined; -} -/** - * The owning object of an observable. - * Is only used for debugging purposes, such as computing a name for the observable by iterating over the fields of the owner. - */ -export type DebugOwner = object | undefined; -export type DebugNameSource = string | (() => string | undefined); -export declare function getDebugName(target: object, data: DebugNameData): string | undefined; -export declare function getFunctionName(fn: Function): string | undefined; +export interface IDebugNameData { + /** + * The owner object of an observable. + * Used for debugging only, such as computing a name for the observable by iterating over the fields of the owner. + */ + readonly owner?: DebugOwner | undefined; + /** + * A string or function that returns a string that represents the name of the observable. + * Used for debugging only. + */ + readonly debugName?: DebugNameSource | undefined; + /** + * A function that points to the defining function of the object. + * Used for debugging only. + */ + readonly debugReferenceFn?: Function | undefined; +} +export declare class DebugNameData { + readonly owner: DebugOwner | undefined; + readonly debugNameSource: DebugNameSource | undefined; + readonly referenceFn: Function | undefined; + constructor(owner: DebugOwner | undefined, debugNameSource: DebugNameSource | undefined, referenceFn: Function | undefined); + getDebugName(target: object): string | undefined; +} +/** + * The owning object of an observable. + * Is only used for debugging purposes, such as computing a name for the observable by iterating over the fields of the owner. + */ +export type DebugOwner = object | undefined; +export type DebugNameSource = string | (() => string | undefined); +export declare function getDebugName(target: object, data: DebugNameData): string | undefined; +export declare function getFunctionName(fn: Function): string | undefined; diff --git a/packages/core/dist/observableInternal/debugName.js b/packages/core/dist/observableInternal/debugName.js index 982fe91f..9c1726fb 100644 --- a/packages/core/dist/observableInternal/debugName.js +++ b/packages/core/dist/observableInternal/debugName.js @@ -1,108 +1,108 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ -export class DebugNameData { - owner; - debugNameSource; - referenceFn; - constructor(owner, debugNameSource, referenceFn) { - this.owner = owner; - this.debugNameSource = debugNameSource; - this.referenceFn = referenceFn; - } - getDebugName(target) { - return getDebugName(target, this); - } -} -const countPerName = new Map(); -const cachedDebugName = new WeakMap(); -export function getDebugName(target, data) { - const cached = cachedDebugName.get(target); - if (cached) { - return cached; - } - const dbgName = computeDebugName(target, data); - if (dbgName) { - let count = countPerName.get(dbgName) ?? 0; - count++; - countPerName.set(dbgName, count); - const result = count === 1 ? dbgName : `${dbgName}#${count}`; - cachedDebugName.set(target, result); - return result; - } - return undefined; -} -function computeDebugName(self, data) { - const cached = cachedDebugName.get(self); - if (cached) { - return cached; - } - const ownerStr = data.owner ? formatOwner(data.owner) + `.` : ''; - let result; - const debugNameSource = data.debugNameSource; - if (debugNameSource !== undefined) { - if (typeof debugNameSource === 'function') { - result = debugNameSource(); - if (result !== undefined) { - return ownerStr + result; - } - } - else { - return ownerStr + debugNameSource; - } - } - const referenceFn = data.referenceFn; - if (referenceFn !== undefined) { - result = getFunctionName(referenceFn); - if (result !== undefined) { - return ownerStr + result; - } - } - if (data.owner !== undefined) { - const key = findKey(data.owner, self); - if (key !== undefined) { - return ownerStr + key; - } - } - return undefined; -} -function findKey(obj, value) { - for (const key in obj) { - if (obj[key] === value) { - return key; - } - } - return undefined; -} -const countPerClassName = new Map(); -const ownerId = new WeakMap(); -function formatOwner(owner) { - const id = ownerId.get(owner); - if (id) { - return id; - } - const className = getClassName(owner); - let count = countPerClassName.get(className) ?? 0; - count++; - countPerClassName.set(className, count); - const result = count === 1 ? className : `${className}#${count}`; - ownerId.set(owner, result); - return result; -} -function getClassName(obj) { - const ctor = obj.constructor; - if (ctor) { - return ctor.name; - } - return 'Object'; -} -export function getFunctionName(fn) { - const fnSrc = fn.toString(); - // Pattern: /** @description ... */ - const regexp = /\/\*\*\s*@description\s*([^*]*)\*\//; - const match = regexp.exec(fnSrc); - const result = match ? match[1] : undefined; - return result?.trim(); -} +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +export class DebugNameData { + owner; + debugNameSource; + referenceFn; + constructor(owner, debugNameSource, referenceFn) { + this.owner = owner; + this.debugNameSource = debugNameSource; + this.referenceFn = referenceFn; + } + getDebugName(target) { + return getDebugName(target, this); + } +} +const countPerName = new Map(); +const cachedDebugName = new WeakMap(); +export function getDebugName(target, data) { + const cached = cachedDebugName.get(target); + if (cached) { + return cached; + } + const dbgName = computeDebugName(target, data); + if (dbgName) { + let count = countPerName.get(dbgName) ?? 0; + count++; + countPerName.set(dbgName, count); + const result = count === 1 ? dbgName : `${dbgName}#${count}`; + cachedDebugName.set(target, result); + return result; + } + return undefined; +} +function computeDebugName(self, data) { + const cached = cachedDebugName.get(self); + if (cached) { + return cached; + } + const ownerStr = data.owner ? formatOwner(data.owner) + `.` : ''; + let result; + const debugNameSource = data.debugNameSource; + if (debugNameSource !== undefined) { + if (typeof debugNameSource === 'function') { + result = debugNameSource(); + if (result !== undefined) { + return ownerStr + result; + } + } + else { + return ownerStr + debugNameSource; + } + } + const referenceFn = data.referenceFn; + if (referenceFn !== undefined) { + result = getFunctionName(referenceFn); + if (result !== undefined) { + return ownerStr + result; + } + } + if (data.owner !== undefined) { + const key = findKey(data.owner, self); + if (key !== undefined) { + return ownerStr + key; + } + } + return undefined; +} +function findKey(obj, value) { + for (const key in obj) { + if (obj[key] === value) { + return key; + } + } + return undefined; +} +const countPerClassName = new Map(); +const ownerId = new WeakMap(); +function formatOwner(owner) { + const id = ownerId.get(owner); + if (id) { + return id; + } + const className = getClassName(owner); + let count = countPerClassName.get(className) ?? 0; + count++; + countPerClassName.set(className, count); + const result = count === 1 ? className : `${className}#${count}`; + ownerId.set(owner, result); + return result; +} +function getClassName(obj) { + const ctor = obj.constructor; + if (ctor) { + return ctor.name; + } + return 'Object'; +} +export function getFunctionName(fn) { + const fnSrc = fn.toString(); + // Pattern: /** @description ... */ + const regexp = /\/\*\*\s*@description\s*([^*]*)\*\//; + const match = regexp.exec(fnSrc); + const result = match ? match[1] : undefined; + return result?.trim(); +} //# sourceMappingURL=debugName.js.map \ No newline at end of file diff --git a/packages/core/dist/observableInternal/debugName.js.map b/packages/core/dist/observableInternal/debugName.js.map index df91dead..838f076c 100644 --- a/packages/core/dist/observableInternal/debugName.js.map +++ b/packages/core/dist/observableInternal/debugName.js.map @@ -1 +1 @@ -{"version":3,"file":"debugName.js","sourceRoot":"","sources":["../../src/observableInternal/debugName.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAsBhG,MAAM,OAAO,aAAa;IAER;IACA;IACA;IAHjB,YACiB,KAA6B,EAC7B,eAA4C,EAC5C,WAAiC;QAFjC,UAAK,GAAL,KAAK,CAAwB;QAC7B,oBAAe,GAAf,eAAe,CAA6B;QAC5C,gBAAW,GAAX,WAAW,CAAsB;IAC9C,CAAC;IAEE,YAAY,CAAC,MAAc;QACjC,OAAO,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACnC,CAAC;CACD;AASD,MAAM,YAAY,GAAG,IAAI,GAAG,EAAkB,CAAC;AAC/C,MAAM,eAAe,GAAG,IAAI,OAAO,EAAkB,CAAC;AAEtD,MAAM,UAAU,YAAY,CAAC,MAAc,EAAE,IAAmB;IAC/D,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC3C,IAAI,MAAM,EAAE;QACX,OAAO,MAAM,CAAC;KACd;IAED,MAAM,OAAO,GAAG,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC/C,IAAI,OAAO,EAAE;QACZ,IAAI,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC3C,KAAK,EAAE,CAAC;QACR,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACjC,MAAM,MAAM,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,IAAI,KAAK,EAAE,CAAC;QAC7D,eAAe,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACpC,OAAO,MAAM,CAAC;KACd;IACD,OAAO,SAAS,CAAC;AAClB,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAY,EAAE,IAAmB;IAC1D,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACzC,IAAI,MAAM,EAAE;QACX,OAAO,MAAM,CAAC;KACd;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAEjE,IAAI,MAA0B,CAAC;IAC/B,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;IAC7C,IAAI,eAAe,KAAK,SAAS,EAAE;QAClC,IAAI,OAAO,eAAe,KAAK,UAAU,EAAE;YAC1C,MAAM,GAAG,eAAe,EAAE,CAAC;YAC3B,IAAI,MAAM,KAAK,SAAS,EAAE;gBACzB,OAAO,QAAQ,GAAG,MAAM,CAAC;aACzB;SACD;aAAM;YACN,OAAO,QAAQ,GAAG,eAAe,CAAC;SAClC;KACD;IAED,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;IACrC,IAAI,WAAW,KAAK,SAAS,EAAE;QAC9B,MAAM,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;QACtC,IAAI,MAAM,KAAK,SAAS,EAAE;YACzB,OAAO,QAAQ,GAAG,MAAM,CAAC;SACzB;KACD;IAED,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE;QAC7B,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACtC,IAAI,GAAG,KAAK,SAAS,EAAE;YACtB,OAAO,QAAQ,GAAG,GAAG,CAAC;SACtB;KACD;IACD,OAAO,SAAS,CAAC;AAClB,CAAC;AAED,SAAS,OAAO,CAAC,GAAW,EAAE,KAAa;IAC1C,KAAK,MAAM,GAAG,IAAI,GAAG,EAAE;QACtB,IAAK,GAAW,CAAC,GAAG,CAAC,KAAK,KAAK,EAAE;YAChC,OAAO,GAAG,CAAC;SACX;KACD;IACD,OAAO,SAAS,CAAC;AAClB,CAAC;AAED,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAkB,CAAC;AACpD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAkB,CAAC;AAE9C,SAAS,WAAW,CAAC,KAAa;IACjC,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC9B,IAAI,EAAE,EAAE;QACP,OAAO,EAAE,CAAC;KACV;IACD,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;IACtC,IAAI,KAAK,GAAG,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAClD,KAAK,EAAE,CAAC;IACR,iBAAiB,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IACxC,MAAM,MAAM,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,IAAI,KAAK,EAAE,CAAC;IACjE,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC3B,OAAO,MAAM,CAAC;AACf,CAAC;AAED,SAAS,YAAY,CAAC,GAAW;IAChC,MAAM,IAAI,GAAG,GAAG,CAAC,WAAW,CAAC;IAC7B,IAAI,IAAI,EAAE;QACT,OAAO,IAAI,CAAC,IAAI,CAAC;KACjB;IACD,OAAO,QAAQ,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,EAAY;IAC3C,MAAM,KAAK,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;IAC5B,mCAAmC;IACnC,MAAM,MAAM,GAAG,qCAAqC,CAAC;IACrD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACjC,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC5C,OAAO,MAAM,EAAE,IAAI,EAAE,CAAC;AACvB,CAAC"} \ No newline at end of file +{"version":3,"file":"debugName.js","sourceRoot":"","sources":["../../src/observableInternal/debugName.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/dist/observableInternal/derived.d.ts b/packages/core/dist/observableInternal/derived.d.ts index d77f9b3d..52fc8828 100644 --- a/packages/core/dist/observableInternal/derived.d.ts +++ b/packages/core/dist/observableInternal/derived.d.ts @@ -1,74 +1,74 @@ -import { BaseObservable, IChangeContext, IObservable, IObservableWithChange, IObserver, IReader, ISettableObservable, ITransaction } from './base.js'; -import { DebugNameData, DebugOwner, IDebugNameData } from './debugName.js'; -import { DisposableStore, EqualityComparer, IDisposable } from './commonFacade/deps.js'; -/** - * Creates an observable that is derived from other observables. - * The value is only recomputed when absolutely needed. - * - * {@link computeFn} should start with a JS Doc using `@description` to name the derived. - */ -export declare function derived(computeFn: (reader: IReader) => T): IObservable; -export declare function derived(owner: DebugOwner, computeFn: (reader: IReader) => T): IObservable; -export declare function derivedWithSetter(owner: DebugOwner | undefined, computeFn: (reader: IReader) => T, setter: (value: T, transaction: ITransaction | undefined) => void): ISettableObservable; -export declare function derivedOpts(options: IDebugNameData & { - equalsFn?: EqualityComparer; - onLastObserverRemoved?: (() => void); -}, computeFn: (reader: IReader) => T): IObservable; -/** - * Represents an observable that is derived from other observables. - * The value is only recomputed when absolutely needed. - * - * {@link computeFn} should start with a JS Doc using `@description` to name the derived. - * - * Use `createEmptyChangeSummary` to create a "change summary" that can collect the changes. - * Use `handleChange` to add a reported change to the change summary. - * The compute function is given the last change summary. - * The change summary is discarded after the compute function was called. - * - * @see derived - */ -export declare function derivedHandleChanges(options: IDebugNameData & { - createEmptyChangeSummary: () => TChangeSummary; - handleChange: (context: IChangeContext, changeSummary: TChangeSummary) => boolean; - equalityComparer?: EqualityComparer; -}, computeFn: (reader: IReader, changeSummary: TChangeSummary) => T): IObservable; -export declare function derivedWithStore(computeFn: (reader: IReader, store: DisposableStore) => T): IObservable; -export declare function derivedWithStore(owner: object, computeFn: (reader: IReader, store: DisposableStore) => T): IObservable; -export declare function derivedDisposable(computeFn: (reader: IReader) => T): IObservable; -export declare function derivedDisposable(owner: DebugOwner, computeFn: (reader: IReader) => T): IObservable; -export declare class Derived extends BaseObservable implements IReader, IObserver { - readonly _debugNameData: DebugNameData; - readonly _computeFn: (reader: IReader, changeSummary: TChangeSummary) => T; - private readonly createChangeSummary; - private readonly _handleChange; - private readonly _handleLastObserverRemoved; - private readonly _equalityComparator; - private state; - private value; - private updateCount; - private dependencies; - private dependenciesToBeRemoved; - private changeSummary; - private _isUpdating; - private _isComputing; - get debugName(): string; - constructor(_debugNameData: DebugNameData, _computeFn: (reader: IReader, changeSummary: TChangeSummary) => T, createChangeSummary: (() => TChangeSummary) | undefined, _handleChange: ((context: IChangeContext, summary: TChangeSummary) => boolean) | undefined, _handleLastObserverRemoved: (() => void) | undefined, _equalityComparator: EqualityComparer); - protected onLastObserverRemoved(): void; - get(): T; - private _recomputeIfNeeded; - toString(): string; - beginUpdate(_observable: IObservable): void; - private _removedObserverToCallEndUpdateOn; - endUpdate(_observable: IObservable): void; - handlePossibleChange(observable: IObservable): void; - handleChange(observable: IObservableWithChange, change: TChange): void; - private _isReaderValid; - readObservable(observable: IObservable): T; - addObserver(observer: IObserver): void; - removeObserver(observer: IObserver): void; - log(): IObservableWithChange; -} -export declare class DerivedWithSetter extends Derived implements ISettableObservable { - readonly set: (value: T, tx: ITransaction | undefined) => void; - constructor(debugNameData: DebugNameData, computeFn: (reader: IReader, changeSummary: TChangeSummary) => T, createChangeSummary: (() => TChangeSummary) | undefined, handleChange: ((context: IChangeContext, summary: TChangeSummary) => boolean) | undefined, handleLastObserverRemoved: (() => void) | undefined, equalityComparator: EqualityComparer, set: (value: T, tx: ITransaction | undefined) => void); -} +import { BaseObservable, IChangeContext, IObservable, IObservableWithChange, IObserver, IReader, ISettableObservable, ITransaction } from './base.js'; +import { DebugNameData, DebugOwner, IDebugNameData } from './debugName.js'; +import { DisposableStore, EqualityComparer, IDisposable } from './commonFacade/deps.js'; +/** + * Creates an observable that is derived from other observables. + * The value is only recomputed when absolutely needed. + * + * {@link computeFn} should start with a JS Doc using `@description` to name the derived. + */ +export declare function derived(computeFn: (reader: IReader) => T): IObservable; +export declare function derived(owner: DebugOwner, computeFn: (reader: IReader) => T): IObservable; +export declare function derivedWithSetter(owner: DebugOwner | undefined, computeFn: (reader: IReader) => T, setter: (value: T, transaction: ITransaction | undefined) => void): ISettableObservable; +export declare function derivedOpts(options: IDebugNameData & { + equalsFn?: EqualityComparer; + onLastObserverRemoved?: (() => void); +}, computeFn: (reader: IReader) => T): IObservable; +/** + * Represents an observable that is derived from other observables. + * The value is only recomputed when absolutely needed. + * + * {@link computeFn} should start with a JS Doc using `@description` to name the derived. + * + * Use `createEmptyChangeSummary` to create a "change summary" that can collect the changes. + * Use `handleChange` to add a reported change to the change summary. + * The compute function is given the last change summary. + * The change summary is discarded after the compute function was called. + * + * @see derived + */ +export declare function derivedHandleChanges(options: IDebugNameData & { + createEmptyChangeSummary: () => TChangeSummary; + handleChange: (context: IChangeContext, changeSummary: TChangeSummary) => boolean; + equalityComparer?: EqualityComparer; +}, computeFn: (reader: IReader, changeSummary: TChangeSummary) => T): IObservable; +export declare function derivedWithStore(computeFn: (reader: IReader, store: DisposableStore) => T): IObservable; +export declare function derivedWithStore(owner: object, computeFn: (reader: IReader, store: DisposableStore) => T): IObservable; +export declare function derivedDisposable(computeFn: (reader: IReader) => T): IObservable; +export declare function derivedDisposable(owner: DebugOwner, computeFn: (reader: IReader) => T): IObservable; +export declare class Derived extends BaseObservable implements IReader, IObserver { + readonly _debugNameData: DebugNameData; + readonly _computeFn: (reader: IReader, changeSummary: TChangeSummary) => T; + private readonly createChangeSummary; + private readonly _handleChange; + private readonly _handleLastObserverRemoved; + private readonly _equalityComparator; + private state; + private value; + private updateCount; + private dependencies; + private dependenciesToBeRemoved; + private changeSummary; + private _isUpdating; + private _isComputing; + get debugName(): string; + constructor(_debugNameData: DebugNameData, _computeFn: (reader: IReader, changeSummary: TChangeSummary) => T, createChangeSummary: (() => TChangeSummary) | undefined, _handleChange: ((context: IChangeContext, summary: TChangeSummary) => boolean) | undefined, _handleLastObserverRemoved: (() => void) | undefined, _equalityComparator: EqualityComparer); + protected onLastObserverRemoved(): void; + get(): T; + private _recomputeIfNeeded; + toString(): string; + beginUpdate(_observable: IObservable): void; + private _removedObserverToCallEndUpdateOn; + endUpdate(_observable: IObservable): void; + handlePossibleChange(observable: IObservable): void; + handleChange(observable: IObservableWithChange, change: TChange): void; + private _isReaderValid; + readObservable(observable: IObservable): T; + addObserver(observer: IObserver): void; + removeObserver(observer: IObserver): void; + log(): IObservableWithChange; +} +export declare class DerivedWithSetter extends Derived implements ISettableObservable { + readonly set: (value: T, tx: ITransaction | undefined) => void; + constructor(debugNameData: DebugNameData, computeFn: (reader: IReader, changeSummary: TChangeSummary) => T, createChangeSummary: (() => TChangeSummary) | undefined, handleChange: ((context: IChangeContext, summary: TChangeSummary) => boolean) | undefined, handleLastObserverRemoved: (() => void) | undefined, equalityComparator: EqualityComparer, set: (value: T, tx: ITransaction | undefined) => void); +} diff --git a/packages/core/dist/observableInternal/derived.js b/packages/core/dist/observableInternal/derived.js index e30bba08..d08af4e1 100644 --- a/packages/core/dist/observableInternal/derived.js +++ b/packages/core/dist/observableInternal/derived.js @@ -1,377 +1,377 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ -import { BaseObservable, _setDerivedOpts, } from './base.js'; -import { DebugNameData } from './debugName.js'; -import { BugIndicatingError, DisposableStore, assertFn, onBugIndicatingError, strictEquals } from './commonFacade/deps.js'; -import { getLogger } from './logging.js'; -export function derived(computeFnOrOwner, computeFn) { - if (computeFn !== undefined) { - return new Derived(new DebugNameData(computeFnOrOwner, undefined, computeFn), computeFn, undefined, undefined, undefined, strictEquals); - } - return new Derived(new DebugNameData(undefined, undefined, computeFnOrOwner), computeFnOrOwner, undefined, undefined, undefined, strictEquals); -} -export function derivedWithSetter(owner, computeFn, setter) { - return new DerivedWithSetter(new DebugNameData(owner, undefined, computeFn), computeFn, undefined, undefined, undefined, strictEquals, setter); -} -export function derivedOpts(options, computeFn) { - return new Derived(new DebugNameData(options.owner, options.debugName, options.debugReferenceFn), computeFn, undefined, undefined, options.onLastObserverRemoved, options.equalsFn ?? strictEquals); -} -_setDerivedOpts(derivedOpts); -/** - * Represents an observable that is derived from other observables. - * The value is only recomputed when absolutely needed. - * - * {@link computeFn} should start with a JS Doc using `@description` to name the derived. - * - * Use `createEmptyChangeSummary` to create a "change summary" that can collect the changes. - * Use `handleChange` to add a reported change to the change summary. - * The compute function is given the last change summary. - * The change summary is discarded after the compute function was called. - * - * @see derived - */ -export function derivedHandleChanges(options, computeFn) { - return new Derived(new DebugNameData(options.owner, options.debugName, undefined), computeFn, options.createEmptyChangeSummary, options.handleChange, undefined, options.equalityComparer ?? strictEquals); -} -export function derivedWithStore(computeFnOrOwner, computeFnOrUndefined) { - let computeFn; - let owner; - if (computeFnOrUndefined === undefined) { - computeFn = computeFnOrOwner; - owner = undefined; - } - else { - owner = computeFnOrOwner; - computeFn = computeFnOrUndefined; - } - const store = new DisposableStore(); - return new Derived(new DebugNameData(owner, undefined, computeFn), r => { - store.clear(); - return computeFn(r, store); - }, undefined, undefined, () => store.dispose(), strictEquals); -} -export function derivedDisposable(computeFnOrOwner, computeFnOrUndefined) { - let computeFn; - let owner; - if (computeFnOrUndefined === undefined) { - computeFn = computeFnOrOwner; - owner = undefined; - } - else { - owner = computeFnOrOwner; - computeFn = computeFnOrUndefined; - } - let store = undefined; - return new Derived(new DebugNameData(owner, undefined, computeFn), r => { - if (!store) { - store = new DisposableStore(); - } - else { - store.clear(); - } - const result = computeFn(r); - if (result) { - store.add(result); - } - return result; - }, undefined, undefined, () => { - if (store) { - store.dispose(); - store = undefined; - } - }, strictEquals); -} -var DerivedState; -(function (DerivedState) { - /** Initial state, no previous value, recomputation needed */ - DerivedState[DerivedState["initial"] = 0] = "initial"; - /** - * A dependency could have changed. - * We need to explicitly ask them if at least one dependency changed. - */ - DerivedState[DerivedState["dependenciesMightHaveChanged"] = 1] = "dependenciesMightHaveChanged"; - /** - * A dependency changed and we need to recompute. - * After recomputation, we need to check the previous value to see if we changed as well. - */ - DerivedState[DerivedState["stale"] = 2] = "stale"; - /** - * No change reported, our cached value is up to date. - */ - DerivedState[DerivedState["upToDate"] = 3] = "upToDate"; -})(DerivedState || (DerivedState = {})); -export class Derived extends BaseObservable { - _debugNameData; - _computeFn; - createChangeSummary; - _handleChange; - _handleLastObserverRemoved; - _equalityComparator; - state = 0 /* DerivedState.initial */; - value = undefined; - updateCount = 0; - dependencies = new Set(); - dependenciesToBeRemoved = new Set(); - changeSummary = undefined; - _isUpdating = false; - _isComputing = false; - get debugName() { - return this._debugNameData.getDebugName(this) ?? '(anonymous)'; - } - constructor(_debugNameData, _computeFn, createChangeSummary, _handleChange, _handleLastObserverRemoved = undefined, _equalityComparator) { - super(); - this._debugNameData = _debugNameData; - this._computeFn = _computeFn; - this.createChangeSummary = createChangeSummary; - this._handleChange = _handleChange; - this._handleLastObserverRemoved = _handleLastObserverRemoved; - this._equalityComparator = _equalityComparator; - this.changeSummary = this.createChangeSummary?.(); - getLogger()?.handleDerivedCreated(this); - } - onLastObserverRemoved() { - /** - * We are not tracking changes anymore, thus we have to assume - * that our cache is invalid. - */ - this.state = 0 /* DerivedState.initial */; - this.value = undefined; - getLogger()?.handleDerivedCleared(this); - for (const d of this.dependencies) { - d.removeObserver(this); - } - this.dependencies.clear(); - this._handleLastObserverRemoved?.(); - } - get() { - if (this._isComputing) { - throw new BugIndicatingError('Cyclic deriveds are not supported yet!'); - } - if (this.observers.size === 0) { - let result; - // Without observers, we don't know when to clean up stuff. - // Thus, we don't cache anything to prevent memory leaks. - try { - this._isReaderValid = true; - result = this._computeFn(this, this.createChangeSummary?.()); - } - finally { - this._isReaderValid = false; - } - // Clear new dependencies - this.onLastObserverRemoved(); - return result; - } - else { - do { - // We might not get a notification for a dependency that changed while it is updating, - // thus we also have to ask all our depedencies if they changed in this case. - if (this.state === 1 /* DerivedState.dependenciesMightHaveChanged */) { - for (const d of this.dependencies) { - /** might call {@link handleChange} indirectly, which could make us stale */ - d.reportChanges(); - if (this.state === 2 /* DerivedState.stale */) { - // The other dependencies will refresh on demand, so early break - break; - } - } - } - // We called report changes of all dependencies. - // If we are still not stale, we can assume to be up to date again. - if (this.state === 1 /* DerivedState.dependenciesMightHaveChanged */) { - this.state = 3 /* DerivedState.upToDate */; - } - this._recomputeIfNeeded(); - // In case recomputation changed one of our dependencies, we need to recompute again. - } while (this.state !== 3 /* DerivedState.upToDate */); - return this.value; - } - } - _recomputeIfNeeded() { - if (this.state === 3 /* DerivedState.upToDate */) { - return; - } - const emptySet = this.dependenciesToBeRemoved; - this.dependenciesToBeRemoved = this.dependencies; - this.dependencies = emptySet; - const hadValue = this.state !== 0 /* DerivedState.initial */; - const oldValue = this.value; - this.state = 3 /* DerivedState.upToDate */; - let didChange = false; - this._isComputing = false; // TODO@hediet: Set to true and investigate diff editor scrolling issues! (also see test.skip('catches cyclic dependencies') - try { - const changeSummary = this.changeSummary; - this.changeSummary = this.createChangeSummary?.(); - try { - this._isReaderValid = true; - /** might call {@link handleChange} indirectly, which could invalidate us */ - this.value = this._computeFn(this, changeSummary); - } - finally { - this._isReaderValid = false; - // We don't want our observed observables to think that they are (not even temporarily) not being observed. - // Thus, we only unsubscribe from observables that are definitely not read anymore. - for (const o of this.dependenciesToBeRemoved) { - o.removeObserver(this); - } - this.dependenciesToBeRemoved.clear(); - } - didChange = hadValue && !(this._equalityComparator(oldValue, this.value)); - getLogger()?.handleDerivedRecomputed(this, { - oldValue, - newValue: this.value, - change: undefined, - didChange, - hadValue, - }); - } - catch (e) { - onBugIndicatingError(e); - } - this._isComputing = false; - if (didChange) { - for (const r of this.observers) { - r.handleChange(this, undefined); - } - } - } - toString() { - return `LazyDerived<${this.debugName}>`; - } - // IObserver Implementation - beginUpdate(_observable) { - if (this._isUpdating) { - throw new BugIndicatingError('Cyclic deriveds are not supported yet!'); - } - this.updateCount++; - this._isUpdating = true; - try { - const propagateBeginUpdate = this.updateCount === 1; - if (this.state === 3 /* DerivedState.upToDate */) { - this.state = 1 /* DerivedState.dependenciesMightHaveChanged */; - // If we propagate begin update, that will already signal a possible change. - if (!propagateBeginUpdate) { - for (const r of this.observers) { - r.handlePossibleChange(this); - } - } - } - if (propagateBeginUpdate) { - for (const r of this.observers) { - r.beginUpdate(this); // This signals a possible change - } - } - } - finally { - this._isUpdating = false; - } - } - _removedObserverToCallEndUpdateOn = null; - endUpdate(_observable) { - this.updateCount--; - if (this.updateCount === 0) { - // End update could change the observer list. - const observers = [...this.observers]; - for (const r of observers) { - r.endUpdate(this); - } - if (this._removedObserverToCallEndUpdateOn) { - const observers = [...this._removedObserverToCallEndUpdateOn]; - this._removedObserverToCallEndUpdateOn = null; - for (const r of observers) { - r.endUpdate(this); - } - } - } - assertFn(() => this.updateCount >= 0); - } - handlePossibleChange(observable) { - // In all other states, observers already know that we might have changed. - if (this.state === 3 /* DerivedState.upToDate */ && this.dependencies.has(observable) && !this.dependenciesToBeRemoved.has(observable)) { - this.state = 1 /* DerivedState.dependenciesMightHaveChanged */; - for (const r of this.observers) { - r.handlePossibleChange(this); - } - } - } - handleChange(observable, change) { - if (this.dependencies.has(observable) && !this.dependenciesToBeRemoved.has(observable)) { - let shouldReact = false; - try { - shouldReact = this._handleChange ? this._handleChange({ - changedObservable: observable, - change, - didChange: (o) => o === observable, - }, this.changeSummary) : true; - } - catch (e) { - onBugIndicatingError(e); - } - const wasUpToDate = this.state === 3 /* DerivedState.upToDate */; - if (shouldReact && (this.state === 1 /* DerivedState.dependenciesMightHaveChanged */ || wasUpToDate)) { - this.state = 2 /* DerivedState.stale */; - if (wasUpToDate) { - for (const r of this.observers) { - r.handlePossibleChange(this); - } - } - } - } - } - // IReader Implementation - _isReaderValid = false; - readObservable(observable) { - if (!this._isReaderValid) { - throw new BugIndicatingError('The reader object cannot be used outside its compute function!'); - } - // Subscribe before getting the value to enable caching - observable.addObserver(this); - /** This might call {@link handleChange} indirectly, which could invalidate us */ - const value = observable.get(); - // Which is why we only add the observable to the dependencies now. - this.dependencies.add(observable); - this.dependenciesToBeRemoved.delete(observable); - return value; - } - addObserver(observer) { - const shouldCallBeginUpdate = !this.observers.has(observer) && this.updateCount > 0; - super.addObserver(observer); - if (shouldCallBeginUpdate) { - if (this._removedObserverToCallEndUpdateOn && this._removedObserverToCallEndUpdateOn.has(observer)) { - this._removedObserverToCallEndUpdateOn.delete(observer); - } - else { - observer.beginUpdate(this); - } - } - } - removeObserver(observer) { - if (this.observers.has(observer) && this.updateCount > 0) { - if (!this._removedObserverToCallEndUpdateOn) { - this._removedObserverToCallEndUpdateOn = new Set(); - } - this._removedObserverToCallEndUpdateOn.add(observer); - } - super.removeObserver(observer); - } - log() { - if (!getLogger()) { - super.log(); - getLogger()?.handleDerivedCreated(this); - } - else { - super.log(); - } - return this; - } -} -export class DerivedWithSetter extends Derived { - set; - constructor(debugNameData, computeFn, createChangeSummary, handleChange, handleLastObserverRemoved = undefined, equalityComparator, set) { - super(debugNameData, computeFn, createChangeSummary, handleChange, handleLastObserverRemoved, equalityComparator); - this.set = set; - } -} +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +import { BaseObservable, _setDerivedOpts, } from './base.js'; +import { DebugNameData } from './debugName.js'; +import { BugIndicatingError, DisposableStore, assertFn, onBugIndicatingError, strictEquals } from './commonFacade/deps.js'; +import { getLogger } from './logging.js'; +export function derived(computeFnOrOwner, computeFn) { + if (computeFn !== undefined) { + return new Derived(new DebugNameData(computeFnOrOwner, undefined, computeFn), computeFn, undefined, undefined, undefined, strictEquals); + } + return new Derived(new DebugNameData(undefined, undefined, computeFnOrOwner), computeFnOrOwner, undefined, undefined, undefined, strictEquals); +} +export function derivedWithSetter(owner, computeFn, setter) { + return new DerivedWithSetter(new DebugNameData(owner, undefined, computeFn), computeFn, undefined, undefined, undefined, strictEquals, setter); +} +export function derivedOpts(options, computeFn) { + return new Derived(new DebugNameData(options.owner, options.debugName, options.debugReferenceFn), computeFn, undefined, undefined, options.onLastObserverRemoved, options.equalsFn ?? strictEquals); +} +_setDerivedOpts(derivedOpts); +/** + * Represents an observable that is derived from other observables. + * The value is only recomputed when absolutely needed. + * + * {@link computeFn} should start with a JS Doc using `@description` to name the derived. + * + * Use `createEmptyChangeSummary` to create a "change summary" that can collect the changes. + * Use `handleChange` to add a reported change to the change summary. + * The compute function is given the last change summary. + * The change summary is discarded after the compute function was called. + * + * @see derived + */ +export function derivedHandleChanges(options, computeFn) { + return new Derived(new DebugNameData(options.owner, options.debugName, undefined), computeFn, options.createEmptyChangeSummary, options.handleChange, undefined, options.equalityComparer ?? strictEquals); +} +export function derivedWithStore(computeFnOrOwner, computeFnOrUndefined) { + let computeFn; + let owner; + if (computeFnOrUndefined === undefined) { + computeFn = computeFnOrOwner; + owner = undefined; + } + else { + owner = computeFnOrOwner; + computeFn = computeFnOrUndefined; + } + const store = new DisposableStore(); + return new Derived(new DebugNameData(owner, undefined, computeFn), r => { + store.clear(); + return computeFn(r, store); + }, undefined, undefined, () => store.dispose(), strictEquals); +} +export function derivedDisposable(computeFnOrOwner, computeFnOrUndefined) { + let computeFn; + let owner; + if (computeFnOrUndefined === undefined) { + computeFn = computeFnOrOwner; + owner = undefined; + } + else { + owner = computeFnOrOwner; + computeFn = computeFnOrUndefined; + } + let store = undefined; + return new Derived(new DebugNameData(owner, undefined, computeFn), r => { + if (!store) { + store = new DisposableStore(); + } + else { + store.clear(); + } + const result = computeFn(r); + if (result) { + store.add(result); + } + return result; + }, undefined, undefined, () => { + if (store) { + store.dispose(); + store = undefined; + } + }, strictEquals); +} +var DerivedState; +(function (DerivedState) { + /** Initial state, no previous value, recomputation needed */ + DerivedState[DerivedState["initial"] = 0] = "initial"; + /** + * A dependency could have changed. + * We need to explicitly ask them if at least one dependency changed. + */ + DerivedState[DerivedState["dependenciesMightHaveChanged"] = 1] = "dependenciesMightHaveChanged"; + /** + * A dependency changed and we need to recompute. + * After recomputation, we need to check the previous value to see if we changed as well. + */ + DerivedState[DerivedState["stale"] = 2] = "stale"; + /** + * No change reported, our cached value is up to date. + */ + DerivedState[DerivedState["upToDate"] = 3] = "upToDate"; +})(DerivedState || (DerivedState = {})); +export class Derived extends BaseObservable { + _debugNameData; + _computeFn; + createChangeSummary; + _handleChange; + _handleLastObserverRemoved; + _equalityComparator; + state = 0 /* DerivedState.initial */; + value = undefined; + updateCount = 0; + dependencies = new Set(); + dependenciesToBeRemoved = new Set(); + changeSummary = undefined; + _isUpdating = false; + _isComputing = false; + get debugName() { + return this._debugNameData.getDebugName(this) ?? '(anonymous)'; + } + constructor(_debugNameData, _computeFn, createChangeSummary, _handleChange, _handleLastObserverRemoved = undefined, _equalityComparator) { + super(); + this._debugNameData = _debugNameData; + this._computeFn = _computeFn; + this.createChangeSummary = createChangeSummary; + this._handleChange = _handleChange; + this._handleLastObserverRemoved = _handleLastObserverRemoved; + this._equalityComparator = _equalityComparator; + this.changeSummary = this.createChangeSummary?.(); + getLogger()?.handleDerivedCreated(this); + } + onLastObserverRemoved() { + /** + * We are not tracking changes anymore, thus we have to assume + * that our cache is invalid. + */ + this.state = 0 /* DerivedState.initial */; + this.value = undefined; + getLogger()?.handleDerivedCleared(this); + for (const d of this.dependencies) { + d.removeObserver(this); + } + this.dependencies.clear(); + this._handleLastObserverRemoved?.(); + } + get() { + if (this._isComputing) { + throw new BugIndicatingError('Cyclic deriveds are not supported yet!'); + } + if (this.observers.size === 0) { + let result; + // Without observers, we don't know when to clean up stuff. + // Thus, we don't cache anything to prevent memory leaks. + try { + this._isReaderValid = true; + result = this._computeFn(this, this.createChangeSummary?.()); + } + finally { + this._isReaderValid = false; + } + // Clear new dependencies + this.onLastObserverRemoved(); + return result; + } + else { + do { + // We might not get a notification for a dependency that changed while it is updating, + // thus we also have to ask all our depedencies if they changed in this case. + if (this.state === 1 /* DerivedState.dependenciesMightHaveChanged */) { + for (const d of this.dependencies) { + /** might call {@link handleChange} indirectly, which could make us stale */ + d.reportChanges(); + if (this.state === 2 /* DerivedState.stale */) { + // The other dependencies will refresh on demand, so early break + break; + } + } + } + // We called report changes of all dependencies. + // If we are still not stale, we can assume to be up to date again. + if (this.state === 1 /* DerivedState.dependenciesMightHaveChanged */) { + this.state = 3 /* DerivedState.upToDate */; + } + this._recomputeIfNeeded(); + // In case recomputation changed one of our dependencies, we need to recompute again. + } while (this.state !== 3 /* DerivedState.upToDate */); + return this.value; + } + } + _recomputeIfNeeded() { + if (this.state === 3 /* DerivedState.upToDate */) { + return; + } + const emptySet = this.dependenciesToBeRemoved; + this.dependenciesToBeRemoved = this.dependencies; + this.dependencies = emptySet; + const hadValue = this.state !== 0 /* DerivedState.initial */; + const oldValue = this.value; + this.state = 3 /* DerivedState.upToDate */; + let didChange = false; + this._isComputing = false; // TODO@hediet: Set to true and investigate diff editor scrolling issues! (also see test.skip('catches cyclic dependencies') + try { + const changeSummary = this.changeSummary; + this.changeSummary = this.createChangeSummary?.(); + try { + this._isReaderValid = true; + /** might call {@link handleChange} indirectly, which could invalidate us */ + this.value = this._computeFn(this, changeSummary); + } + finally { + this._isReaderValid = false; + // We don't want our observed observables to think that they are (not even temporarily) not being observed. + // Thus, we only unsubscribe from observables that are definitely not read anymore. + for (const o of this.dependenciesToBeRemoved) { + o.removeObserver(this); + } + this.dependenciesToBeRemoved.clear(); + } + didChange = hadValue && !(this._equalityComparator(oldValue, this.value)); + getLogger()?.handleDerivedRecomputed(this, { + oldValue, + newValue: this.value, + change: undefined, + didChange, + hadValue, + }); + } + catch (e) { + onBugIndicatingError(e); + } + this._isComputing = false; + if (didChange) { + for (const r of this.observers) { + r.handleChange(this, undefined); + } + } + } + toString() { + return `LazyDerived<${this.debugName}>`; + } + // IObserver Implementation + beginUpdate(_observable) { + if (this._isUpdating) { + throw new BugIndicatingError('Cyclic deriveds are not supported yet!'); + } + this.updateCount++; + this._isUpdating = true; + try { + const propagateBeginUpdate = this.updateCount === 1; + if (this.state === 3 /* DerivedState.upToDate */) { + this.state = 1 /* DerivedState.dependenciesMightHaveChanged */; + // If we propagate begin update, that will already signal a possible change. + if (!propagateBeginUpdate) { + for (const r of this.observers) { + r.handlePossibleChange(this); + } + } + } + if (propagateBeginUpdate) { + for (const r of this.observers) { + r.beginUpdate(this); // This signals a possible change + } + } + } + finally { + this._isUpdating = false; + } + } + _removedObserverToCallEndUpdateOn = null; + endUpdate(_observable) { + this.updateCount--; + if (this.updateCount === 0) { + // End update could change the observer list. + const observers = [...this.observers]; + for (const r of observers) { + r.endUpdate(this); + } + if (this._removedObserverToCallEndUpdateOn) { + const observers = [...this._removedObserverToCallEndUpdateOn]; + this._removedObserverToCallEndUpdateOn = null; + for (const r of observers) { + r.endUpdate(this); + } + } + } + assertFn(() => this.updateCount >= 0); + } + handlePossibleChange(observable) { + // In all other states, observers already know that we might have changed. + if (this.state === 3 /* DerivedState.upToDate */ && this.dependencies.has(observable) && !this.dependenciesToBeRemoved.has(observable)) { + this.state = 1 /* DerivedState.dependenciesMightHaveChanged */; + for (const r of this.observers) { + r.handlePossibleChange(this); + } + } + } + handleChange(observable, change) { + if (this.dependencies.has(observable) && !this.dependenciesToBeRemoved.has(observable)) { + let shouldReact = false; + try { + shouldReact = this._handleChange ? this._handleChange({ + changedObservable: observable, + change, + didChange: (o) => o === observable, + }, this.changeSummary) : true; + } + catch (e) { + onBugIndicatingError(e); + } + const wasUpToDate = this.state === 3 /* DerivedState.upToDate */; + if (shouldReact && (this.state === 1 /* DerivedState.dependenciesMightHaveChanged */ || wasUpToDate)) { + this.state = 2 /* DerivedState.stale */; + if (wasUpToDate) { + for (const r of this.observers) { + r.handlePossibleChange(this); + } + } + } + } + } + // IReader Implementation + _isReaderValid = false; + readObservable(observable) { + if (!this._isReaderValid) { + throw new BugIndicatingError('The reader object cannot be used outside its compute function!'); + } + // Subscribe before getting the value to enable caching + observable.addObserver(this); + /** This might call {@link handleChange} indirectly, which could invalidate us */ + const value = observable.get(); + // Which is why we only add the observable to the dependencies now. + this.dependencies.add(observable); + this.dependenciesToBeRemoved.delete(observable); + return value; + } + addObserver(observer) { + const shouldCallBeginUpdate = !this.observers.has(observer) && this.updateCount > 0; + super.addObserver(observer); + if (shouldCallBeginUpdate) { + if (this._removedObserverToCallEndUpdateOn && this._removedObserverToCallEndUpdateOn.has(observer)) { + this._removedObserverToCallEndUpdateOn.delete(observer); + } + else { + observer.beginUpdate(this); + } + } + } + removeObserver(observer) { + if (this.observers.has(observer) && this.updateCount > 0) { + if (!this._removedObserverToCallEndUpdateOn) { + this._removedObserverToCallEndUpdateOn = new Set(); + } + this._removedObserverToCallEndUpdateOn.add(observer); + } + super.removeObserver(observer); + } + log() { + if (!getLogger()) { + super.log(); + getLogger()?.handleDerivedCreated(this); + } + else { + super.log(); + } + return this; + } +} +export class DerivedWithSetter extends Derived { + set; + constructor(debugNameData, computeFn, createChangeSummary, handleChange, handleLastObserverRemoved = undefined, equalityComparator, set) { + super(debugNameData, computeFn, createChangeSummary, handleChange, handleLastObserverRemoved, equalityComparator); + this.set = set; + } +} //# sourceMappingURL=derived.js.map \ No newline at end of file diff --git a/packages/core/dist/observableInternal/derived.js.map b/packages/core/dist/observableInternal/derived.js.map index 7191a3a8..25769900 100644 --- a/packages/core/dist/observableInternal/derived.js.map +++ b/packages/core/dist/observableInternal/derived.js.map @@ -1 +1 @@ -{"version":3,"file":"derived.js","sourceRoot":"","sources":["../../src/observableInternal/derived.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"derived.js","sourceRoot":"","sources":["../../src/observableInternal/derived.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/dist/observableInternal/index.d.ts b/packages/core/dist/observableInternal/index.d.ts index 91413bd0..61017637 100644 --- a/packages/core/dist/observableInternal/index.d.ts +++ b/packages/core/dist/observableInternal/index.d.ts @@ -1,8 +1,8 @@ -export { observableValueOpts } from './api.js'; -export { autorun, autorunDelta, autorunHandleChanges, autorunOpts, autorunWithStore, autorunWithStoreHandleChanges } from './autorun.js'; -export { asyncTransaction, disposableObservableValue, globalTransaction, observableValue, subtransaction, transaction, TransactionImpl, type IChangeContext, type IChangeTracker, type IObservable, type IObservableWithChange, type IObserver, type IReader, type ISettable, type ISettableObservable, type ITransaction, } from './base.js'; -export { derived, derivedDisposable, derivedHandleChanges, derivedOpts, derivedWithSetter, derivedWithStore } from './derived.js'; -export { ObservableLazy, ObservableLazyPromise, ObservablePromise, PromiseResult, } from './promise.js'; -export { derivedWithCancellationToken, waitForState } from './utilsCancellation.js'; -export { constObservable, debouncedObservable, derivedConstOnceDefined, derivedObservableWithCache, derivedObservableWithWritableCache, keepObserved, latestChangedValue, mapObservableArrayCached, observableFromEvent, observableFromEventOpts, observableFromPromise, observableFromValueWithChangeEvent, observableSignal, observableSignalFromEvent, recomputeInitiallyAndOnChange, runOnChange, runOnChangeWithStore, signalFromObservable, ValueWithChangeEventFromObservable, wasEventTriggeredRecently, type IObservableSignal, } from './utils.js'; -export { type DebugOwner } from './debugName.js'; +export { observableValueOpts } from './api.js'; +export { autorun, autorunDelta, autorunHandleChanges, autorunOpts, autorunWithStore, autorunWithStoreHandleChanges } from './autorun.js'; +export { asyncTransaction, disposableObservableValue, globalTransaction, observableValue, subtransaction, transaction, TransactionImpl, type IChangeContext, type IChangeTracker, type IObservable, type IObservableWithChange, type IObserver, type IReader, type ISettable, type ISettableObservable, type ITransaction, } from './base.js'; +export { derived, derivedDisposable, derivedHandleChanges, derivedOpts, derivedWithSetter, derivedWithStore } from './derived.js'; +export { ObservableLazy, ObservableLazyPromise, ObservablePromise, PromiseResult, } from './promise.js'; +export { derivedWithCancellationToken, waitForState } from './utilsCancellation.js'; +export { constObservable, debouncedObservable, derivedConstOnceDefined, derivedObservableWithCache, derivedObservableWithWritableCache, keepObserved, latestChangedValue, mapObservableArrayCached, observableFromEvent, observableFromEventOpts, observableFromPromise, observableFromValueWithChangeEvent, observableSignal, observableSignalFromEvent, recomputeInitiallyAndOnChange, runOnChange, runOnChangeWithStore, signalFromObservable, ValueWithChangeEventFromObservable, wasEventTriggeredRecently, type IObservableSignal, } from './utils.js'; +export { type DebugOwner } from './debugName.js'; diff --git a/packages/core/dist/observableInternal/index.js b/packages/core/dist/observableInternal/index.js index 83c22b82..2aab4a97 100644 --- a/packages/core/dist/observableInternal/index.js +++ b/packages/core/dist/observableInternal/index.js @@ -1,19 +1,19 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ -// This is a facade for the observable implementation. Only import from here! -export { observableValueOpts } from './api.js'; -export { autorun, autorunDelta, autorunHandleChanges, autorunOpts, autorunWithStore, autorunWithStoreHandleChanges } from './autorun.js'; -export { asyncTransaction, disposableObservableValue, globalTransaction, observableValue, subtransaction, transaction, TransactionImpl, } from './base.js'; -export { derived, derivedDisposable, derivedHandleChanges, derivedOpts, derivedWithSetter, derivedWithStore } from './derived.js'; -export { ObservableLazy, ObservableLazyPromise, ObservablePromise, PromiseResult, } from './promise.js'; -export { derivedWithCancellationToken, waitForState } from './utilsCancellation.js'; -export { constObservable, debouncedObservable, derivedConstOnceDefined, derivedObservableWithCache, derivedObservableWithWritableCache, keepObserved, latestChangedValue, mapObservableArrayCached, observableFromEvent, observableFromEventOpts, observableFromPromise, observableFromValueWithChangeEvent, observableSignal, observableSignalFromEvent, recomputeInitiallyAndOnChange, runOnChange, runOnChangeWithStore, signalFromObservable, ValueWithChangeEventFromObservable, wasEventTriggeredRecently, } from './utils.js'; -import { ConsoleObservableLogger, setLogger } from './logging.js'; -// Remove "//" in the next line to enable logging -const enableLogging = false; -if (enableLogging) { - setLogger(new ConsoleObservableLogger()); -} +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +// This is a facade for the observable implementation. Only import from here! +export { observableValueOpts } from './api.js'; +export { autorun, autorunDelta, autorunHandleChanges, autorunOpts, autorunWithStore, autorunWithStoreHandleChanges } from './autorun.js'; +export { asyncTransaction, disposableObservableValue, globalTransaction, observableValue, subtransaction, transaction, TransactionImpl, } from './base.js'; +export { derived, derivedDisposable, derivedHandleChanges, derivedOpts, derivedWithSetter, derivedWithStore } from './derived.js'; +export { ObservableLazy, ObservableLazyPromise, ObservablePromise, PromiseResult, } from './promise.js'; +export { derivedWithCancellationToken, waitForState } from './utilsCancellation.js'; +export { constObservable, debouncedObservable, derivedConstOnceDefined, derivedObservableWithCache, derivedObservableWithWritableCache, keepObserved, latestChangedValue, mapObservableArrayCached, observableFromEvent, observableFromEventOpts, observableFromPromise, observableFromValueWithChangeEvent, observableSignal, observableSignalFromEvent, recomputeInitiallyAndOnChange, runOnChange, runOnChangeWithStore, signalFromObservable, ValueWithChangeEventFromObservable, wasEventTriggeredRecently, } from './utils.js'; +import { ConsoleObservableLogger, setLogger } from './logging.js'; +// Remove "//" in the next line to enable logging +const enableLogging = false; +if (enableLogging) { + setLogger(new ConsoleObservableLogger()); +} //# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/packages/core/dist/observableInternal/index.js.map b/packages/core/dist/observableInternal/index.js.map index 887b379a..3ca42716 100644 --- a/packages/core/dist/observableInternal/index.js.map +++ b/packages/core/dist/observableInternal/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/observableInternal/index.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,6EAA6E;AAE7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,WAAW,EAAE,gBAAgB,EAAE,6BAA6B,EAAE,MAAM,cAAc,CAAC;AACzI,OAAO,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,iBAAiB,EAAE,eAAe,EAAE,cAAc,EAAE,WAAW,EAAE,eAAe,GAAsL,MAAM,WAAW,CAAC;AAC9U,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,WAAW,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAClI,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,aAAa,GAAG,MAAM,cAAc,CAAC;AACxG,OAAO,EAAE,4BAA4B,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACpF,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,0BAA0B,EAAE,kCAAkC,EAAE,YAAY,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,kCAAkC,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,6BAA6B,EAAE,WAAW,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,kCAAkC,EAAE,yBAAyB,GAA2B,MAAM,YAAY,CAAC;AAG7hB,OAAO,EACN,uBAAuB,EACvB,SAAS,EACT,MAAM,cAAc,CAAC;AAEtB,iDAAiD;AACjD,MAAM,aAAa,GAAG,KAAK,CAEzB;AAEF,IAAI,aAAa,EAAE;IAClB,SAAS,CAAC,IAAI,uBAAuB,EAAE,CAAC,CAAC;CACzC"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/observableInternal/index.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,6EAA6E;AAE7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,WAAW,EAAE,gBAAgB,EAAE,6BAA6B,EAAE,MAAM,cAAc,CAAC;AACzI,OAAO,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,iBAAiB,EAAE,eAAe,EAAE,cAAc,EAAE,WAAW,EAAE,eAAe,GAAsL,MAAM,WAAW,CAAC;AAC9U,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,WAAW,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAClI,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,aAAa,GAAG,MAAM,cAAc,CAAC;AACxG,OAAO,EAAE,4BAA4B,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACpF,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,0BAA0B,EAAE,kCAAkC,EAAE,YAAY,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,kCAAkC,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,6BAA6B,EAAE,WAAW,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,kCAAkC,EAAE,yBAAyB,GAA2B,MAAM,YAAY,CAAC;AAG7hB,OAAO,EACN,uBAAuB,EACvB,SAAS,EACT,MAAM,cAAc,CAAC;AAEtB,iDAAiD;AACjD,MAAM,aAAa,GAAG,KAAK,CAEzB;AAEF,IAAI,aAAa,EAAE,CAAC;IACnB,SAAS,CAAC,IAAI,uBAAuB,EAAE,CAAC,CAAC;AAC1C,CAAC"} \ No newline at end of file diff --git a/packages/core/dist/observableInternal/lazyObservableValue.d.ts b/packages/core/dist/observableInternal/lazyObservableValue.d.ts index 830f713c..64775154 100644 --- a/packages/core/dist/observableInternal/lazyObservableValue.d.ts +++ b/packages/core/dist/observableInternal/lazyObservableValue.d.ts @@ -1,25 +1,25 @@ -import { EqualityComparer } from './commonFacade/deps.js'; -import { BaseObservable, IObserver, ISettableObservable, ITransaction } from './base.js'; -import { DebugNameData } from './debugName.js'; -/** - * Holds off updating observers until the value is actually read. -*/ -export declare class LazyObservableValue extends BaseObservable implements ISettableObservable { - private readonly _debugNameData; - private readonly _equalityComparator; - protected _value: T; - private _isUpToDate; - private readonly _deltas; - get debugName(): string; - constructor(_debugNameData: DebugNameData, initialValue: T, _equalityComparator: EqualityComparer); - get(): T; - private _update; - private _updateCounter; - private _beginUpdate; - private _endUpdate; - addObserver(observer: IObserver): void; - removeObserver(observer: IObserver): void; - set(value: T, tx: ITransaction | undefined, change: TChange): void; - toString(): string; - protected _setValue(newValue: T): void; -} +import { EqualityComparer } from './commonFacade/deps.js'; +import { BaseObservable, IObserver, ISettableObservable, ITransaction } from './base.js'; +import { DebugNameData } from './debugName.js'; +/** + * Holds off updating observers until the value is actually read. +*/ +export declare class LazyObservableValue extends BaseObservable implements ISettableObservable { + private readonly _debugNameData; + private readonly _equalityComparator; + protected _value: T; + private _isUpToDate; + private readonly _deltas; + get debugName(): string; + constructor(_debugNameData: DebugNameData, initialValue: T, _equalityComparator: EqualityComparer); + get(): T; + private _update; + private _updateCounter; + private _beginUpdate; + private _endUpdate; + addObserver(observer: IObserver): void; + removeObserver(observer: IObserver): void; + set(value: T, tx: ITransaction | undefined, change: TChange): void; + toString(): string; + protected _setValue(newValue: T): void; +} diff --git a/packages/core/dist/observableInternal/lazyObservableValue.js b/packages/core/dist/observableInternal/lazyObservableValue.js index 8a2caa2e..20972ee6 100644 --- a/packages/core/dist/observableInternal/lazyObservableValue.js +++ b/packages/core/dist/observableInternal/lazyObservableValue.js @@ -1,125 +1,125 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ -import { BaseObservable, TransactionImpl } from './base.js'; -import { getLogger } from './logging.js'; -/** - * Holds off updating observers until the value is actually read. -*/ -export class LazyObservableValue extends BaseObservable { - _debugNameData; - _equalityComparator; - _value; - _isUpToDate = true; - _deltas = []; - get debugName() { - return this._debugNameData.getDebugName(this) ?? 'LazyObservableValue'; - } - constructor(_debugNameData, initialValue, _equalityComparator) { - super(); - this._debugNameData = _debugNameData; - this._equalityComparator = _equalityComparator; - this._value = initialValue; - } - get() { - this._update(); - return this._value; - } - _update() { - if (this._isUpToDate) { - return; - } - this._isUpToDate = true; - if (this._deltas.length > 0) { - for (const change of this._deltas) { - getLogger()?.handleObservableChanged(this, { change, didChange: true, oldValue: '(unknown)', newValue: this._value, hadValue: true }); - for (const observer of this.observers) { - observer.handleChange(this, change); - } - } - this._deltas.length = 0; - } - else { - getLogger()?.handleObservableChanged(this, { change: undefined, didChange: true, oldValue: '(unknown)', newValue: this._value, hadValue: true }); - for (const observer of this.observers) { - observer.handleChange(this, undefined); - } - } - } - _updateCounter = 0; - _beginUpdate() { - this._updateCounter++; - if (this._updateCounter === 1) { - for (const observer of this.observers) { - observer.beginUpdate(this); - } - } - } - _endUpdate() { - this._updateCounter--; - if (this._updateCounter === 0) { - this._update(); - // End update could change the observer list. - const observers = [...this.observers]; - for (const r of observers) { - r.endUpdate(this); - } - } - } - addObserver(observer) { - const shouldCallBeginUpdate = !this.observers.has(observer) && this._updateCounter > 0; - super.addObserver(observer); - if (shouldCallBeginUpdate) { - observer.beginUpdate(this); - } - } - removeObserver(observer) { - const shouldCallEndUpdate = this.observers.has(observer) && this._updateCounter > 0; - super.removeObserver(observer); - if (shouldCallEndUpdate) { - // Calling end update after removing the observer makes sure endUpdate cannot be called twice here. - observer.endUpdate(this); - } - } - set(value, tx, change) { - if (change === undefined && this._equalityComparator(this._value, value)) { - return; - } - let _tx; - if (!tx) { - tx = _tx = new TransactionImpl(() => { }, () => `Setting ${this.debugName}`); - } - try { - this._isUpToDate = false; - this._setValue(value); - if (change !== undefined) { - this._deltas.push(change); - } - tx.updateObserver({ - beginUpdate: () => this._beginUpdate(), - endUpdate: () => this._endUpdate(), - handleChange: (observable, change) => { }, - handlePossibleChange: (observable) => { }, - }, this); - if (this._updateCounter > 1) { - // We already started begin/end update, so we need to manually call handlePossibleChange - for (const observer of this.observers) { - observer.handlePossibleChange(this); - } - } - } - finally { - if (_tx) { - _tx.finish(); - } - } - } - toString() { - return `${this.debugName}: ${this._value}`; - } - _setValue(newValue) { - this._value = newValue; - } -} +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +import { BaseObservable, TransactionImpl } from './base.js'; +import { getLogger } from './logging.js'; +/** + * Holds off updating observers until the value is actually read. +*/ +export class LazyObservableValue extends BaseObservable { + _debugNameData; + _equalityComparator; + _value; + _isUpToDate = true; + _deltas = []; + get debugName() { + return this._debugNameData.getDebugName(this) ?? 'LazyObservableValue'; + } + constructor(_debugNameData, initialValue, _equalityComparator) { + super(); + this._debugNameData = _debugNameData; + this._equalityComparator = _equalityComparator; + this._value = initialValue; + } + get() { + this._update(); + return this._value; + } + _update() { + if (this._isUpToDate) { + return; + } + this._isUpToDate = true; + if (this._deltas.length > 0) { + for (const change of this._deltas) { + getLogger()?.handleObservableChanged(this, { change, didChange: true, oldValue: '(unknown)', newValue: this._value, hadValue: true }); + for (const observer of this.observers) { + observer.handleChange(this, change); + } + } + this._deltas.length = 0; + } + else { + getLogger()?.handleObservableChanged(this, { change: undefined, didChange: true, oldValue: '(unknown)', newValue: this._value, hadValue: true }); + for (const observer of this.observers) { + observer.handleChange(this, undefined); + } + } + } + _updateCounter = 0; + _beginUpdate() { + this._updateCounter++; + if (this._updateCounter === 1) { + for (const observer of this.observers) { + observer.beginUpdate(this); + } + } + } + _endUpdate() { + this._updateCounter--; + if (this._updateCounter === 0) { + this._update(); + // End update could change the observer list. + const observers = [...this.observers]; + for (const r of observers) { + r.endUpdate(this); + } + } + } + addObserver(observer) { + const shouldCallBeginUpdate = !this.observers.has(observer) && this._updateCounter > 0; + super.addObserver(observer); + if (shouldCallBeginUpdate) { + observer.beginUpdate(this); + } + } + removeObserver(observer) { + const shouldCallEndUpdate = this.observers.has(observer) && this._updateCounter > 0; + super.removeObserver(observer); + if (shouldCallEndUpdate) { + // Calling end update after removing the observer makes sure endUpdate cannot be called twice here. + observer.endUpdate(this); + } + } + set(value, tx, change) { + if (change === undefined && this._equalityComparator(this._value, value)) { + return; + } + let _tx; + if (!tx) { + tx = _tx = new TransactionImpl(() => { }, () => `Setting ${this.debugName}`); + } + try { + this._isUpToDate = false; + this._setValue(value); + if (change !== undefined) { + this._deltas.push(change); + } + tx.updateObserver({ + beginUpdate: () => this._beginUpdate(), + endUpdate: () => this._endUpdate(), + handleChange: (observable, change) => { }, + handlePossibleChange: (observable) => { }, + }, this); + if (this._updateCounter > 1) { + // We already started begin/end update, so we need to manually call handlePossibleChange + for (const observer of this.observers) { + observer.handlePossibleChange(this); + } + } + } + finally { + if (_tx) { + _tx.finish(); + } + } + } + toString() { + return `${this.debugName}: ${this._value}`; + } + _setValue(newValue) { + this._value = newValue; + } +} //# sourceMappingURL=lazyObservableValue.js.map \ No newline at end of file diff --git a/packages/core/dist/observableInternal/lazyObservableValue.js.map b/packages/core/dist/observableInternal/lazyObservableValue.js.map index 29555ad4..373fd2d1 100644 --- a/packages/core/dist/observableInternal/lazyObservableValue.js.map +++ b/packages/core/dist/observableInternal/lazyObservableValue.js.map @@ -1 +1 @@ -{"version":3,"file":"lazyObservableValue.js","sourceRoot":"","sources":["../../src/observableInternal/lazyObservableValue.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"lazyObservableValue.js","sourceRoot":"","sources":["../../src/observableInternal/lazyObservableValue.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/dist/observableInternal/logging.d.ts b/packages/core/dist/observableInternal/logging.d.ts index 4d3ec25f..73bab95f 100644 --- a/packages/core/dist/observableInternal/logging.d.ts +++ b/packages/core/dist/observableInternal/logging.d.ts @@ -1,54 +1,54 @@ -import { AutorunObserver } from './autorun.js'; -import { IObservable, TransactionImpl } from './base.js'; -import { Derived } from './derived.js'; -import { FromEventObservable } from './utils.js'; -export declare function setLogger(logger: IObservableLogger): void; -export declare function getLogger(): IObservableLogger | undefined; -export declare function logObservable(obs: IObservable): void; -interface IChangeInformation { - oldValue: unknown; - newValue: unknown; - change: unknown; - didChange: boolean; - hadValue: boolean; -} -export interface IObservableLogger { - handleObservableChanged(observable: IObservable, info: IChangeInformation): void; - handleFromEventObservableTriggered(observable: FromEventObservable, info: IChangeInformation): void; - handleAutorunCreated(autorun: AutorunObserver): void; - handleAutorunTriggered(autorun: AutorunObserver): void; - handleAutorunFinished(autorun: AutorunObserver): void; - handleDerivedCreated(observable: Derived): void; - handleDerivedRecomputed(observable: Derived, info: IChangeInformation): void; - handleDerivedCleared(observable: Derived): void; - handleBeginTransaction(transaction: TransactionImpl): void; - handleEndTransaction(): void; -} -export declare class ConsoleObservableLogger implements IObservableLogger { - private indentation; - private _filteredObjects; - addFilteredObj(obj: unknown): void; - private _isIncluded; - private textToConsoleArgs; - private formatInfo; - handleObservableChanged(observable: IObservable, info: IChangeInformation): void; - private readonly changedObservablesSets; - formatChanges(changes: Set>): ConsoleText | undefined; - handleDerivedCreated(derived: Derived): void; - handleDerivedRecomputed(derived: Derived, info: IChangeInformation): void; - handleDerivedCleared(derived: Derived): void; - handleFromEventObservableTriggered(observable: FromEventObservable, info: IChangeInformation): void; - handleAutorunCreated(autorun: AutorunObserver): void; - handleAutorunTriggered(autorun: AutorunObserver): void; - handleAutorunFinished(autorun: AutorunObserver): void; - handleBeginTransaction(transaction: TransactionImpl): void; - handleEndTransaction(): void; -} -type ConsoleText = (ConsoleText | undefined)[] | { - text: string; - style: string; - data?: unknown[]; -} | { - data: unknown[]; -}; -export {}; +import { AutorunObserver } from './autorun.js'; +import { IObservable, TransactionImpl } from './base.js'; +import { Derived } from './derived.js'; +import { FromEventObservable } from './utils.js'; +export declare function setLogger(logger: IObservableLogger): void; +export declare function getLogger(): IObservableLogger | undefined; +export declare function logObservable(obs: IObservable): void; +interface IChangeInformation { + oldValue: unknown; + newValue: unknown; + change: unknown; + didChange: boolean; + hadValue: boolean; +} +export interface IObservableLogger { + handleObservableChanged(observable: IObservable, info: IChangeInformation): void; + handleFromEventObservableTriggered(observable: FromEventObservable, info: IChangeInformation): void; + handleAutorunCreated(autorun: AutorunObserver): void; + handleAutorunTriggered(autorun: AutorunObserver): void; + handleAutorunFinished(autorun: AutorunObserver): void; + handleDerivedCreated(observable: Derived): void; + handleDerivedRecomputed(observable: Derived, info: IChangeInformation): void; + handleDerivedCleared(observable: Derived): void; + handleBeginTransaction(transaction: TransactionImpl): void; + handleEndTransaction(): void; +} +export declare class ConsoleObservableLogger implements IObservableLogger { + private indentation; + private _filteredObjects; + addFilteredObj(obj: unknown): void; + private _isIncluded; + private textToConsoleArgs; + private formatInfo; + handleObservableChanged(observable: IObservable, info: IChangeInformation): void; + private readonly changedObservablesSets; + formatChanges(changes: Set>): ConsoleText | undefined; + handleDerivedCreated(derived: Derived): void; + handleDerivedRecomputed(derived: Derived, info: IChangeInformation): void; + handleDerivedCleared(derived: Derived): void; + handleFromEventObservableTriggered(observable: FromEventObservable, info: IChangeInformation): void; + handleAutorunCreated(autorun: AutorunObserver): void; + handleAutorunTriggered(autorun: AutorunObserver): void; + handleAutorunFinished(autorun: AutorunObserver): void; + handleBeginTransaction(transaction: TransactionImpl): void; + handleEndTransaction(): void; +} +type ConsoleText = (ConsoleText | undefined)[] | { + text: string; + style: string; + data?: unknown[]; +} | { + data: unknown[]; +}; +export {}; diff --git a/packages/core/dist/observableInternal/logging.js b/packages/core/dist/observableInternal/logging.js index adb3825f..532a1eae 100644 --- a/packages/core/dist/observableInternal/logging.js +++ b/packages/core/dist/observableInternal/logging.js @@ -1,336 +1,336 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ -let globalObservableLogger; -export function setLogger(logger) { - globalObservableLogger = logger; -} -export function getLogger() { - return globalObservableLogger; -} -export function logObservable(obs) { - if (!globalObservableLogger) { - const l = new ConsoleObservableLogger(); - l.addFilteredObj(obs); - setLogger(l); - } - else { - if (globalObservableLogger instanceof ConsoleObservableLogger) { - globalObservableLogger.addFilteredObj(obs); - } - } -} -export class ConsoleObservableLogger { - indentation = 0; - _filteredObjects; - addFilteredObj(obj) { - if (!this._filteredObjects) { - this._filteredObjects = new Set(); - } - this._filteredObjects.add(obj); - } - _isIncluded(obj) { - return this._filteredObjects?.has(obj) ?? true; - } - textToConsoleArgs(text) { - return consoleTextToArgs([ - normalText(repeat('| ', this.indentation)), - text, - ]); - } - formatInfo(info) { - if (!info.hadValue) { - return [ - normalText(` `), - styled(formatValue(info.newValue, 60), { - color: 'green', - }), - normalText(` (initial)`), - ]; - } - return info.didChange - ? [ - normalText(` `), - styled(formatValue(info.oldValue, 70), { - color: 'red', - strikeThrough: true, - }), - normalText(` `), - styled(formatValue(info.newValue, 60), { - color: 'green', - }), - ] - : [normalText(` (unchanged)`)]; - } - handleObservableChanged(observable, info) { - if (!this._isIncluded(observable)) { - return; - } - console.log(...this.textToConsoleArgs([ - formatKind('observable value changed'), - styled(observable.debugName, { color: 'BlueViolet' }), - ...this.formatInfo(info), - ])); - } - changedObservablesSets = new WeakMap(); - formatChanges(changes) { - if (changes.size === 0) { - return undefined; - } - return styled(' (changed deps: ' + - [...changes].map((o) => o.debugName).join(', ') + - ')', { color: 'gray' }); - } - handleDerivedCreated(derived) { - const existingHandleChange = derived.handleChange; - this.changedObservablesSets.set(derived, new Set()); - derived.handleChange = (observable, change) => { - this.changedObservablesSets.get(derived).add(observable); - return existingHandleChange.apply(derived, [observable, change]); - }; - const debugTrackUpdating = false; - if (debugTrackUpdating) { - const updating = []; - derived.__debugUpdating = updating; - const existingBeginUpdate = derived.beginUpdate; - derived.beginUpdate = (obs) => { - updating.push(obs); - return existingBeginUpdate.apply(derived, [obs]); - }; - const existingEndUpdate = derived.endUpdate; - derived.endUpdate = (obs) => { - const idx = updating.indexOf(obs); - if (idx === -1) { - console.error('endUpdate called without beginUpdate', derived.debugName, obs.debugName); - } - updating.splice(idx, 1); - return existingEndUpdate.apply(derived, [obs]); - }; - } - } - handleDerivedRecomputed(derived, info) { - if (!this._isIncluded(derived)) { - return; - } - const changedObservables = this.changedObservablesSets.get(derived); - if (!changedObservables) { - return; - } - console.log(...this.textToConsoleArgs([ - formatKind('derived recomputed'), - styled(derived.debugName, { color: 'BlueViolet' }), - ...this.formatInfo(info), - this.formatChanges(changedObservables), - { data: [{ fn: derived._debugNameData.referenceFn ?? derived._computeFn }] } - ])); - changedObservables.clear(); - } - handleDerivedCleared(derived) { - if (!this._isIncluded(derived)) { - return; - } - console.log(...this.textToConsoleArgs([ - formatKind('derived cleared'), - styled(derived.debugName, { color: 'BlueViolet' }), - ])); - } - handleFromEventObservableTriggered(observable, info) { - if (!this._isIncluded(observable)) { - return; - } - console.log(...this.textToConsoleArgs([ - formatKind('observable from event triggered'), - styled(observable.debugName, { color: 'BlueViolet' }), - ...this.formatInfo(info), - { data: [{ fn: observable._getValue }] } - ])); - } - handleAutorunCreated(autorun) { - if (!this._isIncluded(autorun)) { - return; - } - const existingHandleChange = autorun.handleChange; - this.changedObservablesSets.set(autorun, new Set()); - autorun.handleChange = (observable, change) => { - this.changedObservablesSets.get(autorun).add(observable); - return existingHandleChange.apply(autorun, [observable, change]); - }; - } - handleAutorunTriggered(autorun) { - const changedObservables = this.changedObservablesSets.get(autorun); - if (!changedObservables) { - return; - } - if (this._isIncluded(autorun)) { - console.log(...this.textToConsoleArgs([ - formatKind('autorun'), - styled(autorun.debugName, { color: 'BlueViolet' }), - this.formatChanges(changedObservables), - { data: [{ fn: autorun._debugNameData.referenceFn ?? autorun._runFn }] } - ])); - } - changedObservables.clear(); - this.indentation++; - } - handleAutorunFinished(autorun) { - this.indentation--; - } - handleBeginTransaction(transaction) { - let transactionName = transaction.getDebugName(); - if (transactionName === undefined) { - transactionName = ''; - } - if (this._isIncluded(transaction)) { - console.log(...this.textToConsoleArgs([ - formatKind('transaction'), - styled(transactionName, { color: 'BlueViolet' }), - { data: [{ fn: transaction._fn }] } - ])); - } - this.indentation++; - } - handleEndTransaction() { - this.indentation--; - } -} -function consoleTextToArgs(text) { - const styles = new Array(); - const data = []; - let firstArg = ''; - function process(t) { - if ('length' in t) { - for (const item of t) { - if (item) { - process(item); - } - } - } - else if ('text' in t) { - firstArg += `%c${t.text}`; - styles.push(t.style); - if (t.data) { - data.push(...t.data); - } - } - else if ('data' in t) { - data.push(...t.data); - } - } - process(text); - const result = [firstArg, ...styles]; - result.push(...data); - return result; -} -function normalText(text) { - return styled(text, { color: 'black' }); -} -function formatKind(kind) { - return styled(padStr(`${kind}: `, 10), { color: 'black', bold: true }); -} -function styled(text, options = { - color: 'black', -}) { - function objToCss(styleObj) { - return Object.entries(styleObj).reduce((styleString, [propName, propValue]) => { - return `${styleString}${propName}:${propValue};`; - }, ''); - } - const style = { - color: options.color, - }; - if (options.strikeThrough) { - style['text-decoration'] = 'line-through'; - } - if (options.bold) { - style['font-weight'] = 'bold'; - } - return { - text, - style: objToCss(style), - }; -} -function formatValue(value, availableLen) { - switch (typeof value) { - case 'number': - return '' + value; - case 'string': - if (value.length + 2 <= availableLen) { - return `"${value}"`; - } - return `"${value.substr(0, availableLen - 7)}"+...`; - case 'boolean': - return value ? 'true' : 'false'; - case 'undefined': - return 'undefined'; - case 'object': - if (value === null) { - return 'null'; - } - if (Array.isArray(value)) { - return formatArray(value, availableLen); - } - return formatObject(value, availableLen); - case 'symbol': - return value.toString(); - case 'function': - return `[[Function${value.name ? ' ' + value.name : ''}]]`; - default: - return '' + value; - } -} -function formatArray(value, availableLen) { - let result = '[ '; - let first = true; - for (const val of value) { - if (!first) { - result += ', '; - } - if (result.length - 5 > availableLen) { - result += '...'; - break; - } - first = false; - result += `${formatValue(val, availableLen - result.length)}`; - } - result += ' ]'; - return result; -} -function formatObject(value, availableLen) { - if (typeof value.toString === 'function' && value.toString !== Object.prototype.toString) { - const val = value.toString(); - if (val.length <= availableLen) { - return val; - } - return val.substring(0, availableLen - 3) + '...'; - } - let result = '{ '; - let first = true; - for (const [key, val] of Object.entries(value)) { - if (!first) { - result += ', '; - } - if (result.length - 5 > availableLen) { - result += '...'; - break; - } - first = false; - result += `${key}: ${formatValue(val, availableLen - result.length)}`; - } - result += ' }'; - return result; -} -function repeat(str, count) { - let result = ''; - for (let i = 1; i <= count; i++) { - result += str; - } - return result; -} -function padStr(str, length) { - while (str.length < length) { - str += ' '; - } - return str; -} +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +let globalObservableLogger; +export function setLogger(logger) { + globalObservableLogger = logger; +} +export function getLogger() { + return globalObservableLogger; +} +export function logObservable(obs) { + if (!globalObservableLogger) { + const l = new ConsoleObservableLogger(); + l.addFilteredObj(obs); + setLogger(l); + } + else { + if (globalObservableLogger instanceof ConsoleObservableLogger) { + globalObservableLogger.addFilteredObj(obs); + } + } +} +export class ConsoleObservableLogger { + indentation = 0; + _filteredObjects; + addFilteredObj(obj) { + if (!this._filteredObjects) { + this._filteredObjects = new Set(); + } + this._filteredObjects.add(obj); + } + _isIncluded(obj) { + return this._filteredObjects?.has(obj) ?? true; + } + textToConsoleArgs(text) { + return consoleTextToArgs([ + normalText(repeat('| ', this.indentation)), + text, + ]); + } + formatInfo(info) { + if (!info.hadValue) { + return [ + normalText(` `), + styled(formatValue(info.newValue, 60), { + color: 'green', + }), + normalText(` (initial)`), + ]; + } + return info.didChange + ? [ + normalText(` `), + styled(formatValue(info.oldValue, 70), { + color: 'red', + strikeThrough: true, + }), + normalText(` `), + styled(formatValue(info.newValue, 60), { + color: 'green', + }), + ] + : [normalText(` (unchanged)`)]; + } + handleObservableChanged(observable, info) { + if (!this._isIncluded(observable)) { + return; + } + console.log(...this.textToConsoleArgs([ + formatKind('observable value changed'), + styled(observable.debugName, { color: 'BlueViolet' }), + ...this.formatInfo(info), + ])); + } + changedObservablesSets = new WeakMap(); + formatChanges(changes) { + if (changes.size === 0) { + return undefined; + } + return styled(' (changed deps: ' + + [...changes].map((o) => o.debugName).join(', ') + + ')', { color: 'gray' }); + } + handleDerivedCreated(derived) { + const existingHandleChange = derived.handleChange; + this.changedObservablesSets.set(derived, new Set()); + derived.handleChange = (observable, change) => { + this.changedObservablesSets.get(derived).add(observable); + return existingHandleChange.apply(derived, [observable, change]); + }; + const debugTrackUpdating = false; + if (debugTrackUpdating) { + const updating = []; + derived.__debugUpdating = updating; + const existingBeginUpdate = derived.beginUpdate; + derived.beginUpdate = (obs) => { + updating.push(obs); + return existingBeginUpdate.apply(derived, [obs]); + }; + const existingEndUpdate = derived.endUpdate; + derived.endUpdate = (obs) => { + const idx = updating.indexOf(obs); + if (idx === -1) { + console.error('endUpdate called without beginUpdate', derived.debugName, obs.debugName); + } + updating.splice(idx, 1); + return existingEndUpdate.apply(derived, [obs]); + }; + } + } + handleDerivedRecomputed(derived, info) { + if (!this._isIncluded(derived)) { + return; + } + const changedObservables = this.changedObservablesSets.get(derived); + if (!changedObservables) { + return; + } + console.log(...this.textToConsoleArgs([ + formatKind('derived recomputed'), + styled(derived.debugName, { color: 'BlueViolet' }), + ...this.formatInfo(info), + this.formatChanges(changedObservables), + { data: [{ fn: derived._debugNameData.referenceFn ?? derived._computeFn }] } + ])); + changedObservables.clear(); + } + handleDerivedCleared(derived) { + if (!this._isIncluded(derived)) { + return; + } + console.log(...this.textToConsoleArgs([ + formatKind('derived cleared'), + styled(derived.debugName, { color: 'BlueViolet' }), + ])); + } + handleFromEventObservableTriggered(observable, info) { + if (!this._isIncluded(observable)) { + return; + } + console.log(...this.textToConsoleArgs([ + formatKind('observable from event triggered'), + styled(observable.debugName, { color: 'BlueViolet' }), + ...this.formatInfo(info), + { data: [{ fn: observable._getValue }] } + ])); + } + handleAutorunCreated(autorun) { + if (!this._isIncluded(autorun)) { + return; + } + const existingHandleChange = autorun.handleChange; + this.changedObservablesSets.set(autorun, new Set()); + autorun.handleChange = (observable, change) => { + this.changedObservablesSets.get(autorun).add(observable); + return existingHandleChange.apply(autorun, [observable, change]); + }; + } + handleAutorunTriggered(autorun) { + const changedObservables = this.changedObservablesSets.get(autorun); + if (!changedObservables) { + return; + } + if (this._isIncluded(autorun)) { + console.log(...this.textToConsoleArgs([ + formatKind('autorun'), + styled(autorun.debugName, { color: 'BlueViolet' }), + this.formatChanges(changedObservables), + { data: [{ fn: autorun._debugNameData.referenceFn ?? autorun._runFn }] } + ])); + } + changedObservables.clear(); + this.indentation++; + } + handleAutorunFinished(autorun) { + this.indentation--; + } + handleBeginTransaction(transaction) { + let transactionName = transaction.getDebugName(); + if (transactionName === undefined) { + transactionName = ''; + } + if (this._isIncluded(transaction)) { + console.log(...this.textToConsoleArgs([ + formatKind('transaction'), + styled(transactionName, { color: 'BlueViolet' }), + { data: [{ fn: transaction._fn }] } + ])); + } + this.indentation++; + } + handleEndTransaction() { + this.indentation--; + } +} +function consoleTextToArgs(text) { + const styles = new Array(); + const data = []; + let firstArg = ''; + function process(t) { + if ('length' in t) { + for (const item of t) { + if (item) { + process(item); + } + } + } + else if ('text' in t) { + firstArg += `%c${t.text}`; + styles.push(t.style); + if (t.data) { + data.push(...t.data); + } + } + else if ('data' in t) { + data.push(...t.data); + } + } + process(text); + const result = [firstArg, ...styles]; + result.push(...data); + return result; +} +function normalText(text) { + return styled(text, { color: 'black' }); +} +function formatKind(kind) { + return styled(padStr(`${kind}: `, 10), { color: 'black', bold: true }); +} +function styled(text, options = { + color: 'black', +}) { + function objToCss(styleObj) { + return Object.entries(styleObj).reduce((styleString, [propName, propValue]) => { + return `${styleString}${propName}:${propValue};`; + }, ''); + } + const style = { + color: options.color, + }; + if (options.strikeThrough) { + style['text-decoration'] = 'line-through'; + } + if (options.bold) { + style['font-weight'] = 'bold'; + } + return { + text, + style: objToCss(style), + }; +} +function formatValue(value, availableLen) { + switch (typeof value) { + case 'number': + return '' + value; + case 'string': + if (value.length + 2 <= availableLen) { + return `"${value}"`; + } + return `"${value.substr(0, availableLen - 7)}"+...`; + case 'boolean': + return value ? 'true' : 'false'; + case 'undefined': + return 'undefined'; + case 'object': + if (value === null) { + return 'null'; + } + if (Array.isArray(value)) { + return formatArray(value, availableLen); + } + return formatObject(value, availableLen); + case 'symbol': + return value.toString(); + case 'function': + return `[[Function${value.name ? ' ' + value.name : ''}]]`; + default: + return '' + value; + } +} +function formatArray(value, availableLen) { + let result = '[ '; + let first = true; + for (const val of value) { + if (!first) { + result += ', '; + } + if (result.length - 5 > availableLen) { + result += '...'; + break; + } + first = false; + result += `${formatValue(val, availableLen - result.length)}`; + } + result += ' ]'; + return result; +} +function formatObject(value, availableLen) { + if (typeof value.toString === 'function' && value.toString !== Object.prototype.toString) { + const val = value.toString(); + if (val.length <= availableLen) { + return val; + } + return val.substring(0, availableLen - 3) + '...'; + } + let result = '{ '; + let first = true; + for (const [key, val] of Object.entries(value)) { + if (!first) { + result += ', '; + } + if (result.length - 5 > availableLen) { + result += '...'; + break; + } + first = false; + result += `${key}: ${formatValue(val, availableLen - result.length)}`; + } + result += ' }'; + return result; +} +function repeat(str, count) { + let result = ''; + for (let i = 1; i <= count; i++) { + result += str; + } + return result; +} +function padStr(str, length) { + while (str.length < length) { + str += ' '; + } + return str; +} //# sourceMappingURL=logging.js.map \ No newline at end of file diff --git a/packages/core/dist/observableInternal/logging.js.map b/packages/core/dist/observableInternal/logging.js.map index e4e04174..6380673f 100644 --- a/packages/core/dist/observableInternal/logging.js.map +++ b/packages/core/dist/observableInternal/logging.js.map @@ -1 +1 @@ -{"version":3,"file":"logging.js","sourceRoot":"","sources":["../../src/observableInternal/logging.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"logging.js","sourceRoot":"","sources":["../../src/observableInternal/logging.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/dist/observableInternal/promise.d.ts b/packages/core/dist/observableInternal/promise.d.ts index 6e08093e..24f60e5d 100644 --- a/packages/core/dist/observableInternal/promise.d.ts +++ b/packages/core/dist/observableInternal/promise.d.ts @@ -1,74 +1,74 @@ -import { IObservable } from './base.js'; -export declare class ObservableLazy { - private readonly _computeValue; - private readonly _value; - /** - * The cached value. - * Does not force a computation of the value. - */ - get cachedValue(): IObservable; - constructor(_computeValue: () => T); - /** - * Returns the cached value. - * Computes the value if the value has not been cached yet. - */ - getValue(): T; -} -/** - * A promise whose state is observable. - */ -export declare class ObservablePromise { - static fromFn(fn: () => Promise): ObservablePromise; - private readonly _value; - /** - * The promise that this object wraps. - */ - readonly promise: Promise; - /** - * The current state of the promise. - * Is `undefined` if the promise didn't resolve yet. - */ - readonly promiseResult: IObservable | undefined>; - constructor(promise: Promise); -} -export declare class PromiseResult { - /** - * The value of the resolved promise. - * Undefined if the promise rejected. - */ - readonly data: T | undefined; - /** - * The error in case of a rejected promise. - * Undefined if the promise resolved. - */ - readonly error: unknown | undefined; - constructor( - /** - * The value of the resolved promise. - * Undefined if the promise rejected. - */ - data: T | undefined, - /** - * The error in case of a rejected promise. - * Undefined if the promise resolved. - */ - error: unknown | undefined); - /** - * Returns the value if the promise resolved, otherwise throws the error. - */ - getDataOrThrow(): T; -} -/** - * A lazy promise whose state is observable. - */ -export declare class ObservableLazyPromise { - private readonly _computePromise; - private readonly _lazyValue; - /** - * Does not enforce evaluation of the promise compute function. - * Is undefined if the promise has not been computed yet. - */ - readonly cachedPromiseResult: IObservable>; - constructor(_computePromise: () => Promise); - getPromise(): Promise; -} +import { IObservable } from './base.js'; +export declare class ObservableLazy { + private readonly _computeValue; + private readonly _value; + /** + * The cached value. + * Does not force a computation of the value. + */ + get cachedValue(): IObservable; + constructor(_computeValue: () => T); + /** + * Returns the cached value. + * Computes the value if the value has not been cached yet. + */ + getValue(): T; +} +/** + * A promise whose state is observable. + */ +export declare class ObservablePromise { + static fromFn(fn: () => Promise): ObservablePromise; + private readonly _value; + /** + * The promise that this object wraps. + */ + readonly promise: Promise; + /** + * The current state of the promise. + * Is `undefined` if the promise didn't resolve yet. + */ + readonly promiseResult: IObservable | undefined>; + constructor(promise: Promise); +} +export declare class PromiseResult { + /** + * The value of the resolved promise. + * Undefined if the promise rejected. + */ + readonly data: T | undefined; + /** + * The error in case of a rejected promise. + * Undefined if the promise resolved. + */ + readonly error: unknown | undefined; + constructor( + /** + * The value of the resolved promise. + * Undefined if the promise rejected. + */ + data: T | undefined, + /** + * The error in case of a rejected promise. + * Undefined if the promise resolved. + */ + error: unknown | undefined); + /** + * Returns the value if the promise resolved, otherwise throws the error. + */ + getDataOrThrow(): T; +} +/** + * A lazy promise whose state is observable. + */ +export declare class ObservableLazyPromise { + private readonly _computePromise; + private readonly _lazyValue; + /** + * Does not enforce evaluation of the promise compute function. + * Is undefined if the promise has not been computed yet. + */ + readonly cachedPromiseResult: IObservable>; + constructor(_computePromise: () => Promise); + getPromise(): Promise; +} diff --git a/packages/core/dist/observableInternal/promise.js b/packages/core/dist/observableInternal/promise.js index 0d525bd9..6e3b6e16 100644 --- a/packages/core/dist/observableInternal/promise.js +++ b/packages/core/dist/observableInternal/promise.js @@ -1,109 +1,109 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ -import { observableValue, transaction } from './base.js'; -import { derived } from './derived.js'; -export class ObservableLazy { - _computeValue; - _value = observableValue(this, undefined); - /** - * The cached value. - * Does not force a computation of the value. - */ - get cachedValue() { return this._value; } - constructor(_computeValue) { - this._computeValue = _computeValue; - } - /** - * Returns the cached value. - * Computes the value if the value has not been cached yet. - */ - getValue() { - let v = this._value.get(); - if (!v) { - v = this._computeValue(); - this._value.set(v, undefined); - } - return v; - } -} -/** - * A promise whose state is observable. - */ -export class ObservablePromise { - static fromFn(fn) { - return new ObservablePromise(fn()); - } - _value = observableValue(this, undefined); - /** - * The promise that this object wraps. - */ - promise; - /** - * The current state of the promise. - * Is `undefined` if the promise didn't resolve yet. - */ - promiseResult = this._value; - constructor(promise) { - this.promise = promise.then(value => { - transaction(tx => { - /** @description onPromiseResolved */ - this._value.set(new PromiseResult(value, undefined), tx); - }); - return value; - }, error => { - transaction(tx => { - /** @description onPromiseRejected */ - this._value.set(new PromiseResult(undefined, error), tx); - }); - throw error; - }); - } -} -export class PromiseResult { - data; - error; - constructor( - /** - * The value of the resolved promise. - * Undefined if the promise rejected. - */ - data, - /** - * The error in case of a rejected promise. - * Undefined if the promise resolved. - */ - error) { - this.data = data; - this.error = error; - } - /** - * Returns the value if the promise resolved, otherwise throws the error. - */ - getDataOrThrow() { - if (this.error) { - throw this.error; - } - return this.data; - } -} -/** - * A lazy promise whose state is observable. - */ -export class ObservableLazyPromise { - _computePromise; - _lazyValue = new ObservableLazy(() => new ObservablePromise(this._computePromise())); - /** - * Does not enforce evaluation of the promise compute function. - * Is undefined if the promise has not been computed yet. - */ - cachedPromiseResult = derived(this, reader => this._lazyValue.cachedValue.read(reader)?.promiseResult.read(reader)); - constructor(_computePromise) { - this._computePromise = _computePromise; - } - getPromise() { - return this._lazyValue.getValue().promise; - } -} +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +import { observableValue, transaction } from './base.js'; +import { derived } from './derived.js'; +export class ObservableLazy { + _computeValue; + _value = observableValue(this, undefined); + /** + * The cached value. + * Does not force a computation of the value. + */ + get cachedValue() { return this._value; } + constructor(_computeValue) { + this._computeValue = _computeValue; + } + /** + * Returns the cached value. + * Computes the value if the value has not been cached yet. + */ + getValue() { + let v = this._value.get(); + if (!v) { + v = this._computeValue(); + this._value.set(v, undefined); + } + return v; + } +} +/** + * A promise whose state is observable. + */ +export class ObservablePromise { + static fromFn(fn) { + return new ObservablePromise(fn()); + } + _value = observableValue(this, undefined); + /** + * The promise that this object wraps. + */ + promise; + /** + * The current state of the promise. + * Is `undefined` if the promise didn't resolve yet. + */ + promiseResult = this._value; + constructor(promise) { + this.promise = promise.then(value => { + transaction(tx => { + /** @description onPromiseResolved */ + this._value.set(new PromiseResult(value, undefined), tx); + }); + return value; + }, error => { + transaction(tx => { + /** @description onPromiseRejected */ + this._value.set(new PromiseResult(undefined, error), tx); + }); + throw error; + }); + } +} +export class PromiseResult { + data; + error; + constructor( + /** + * The value of the resolved promise. + * Undefined if the promise rejected. + */ + data, + /** + * The error in case of a rejected promise. + * Undefined if the promise resolved. + */ + error) { + this.data = data; + this.error = error; + } + /** + * Returns the value if the promise resolved, otherwise throws the error. + */ + getDataOrThrow() { + if (this.error) { + throw this.error; + } + return this.data; + } +} +/** + * A lazy promise whose state is observable. + */ +export class ObservableLazyPromise { + _computePromise; + _lazyValue = new ObservableLazy(() => new ObservablePromise(this._computePromise())); + /** + * Does not enforce evaluation of the promise compute function. + * Is undefined if the promise has not been computed yet. + */ + cachedPromiseResult = derived(this, reader => this._lazyValue.cachedValue.read(reader)?.promiseResult.read(reader)); + constructor(_computePromise) { + this._computePromise = _computePromise; + } + getPromise() { + return this._lazyValue.getValue().promise; + } +} //# sourceMappingURL=promise.js.map \ No newline at end of file diff --git a/packages/core/dist/observableInternal/promise.js.map b/packages/core/dist/observableInternal/promise.js.map index dd14f644..cba52c7e 100644 --- a/packages/core/dist/observableInternal/promise.js.map +++ b/packages/core/dist/observableInternal/promise.js.map @@ -1 +1 @@ -{"version":3,"file":"promise.js","sourceRoot":"","sources":["../../src/observableInternal/promise.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"promise.js","sourceRoot":"","sources":["../../src/observableInternal/promise.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG,OAAO,EAAe,eAAe,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACtE,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,MAAM,OAAO,cAAc;IASG;IARZ,MAAM,GAAG,eAAe,CAAgB,IAAI,EAAE,SAAS,CAAC,CAAC;IAE1E;;;OAGG;IACH,IAAW,WAAW,KAAiC,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAE5E,YAA6B,aAAsB;QAAtB,kBAAa,GAAb,aAAa,CAAS;IACnD,CAAC;IAED;;;OAGG;IACI,QAAQ;QACd,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;QAC1B,IAAI,CAAC,CAAC,EAAE,CAAC;YACR,CAAC,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;YACzB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;QAC/B,CAAC;QACD,OAAO,CAAC,CAAC;IACV,CAAC;CACD;AAED;;GAEG;AACH,MAAM,OAAO,iBAAiB;IACtB,MAAM,CAAC,MAAM,CAAI,EAAoB;QAC3C,OAAO,IAAI,iBAAiB,CAAC,EAAE,EAAE,CAAC,CAAC;IACpC,CAAC;IAEgB,MAAM,GAAG,eAAe,CAA+B,IAAI,EAAE,SAAS,CAAC,CAAC;IAEzF;;OAEG;IACa,OAAO,CAAa;IAEpC;;;OAGG;IACa,aAAa,GAA8C,IAAI,CAAC,MAAM,CAAC;IAEvF,YAAY,OAAmB;QAC9B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YACnC,WAAW,CAAC,EAAE,CAAC,EAAE;gBAChB,qCAAqC;gBACrC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,aAAa,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,EAAE,CAAC,CAAC;YAC1D,CAAC,CAAC,CAAC;YACH,OAAO,KAAK,CAAC;QACd,CAAC,EAAE,KAAK,CAAC,EAAE;YACV,WAAW,CAAC,EAAE,CAAC,EAAE;gBAChB,qCAAqC;gBACrC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,aAAa,CAAI,SAAS,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;YAC7D,CAAC,CAAC,CAAC;YACH,MAAM,KAAK,CAAC;QACb,CAAC,CAAC,CAAC;IACJ,CAAC;CACD;AAED,MAAM,OAAO,aAAa;IAMR;IAMA;IAXjB;IACC;;;OAGG;IACa,IAAmB;IAEnC;;;OAGG;IACa,KAA0B;QAN1B,SAAI,GAAJ,IAAI,CAAe;QAMnB,UAAK,GAAL,KAAK,CAAqB;IAE3C,CAAC;IAED;;OAEG;IACI,cAAc;QACpB,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAChB,MAAM,IAAI,CAAC,KAAK,CAAC;QAClB,CAAC;QACD,OAAO,IAAI,CAAC,IAAK,CAAC;IACnB,CAAC;CACD;AAED;;GAEG;AACH,MAAM,OAAO,qBAAqB;IASJ;IARZ,UAAU,GAAG,IAAI,cAAc,CAAC,GAAG,EAAE,CAAC,IAAI,iBAAiB,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;IAEtG;;;OAGG;IACa,mBAAmB,GAAG,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAEpI,YAA6B,eAAiC;QAAjC,oBAAe,GAAf,eAAe,CAAkB;IAC9D,CAAC;IAEM,UAAU;QAChB,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC;IAC3C,CAAC;CACD"} \ No newline at end of file diff --git a/packages/core/dist/observableInternal/utils.d.ts b/packages/core/dist/observableInternal/utils.d.ts index b663e1e6..d26c4872 100644 --- a/packages/core/dist/observableInternal/utils.d.ts +++ b/packages/core/dist/observableInternal/utils.d.ts @@ -1,109 +1,109 @@ -import { BaseObservable, IObservable, IObservableWithChange, IObserver, IReader, ITransaction } from './base.js'; -import { DebugNameData, DebugOwner, IDebugNameData } from './debugName.js'; -import { DisposableStore, EqualityComparer, Event, IDisposable, IValueWithChangeEvent } from './commonFacade/deps.js'; -/** - * Represents an efficient observable whose value never changes. - */ -export declare function constObservable(value: T): IObservable; -export declare function observableFromPromise(promise: Promise): IObservable<{ - value?: T; -}>; -export declare function observableFromEvent(owner: DebugOwner, event: Event, getValue: (args: TArgs | undefined) => T): IObservable; -export declare function observableFromEvent(event: Event, getValue: (args: TArgs | undefined) => T): IObservable; -export declare function observableFromEventOpts(options: IDebugNameData & { - equalsFn?: EqualityComparer; -}, event: Event, getValue: (args: TArgs | undefined) => T): IObservable; -export declare class FromEventObservable extends BaseObservable { - private readonly _debugNameData; - private readonly event; - readonly _getValue: (args: TArgs | undefined) => T; - private readonly _getTransaction; - private readonly _equalityComparator; - static globalTransaction: ITransaction | undefined; - private value; - private hasValue; - private subscription; - constructor(_debugNameData: DebugNameData, event: Event, _getValue: (args: TArgs | undefined) => T, _getTransaction: () => ITransaction | undefined, _equalityComparator: EqualityComparer); - private getDebugName; - get debugName(): string; - protected onFirstObserverAdded(): void; - private readonly handleEvent; - protected onLastObserverRemoved(): void; - get(): T; -} -export declare namespace observableFromEvent { - const Observer: typeof FromEventObservable; - function batchEventsGlobally(tx: ITransaction, fn: () => void): void; -} -export declare function observableSignalFromEvent(debugName: string, event: Event): IObservable; -/** - * Creates a signal that can be triggered to invalidate observers. - * Signals don't have a value - when they are triggered they indicate a change. - * However, signals can carry a delta that is passed to observers. - */ -export declare function observableSignal(debugName: string): IObservableSignal; -export declare function observableSignal(owner: object): IObservableSignal; -export interface IObservableSignal extends IObservableWithChange { - trigger(tx: ITransaction | undefined, change: TChange): void; -} -export declare function signalFromObservable(owner: DebugOwner | undefined, observable: IObservable): IObservable; -/** - * @deprecated Use `debouncedObservable2` instead. - */ -export declare function debouncedObservable(observable: IObservable, debounceMs: number, disposableStore: DisposableStore): IObservable; -/** - * Creates an observable that debounces the input observable. - */ -export declare function debouncedObservable2(observable: IObservable, debounceMs: number): IObservable; -export declare function wasEventTriggeredRecently(event: Event, timeoutMs: number, disposableStore: DisposableStore): IObservable; -/** - * This makes sure the observable is being observed and keeps its cache alive. - */ -export declare function keepObserved(observable: IObservable): IDisposable; -/** - * This converts the given observable into an autorun. - */ -export declare function recomputeInitiallyAndOnChange(observable: IObservable, handleValue?: (value: T) => void): IDisposable; -export declare class KeepAliveObserver implements IObserver { - private readonly _forceRecompute; - private readonly _handleValue; - private _counter; - constructor(_forceRecompute: boolean, _handleValue: ((value: any) => void) | undefined); - beginUpdate(observable: IObservable): void; - endUpdate(observable: IObservable): void; - handlePossibleChange(observable: IObservable): void; - handleChange(observable: IObservableWithChange, change: TChange): void; -} -export declare function derivedObservableWithCache(owner: DebugOwner, computeFn: (reader: IReader, lastValue: T | undefined) => T): IObservable; -export declare function derivedObservableWithWritableCache(owner: object, computeFn: (reader: IReader, lastValue: T | undefined) => T): IObservable & { - clearCache(transaction: ITransaction): void; - setCache(newValue: T | undefined, tx: ITransaction | undefined): void; -}; -/** - * When the items array changes, referential equal items are not mapped again. - */ -export declare function mapObservableArrayCached(owner: DebugOwner, items: IObservable, map: (input: TIn, store: DisposableStore) => TOut, keySelector?: (input: TIn) => TKey): IObservable; -export declare class ValueWithChangeEventFromObservable implements IValueWithChangeEvent { - readonly observable: IObservable; - constructor(observable: IObservable); - get onDidChange(): Event; - get value(): T; -} -export declare function observableFromValueWithChangeEvent(owner: DebugOwner, value: IValueWithChangeEvent): IObservable; -/** - * Creates an observable that has the latest changed value of the given observables. - * Initially (and when not observed), it has the value of the last observable. - * When observed and any of the observables change, it has the value of the last changed observable. - * If multiple observables change in the same transaction, the last observable wins. -*/ -export declare function latestChangedValue[]>(owner: DebugOwner, observables: T): IObservable>; -/** - * Works like a derived. - * However, if the value is not undefined, it is cached and will not be recomputed anymore. - * In that case, the derived will unsubscribe from its dependencies. -*/ -export declare function derivedConstOnceDefined(owner: DebugOwner, fn: (reader: IReader) => T): IObservable; -type RemoveUndefined = T extends undefined ? never : T; -export declare function runOnChange(observable: IObservableWithChange, cb: (value: T, previousValue: undefined | T, deltas: RemoveUndefined[]) => void): IDisposable; -export declare function runOnChangeWithStore(observable: IObservableWithChange, cb: (value: T, previousValue: undefined | T, deltas: RemoveUndefined[], store: DisposableStore) => void): IDisposable; -export {}; +import { BaseObservable, IObservable, IObservableWithChange, IObserver, IReader, ITransaction } from './base.js'; +import { DebugNameData, DebugOwner, IDebugNameData } from './debugName.js'; +import { DisposableStore, EqualityComparer, Event, IDisposable, IValueWithChangeEvent } from './commonFacade/deps.js'; +/** + * Represents an efficient observable whose value never changes. + */ +export declare function constObservable(value: T): IObservable; +export declare function observableFromPromise(promise: Promise): IObservable<{ + value?: T; +}>; +export declare function observableFromEvent(owner: DebugOwner, event: Event, getValue: (args: TArgs | undefined) => T): IObservable; +export declare function observableFromEvent(event: Event, getValue: (args: TArgs | undefined) => T): IObservable; +export declare function observableFromEventOpts(options: IDebugNameData & { + equalsFn?: EqualityComparer; +}, event: Event, getValue: (args: TArgs | undefined) => T): IObservable; +export declare class FromEventObservable extends BaseObservable { + private readonly _debugNameData; + private readonly event; + readonly _getValue: (args: TArgs | undefined) => T; + private readonly _getTransaction; + private readonly _equalityComparator; + static globalTransaction: ITransaction | undefined; + private value; + private hasValue; + private subscription; + constructor(_debugNameData: DebugNameData, event: Event, _getValue: (args: TArgs | undefined) => T, _getTransaction: () => ITransaction | undefined, _equalityComparator: EqualityComparer); + private getDebugName; + get debugName(): string; + protected onFirstObserverAdded(): void; + private readonly handleEvent; + protected onLastObserverRemoved(): void; + get(): T; +} +export declare namespace observableFromEvent { + const Observer: typeof FromEventObservable; + function batchEventsGlobally(tx: ITransaction, fn: () => void): void; +} +export declare function observableSignalFromEvent(debugName: string, event: Event): IObservable; +/** + * Creates a signal that can be triggered to invalidate observers. + * Signals don't have a value - when they are triggered they indicate a change. + * However, signals can carry a delta that is passed to observers. + */ +export declare function observableSignal(debugName: string): IObservableSignal; +export declare function observableSignal(owner: object): IObservableSignal; +export interface IObservableSignal extends IObservableWithChange { + trigger(tx: ITransaction | undefined, change: TChange): void; +} +export declare function signalFromObservable(owner: DebugOwner | undefined, observable: IObservable): IObservable; +/** + * @deprecated Use `debouncedObservable2` instead. + */ +export declare function debouncedObservable(observable: IObservable, debounceMs: number, disposableStore: DisposableStore): IObservable; +/** + * Creates an observable that debounces the input observable. + */ +export declare function debouncedObservable2(observable: IObservable, debounceMs: number): IObservable; +export declare function wasEventTriggeredRecently(event: Event, timeoutMs: number, disposableStore: DisposableStore): IObservable; +/** + * This makes sure the observable is being observed and keeps its cache alive. + */ +export declare function keepObserved(observable: IObservable): IDisposable; +/** + * This converts the given observable into an autorun. + */ +export declare function recomputeInitiallyAndOnChange(observable: IObservable, handleValue?: (value: T) => void): IDisposable; +export declare class KeepAliveObserver implements IObserver { + private readonly _forceRecompute; + private readonly _handleValue; + private _counter; + constructor(_forceRecompute: boolean, _handleValue: ((value: any) => void) | undefined); + beginUpdate(observable: IObservable): void; + endUpdate(observable: IObservable): void; + handlePossibleChange(observable: IObservable): void; + handleChange(observable: IObservableWithChange, change: TChange): void; +} +export declare function derivedObservableWithCache(owner: DebugOwner, computeFn: (reader: IReader, lastValue: T | undefined) => T): IObservable; +export declare function derivedObservableWithWritableCache(owner: object, computeFn: (reader: IReader, lastValue: T | undefined) => T): IObservable & { + clearCache(transaction: ITransaction): void; + setCache(newValue: T | undefined, tx: ITransaction | undefined): void; +}; +/** + * When the items array changes, referential equal items are not mapped again. + */ +export declare function mapObservableArrayCached(owner: DebugOwner, items: IObservable, map: (input: TIn, store: DisposableStore) => TOut, keySelector?: (input: TIn) => TKey): IObservable; +export declare class ValueWithChangeEventFromObservable implements IValueWithChangeEvent { + readonly observable: IObservable; + constructor(observable: IObservable); + get onDidChange(): Event; + get value(): T; +} +export declare function observableFromValueWithChangeEvent(owner: DebugOwner, value: IValueWithChangeEvent): IObservable; +/** + * Creates an observable that has the latest changed value of the given observables. + * Initially (and when not observed), it has the value of the last observable. + * When observed and any of the observables change, it has the value of the last changed observable. + * If multiple observables change in the same transaction, the last observable wins. +*/ +export declare function latestChangedValue[]>(owner: DebugOwner, observables: T): IObservable>; +/** + * Works like a derived. + * However, if the value is not undefined, it is cached and will not be recomputed anymore. + * In that case, the derived will unsubscribe from its dependencies. +*/ +export declare function derivedConstOnceDefined(owner: DebugOwner, fn: (reader: IReader) => T): IObservable; +type RemoveUndefined = T extends undefined ? never : T; +export declare function runOnChange(observable: IObservableWithChange, cb: (value: T, previousValue: undefined | T, deltas: RemoveUndefined[]) => void): IDisposable; +export declare function runOnChangeWithStore(observable: IObservableWithChange, cb: (value: T, previousValue: undefined | T, deltas: RemoveUndefined[], store: DisposableStore) => void): IDisposable; +export {}; diff --git a/packages/core/dist/observableInternal/utils.js b/packages/core/dist/observableInternal/utils.js index 0227a434..24034b8e 100644 --- a/packages/core/dist/observableInternal/utils.js +++ b/packages/core/dist/observableInternal/utils.js @@ -1,548 +1,548 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ -import { autorun, autorunOpts, autorunWithStoreHandleChanges } from './autorun.js'; -import { BaseObservable, ConvenientObservable, _setKeepObserved, _setRecomputeInitiallyAndOnChange, observableValue, subtransaction, transaction } from './base.js'; -import { DebugNameData, getDebugName, } from './debugName.js'; -import { BugIndicatingError, DisposableStore, Event, strictEquals, toDisposable } from './commonFacade/deps.js'; -import { derived, derivedOpts } from './derived.js'; -import { getLogger } from './logging.js'; -/** - * Represents an efficient observable whose value never changes. - */ -export function constObservable(value) { - return new ConstObservable(value); -} -class ConstObservable extends ConvenientObservable { - value; - constructor(value) { - super(); - this.value = value; - } - get debugName() { - return this.toString(); - } - get() { - return this.value; - } - addObserver(observer) { - // NO OP - } - removeObserver(observer) { - // NO OP - } - toString() { - return `Const: ${this.value}`; - } -} -export function observableFromPromise(promise) { - const observable = observableValue('promiseValue', {}); - promise.then((value) => { - observable.set({ value }, undefined); - }); - return observable; -} -export function observableFromEvent(...args) { - let owner; - let event; - let getValue; - if (args.length === 3) { - [owner, event, getValue] = args; - } - else { - [event, getValue] = args; - } - return new FromEventObservable(new DebugNameData(owner, undefined, getValue), event, getValue, () => FromEventObservable.globalTransaction, strictEquals); -} -export function observableFromEventOpts(options, event, getValue) { - return new FromEventObservable(new DebugNameData(options.owner, options.debugName, options.debugReferenceFn ?? getValue), event, getValue, () => FromEventObservable.globalTransaction, options.equalsFn ?? strictEquals); -} -export class FromEventObservable extends BaseObservable { - _debugNameData; - event; - _getValue; - _getTransaction; - _equalityComparator; - static globalTransaction; - value; - hasValue = false; - subscription; - constructor(_debugNameData, event, _getValue, _getTransaction, _equalityComparator) { - super(); - this._debugNameData = _debugNameData; - this.event = event; - this._getValue = _getValue; - this._getTransaction = _getTransaction; - this._equalityComparator = _equalityComparator; - } - getDebugName() { - return this._debugNameData.getDebugName(this); - } - get debugName() { - const name = this.getDebugName(); - return 'From Event' + (name ? `: ${name}` : ''); - } - onFirstObserverAdded() { - this.subscription = this.event(this.handleEvent); - } - handleEvent = (args) => { - const newValue = this._getValue(args); - const oldValue = this.value; - const didChange = !this.hasValue || !(this._equalityComparator(oldValue, newValue)); - let didRunTransaction = false; - if (didChange) { - this.value = newValue; - if (this.hasValue) { - didRunTransaction = true; - subtransaction(this._getTransaction(), (tx) => { - getLogger()?.handleFromEventObservableTriggered(this, { oldValue, newValue, change: undefined, didChange, hadValue: this.hasValue }); - for (const o of this.observers) { - tx.updateObserver(o, this); - o.handleChange(this, undefined); - } - }, () => { - const name = this.getDebugName(); - return 'Event fired' + (name ? `: ${name}` : ''); - }); - } - this.hasValue = true; - } - if (!didRunTransaction) { - getLogger()?.handleFromEventObservableTriggered(this, { oldValue, newValue, change: undefined, didChange, hadValue: this.hasValue }); - } - }; - onLastObserverRemoved() { - this.subscription.dispose(); - this.subscription = undefined; - this.hasValue = false; - this.value = undefined; - } - get() { - if (this.subscription) { - if (!this.hasValue) { - this.handleEvent(undefined); - } - return this.value; - } - else { - // no cache, as there are no subscribers to keep it updated - const value = this._getValue(undefined); - return value; - } - } -} -(function (observableFromEvent) { - observableFromEvent.Observer = FromEventObservable; - function batchEventsGlobally(tx, fn) { - let didSet = false; - if (FromEventObservable.globalTransaction === undefined) { - FromEventObservable.globalTransaction = tx; - didSet = true; - } - try { - fn(); - } - finally { - if (didSet) { - FromEventObservable.globalTransaction = undefined; - } - } - } - observableFromEvent.batchEventsGlobally = batchEventsGlobally; -})(observableFromEvent = observableFromEvent || (observableFromEvent = {})); -export function observableSignalFromEvent(debugName, event) { - return new FromEventObservableSignal(debugName, event); -} -class FromEventObservableSignal extends BaseObservable { - debugName; - event; - subscription; - constructor(debugName, event) { - super(); - this.debugName = debugName; - this.event = event; - } - onFirstObserverAdded() { - this.subscription = this.event(this.handleEvent); - } - handleEvent = () => { - transaction((tx) => { - for (const o of this.observers) { - tx.updateObserver(o, this); - o.handleChange(this, undefined); - } - }, () => this.debugName); - }; - onLastObserverRemoved() { - this.subscription.dispose(); - this.subscription = undefined; - } - get() { - // NO OP - } -} -export function observableSignal(debugNameOrOwner) { - if (typeof debugNameOrOwner === 'string') { - return new ObservableSignal(debugNameOrOwner); - } - else { - return new ObservableSignal(undefined, debugNameOrOwner); - } -} -class ObservableSignal extends BaseObservable { - _debugName; - _owner; - get debugName() { - return new DebugNameData(this._owner, this._debugName, undefined).getDebugName(this) ?? 'Observable Signal'; - } - toString() { - return this.debugName; - } - constructor(_debugName, _owner) { - super(); - this._debugName = _debugName; - this._owner = _owner; - } - trigger(tx, change) { - if (!tx) { - transaction(tx => { - this.trigger(tx, change); - }, () => `Trigger signal ${this.debugName}`); - return; - } - for (const o of this.observers) { - tx.updateObserver(o, this); - o.handleChange(this, change); - } - } - get() { - // NO OP - } -} -export function signalFromObservable(owner, observable) { - return derivedOpts({ - owner, - equalsFn: () => false, - }, reader => { - observable.read(reader); - }); -} -/** - * @deprecated Use `debouncedObservable2` instead. - */ -export function debouncedObservable(observable, debounceMs, disposableStore) { - const debouncedObservable = observableValue('debounced', undefined); - let timeout = undefined; - disposableStore.add(autorun(reader => { - /** @description debounce */ - const value = observable.read(reader); - if (timeout) { - clearTimeout(timeout); - } - timeout = setTimeout(() => { - transaction(tx => { - debouncedObservable.set(value, tx); - }); - }, debounceMs); - })); - return debouncedObservable; -} -/** - * Creates an observable that debounces the input observable. - */ -export function debouncedObservable2(observable, debounceMs) { - let hasValue = false; - let lastValue; - let timeout = undefined; - return observableFromEvent(cb => { - const d = autorun(reader => { - const value = observable.read(reader); - if (!hasValue) { - hasValue = true; - lastValue = value; - } - else { - if (timeout) { - clearTimeout(timeout); - } - timeout = setTimeout(() => { - lastValue = value; - cb(); - }, debounceMs); - } - }); - return { - dispose() { - d.dispose(); - hasValue = false; - lastValue = undefined; - }, - }; - }, () => { - if (hasValue) { - return lastValue; - } - else { - return observable.get(); - } - }); -} -export function wasEventTriggeredRecently(event, timeoutMs, disposableStore) { - const observable = observableValue('triggeredRecently', false); - let timeout = undefined; - disposableStore.add(event(() => { - observable.set(true, undefined); - if (timeout) { - clearTimeout(timeout); - } - timeout = setTimeout(() => { - observable.set(false, undefined); - }, timeoutMs); - })); - return observable; -} -/** - * This makes sure the observable is being observed and keeps its cache alive. - */ -export function keepObserved(observable) { - const o = new KeepAliveObserver(false, undefined); - observable.addObserver(o); - return toDisposable(() => { - observable.removeObserver(o); - }); -} -_setKeepObserved(keepObserved); -/** - * This converts the given observable into an autorun. - */ -export function recomputeInitiallyAndOnChange(observable, handleValue) { - const o = new KeepAliveObserver(true, handleValue); - observable.addObserver(o); - if (handleValue) { - handleValue(observable.get()); - } - else { - observable.reportChanges(); - } - return toDisposable(() => { - observable.removeObserver(o); - }); -} -_setRecomputeInitiallyAndOnChange(recomputeInitiallyAndOnChange); -export class KeepAliveObserver { - _forceRecompute; - _handleValue; - _counter = 0; - constructor(_forceRecompute, _handleValue) { - this._forceRecompute = _forceRecompute; - this._handleValue = _handleValue; - } - beginUpdate(observable) { - this._counter++; - } - endUpdate(observable) { - this._counter--; - if (this._counter === 0 && this._forceRecompute) { - if (this._handleValue) { - this._handleValue(observable.get()); - } - else { - observable.reportChanges(); - } - } - } - handlePossibleChange(observable) { - // NO OP - } - handleChange(observable, change) { - // NO OP - } -} -export function derivedObservableWithCache(owner, computeFn) { - let lastValue = undefined; - const observable = derivedOpts({ owner, debugReferenceFn: computeFn }, reader => { - lastValue = computeFn(reader, lastValue); - return lastValue; - }); - return observable; -} -export function derivedObservableWithWritableCache(owner, computeFn) { - let lastValue = undefined; - const onChange = observableSignal('derivedObservableWithWritableCache'); - const observable = derived(owner, reader => { - onChange.read(reader); - lastValue = computeFn(reader, lastValue); - return lastValue; - }); - return Object.assign(observable, { - clearCache: (tx) => { - lastValue = undefined; - onChange.trigger(tx); - }, - setCache: (newValue, tx) => { - lastValue = newValue; - onChange.trigger(tx); - } - }); -} -/** - * When the items array changes, referential equal items are not mapped again. - */ -export function mapObservableArrayCached(owner, items, map, keySelector) { - let m = new ArrayMap(map, keySelector); - const self = derivedOpts({ - debugReferenceFn: map, - owner, - onLastObserverRemoved: () => { - m.dispose(); - m = new ArrayMap(map); - } - }, (reader) => { - m.setItems(items.read(reader)); - return m.getItems(); - }); - return self; -} -class ArrayMap { - _map; - _keySelector; - _cache = new Map(); - _items = []; - constructor(_map, _keySelector) { - this._map = _map; - this._keySelector = _keySelector; - } - dispose() { - this._cache.forEach(entry => entry.store.dispose()); - this._cache.clear(); - } - setItems(items) { - const newItems = []; - const itemsToRemove = new Set(this._cache.keys()); - for (const item of items) { - const key = this._keySelector ? this._keySelector(item) : item; - let entry = this._cache.get(key); - if (!entry) { - const store = new DisposableStore(); - const out = this._map(item, store); - entry = { out, store }; - this._cache.set(key, entry); - } - else { - itemsToRemove.delete(key); - } - newItems.push(entry.out); - } - for (const item of itemsToRemove) { - const entry = this._cache.get(item); - entry.store.dispose(); - this._cache.delete(item); - } - this._items = newItems; - } - getItems() { - return this._items; - } -} -export class ValueWithChangeEventFromObservable { - observable; - constructor(observable) { - this.observable = observable; - } - get onDidChange() { - return Event.fromObservableLight(this.observable); - } - get value() { - return this.observable.get(); - } -} -export function observableFromValueWithChangeEvent(owner, value) { - if (value instanceof ValueWithChangeEventFromObservable) { - return value.observable; - } - return observableFromEvent(owner, value.onDidChange, () => value.value); -} -/** - * Creates an observable that has the latest changed value of the given observables. - * Initially (and when not observed), it has the value of the last observable. - * When observed and any of the observables change, it has the value of the last changed observable. - * If multiple observables change in the same transaction, the last observable wins. -*/ -export function latestChangedValue(owner, observables) { - if (observables.length === 0) { - throw new BugIndicatingError(); - } - let hasLastChangedValue = false; - let lastChangedValue = undefined; - const result = observableFromEvent(owner, cb => { - const store = new DisposableStore(); - for (const o of observables) { - store.add(autorunOpts({ debugName: () => getDebugName(result, new DebugNameData(owner, undefined, undefined)) + '.updateLastChangedValue' }, reader => { - hasLastChangedValue = true; - lastChangedValue = o.read(reader); - cb(); - })); - } - store.add({ - dispose() { - hasLastChangedValue = false; - lastChangedValue = undefined; - }, - }); - return store; - }, () => { - if (hasLastChangedValue) { - return lastChangedValue; - } - else { - return observables[observables.length - 1].get(); - } - }); - return result; -} -/** - * Works like a derived. - * However, if the value is not undefined, it is cached and will not be recomputed anymore. - * In that case, the derived will unsubscribe from its dependencies. -*/ -export function derivedConstOnceDefined(owner, fn) { - return derivedObservableWithCache(owner, (reader, lastValue) => lastValue ?? fn(reader)); -} -export function runOnChange(observable, cb) { - let _previousValue; - return autorunWithStoreHandleChanges({ - createEmptyChangeSummary: () => ({ deltas: [], didChange: false }), - handleChange: (context, changeSummary) => { - if (context.didChange(observable)) { - const e = context.change; - if (e !== undefined) { - changeSummary.deltas.push(e); - } - changeSummary.didChange = true; - } - return true; - }, - }, (reader, changeSummary) => { - const value = observable.read(reader); - const previousValue = _previousValue; - if (changeSummary.didChange) { - _previousValue = value; - cb(value, previousValue, changeSummary.deltas); - } - }); -} -export function runOnChangeWithStore(observable, cb) { - const store = new DisposableStore(); - const disposable = runOnChange(observable, (value, previousValue, deltas) => { - store.clear(); - cb(value, previousValue, deltas, store); - }); - return { - dispose() { - disposable.dispose(); - store.dispose(); - } - }; -} +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +import { autorun, autorunOpts, autorunWithStoreHandleChanges } from './autorun.js'; +import { BaseObservable, ConvenientObservable, _setKeepObserved, _setRecomputeInitiallyAndOnChange, observableValue, subtransaction, transaction } from './base.js'; +import { DebugNameData, getDebugName, } from './debugName.js'; +import { BugIndicatingError, DisposableStore, Event, strictEquals, toDisposable } from './commonFacade/deps.js'; +import { derived, derivedOpts } from './derived.js'; +import { getLogger } from './logging.js'; +/** + * Represents an efficient observable whose value never changes. + */ +export function constObservable(value) { + return new ConstObservable(value); +} +class ConstObservable extends ConvenientObservable { + value; + constructor(value) { + super(); + this.value = value; + } + get debugName() { + return this.toString(); + } + get() { + return this.value; + } + addObserver(observer) { + // NO OP + } + removeObserver(observer) { + // NO OP + } + toString() { + return `Const: ${this.value}`; + } +} +export function observableFromPromise(promise) { + const observable = observableValue('promiseValue', {}); + promise.then((value) => { + observable.set({ value }, undefined); + }); + return observable; +} +export function observableFromEvent(...args) { + let owner; + let event; + let getValue; + if (args.length === 3) { + [owner, event, getValue] = args; + } + else { + [event, getValue] = args; + } + return new FromEventObservable(new DebugNameData(owner, undefined, getValue), event, getValue, () => FromEventObservable.globalTransaction, strictEquals); +} +export function observableFromEventOpts(options, event, getValue) { + return new FromEventObservable(new DebugNameData(options.owner, options.debugName, options.debugReferenceFn ?? getValue), event, getValue, () => FromEventObservable.globalTransaction, options.equalsFn ?? strictEquals); +} +export class FromEventObservable extends BaseObservable { + _debugNameData; + event; + _getValue; + _getTransaction; + _equalityComparator; + static globalTransaction; + value; + hasValue = false; + subscription; + constructor(_debugNameData, event, _getValue, _getTransaction, _equalityComparator) { + super(); + this._debugNameData = _debugNameData; + this.event = event; + this._getValue = _getValue; + this._getTransaction = _getTransaction; + this._equalityComparator = _equalityComparator; + } + getDebugName() { + return this._debugNameData.getDebugName(this); + } + get debugName() { + const name = this.getDebugName(); + return 'From Event' + (name ? `: ${name}` : ''); + } + onFirstObserverAdded() { + this.subscription = this.event(this.handleEvent); + } + handleEvent = (args) => { + const newValue = this._getValue(args); + const oldValue = this.value; + const didChange = !this.hasValue || !(this._equalityComparator(oldValue, newValue)); + let didRunTransaction = false; + if (didChange) { + this.value = newValue; + if (this.hasValue) { + didRunTransaction = true; + subtransaction(this._getTransaction(), (tx) => { + getLogger()?.handleFromEventObservableTriggered(this, { oldValue, newValue, change: undefined, didChange, hadValue: this.hasValue }); + for (const o of this.observers) { + tx.updateObserver(o, this); + o.handleChange(this, undefined); + } + }, () => { + const name = this.getDebugName(); + return 'Event fired' + (name ? `: ${name}` : ''); + }); + } + this.hasValue = true; + } + if (!didRunTransaction) { + getLogger()?.handleFromEventObservableTriggered(this, { oldValue, newValue, change: undefined, didChange, hadValue: this.hasValue }); + } + }; + onLastObserverRemoved() { + this.subscription.dispose(); + this.subscription = undefined; + this.hasValue = false; + this.value = undefined; + } + get() { + if (this.subscription) { + if (!this.hasValue) { + this.handleEvent(undefined); + } + return this.value; + } + else { + // no cache, as there are no subscribers to keep it updated + const value = this._getValue(undefined); + return value; + } + } +} +(function (observableFromEvent) { + observableFromEvent.Observer = FromEventObservable; + function batchEventsGlobally(tx, fn) { + let didSet = false; + if (FromEventObservable.globalTransaction === undefined) { + FromEventObservable.globalTransaction = tx; + didSet = true; + } + try { + fn(); + } + finally { + if (didSet) { + FromEventObservable.globalTransaction = undefined; + } + } + } + observableFromEvent.batchEventsGlobally = batchEventsGlobally; +})(observableFromEvent || (observableFromEvent = {})); +export function observableSignalFromEvent(debugName, event) { + return new FromEventObservableSignal(debugName, event); +} +class FromEventObservableSignal extends BaseObservable { + debugName; + event; + subscription; + constructor(debugName, event) { + super(); + this.debugName = debugName; + this.event = event; + } + onFirstObserverAdded() { + this.subscription = this.event(this.handleEvent); + } + handleEvent = () => { + transaction((tx) => { + for (const o of this.observers) { + tx.updateObserver(o, this); + o.handleChange(this, undefined); + } + }, () => this.debugName); + }; + onLastObserverRemoved() { + this.subscription.dispose(); + this.subscription = undefined; + } + get() { + // NO OP + } +} +export function observableSignal(debugNameOrOwner) { + if (typeof debugNameOrOwner === 'string') { + return new ObservableSignal(debugNameOrOwner); + } + else { + return new ObservableSignal(undefined, debugNameOrOwner); + } +} +class ObservableSignal extends BaseObservable { + _debugName; + _owner; + get debugName() { + return new DebugNameData(this._owner, this._debugName, undefined).getDebugName(this) ?? 'Observable Signal'; + } + toString() { + return this.debugName; + } + constructor(_debugName, _owner) { + super(); + this._debugName = _debugName; + this._owner = _owner; + } + trigger(tx, change) { + if (!tx) { + transaction(tx => { + this.trigger(tx, change); + }, () => `Trigger signal ${this.debugName}`); + return; + } + for (const o of this.observers) { + tx.updateObserver(o, this); + o.handleChange(this, change); + } + } + get() { + // NO OP + } +} +export function signalFromObservable(owner, observable) { + return derivedOpts({ + owner, + equalsFn: () => false, + }, reader => { + observable.read(reader); + }); +} +/** + * @deprecated Use `debouncedObservable2` instead. + */ +export function debouncedObservable(observable, debounceMs, disposableStore) { + const debouncedObservable = observableValue('debounced', undefined); + let timeout = undefined; + disposableStore.add(autorun(reader => { + /** @description debounce */ + const value = observable.read(reader); + if (timeout) { + clearTimeout(timeout); + } + timeout = setTimeout(() => { + transaction(tx => { + debouncedObservable.set(value, tx); + }); + }, debounceMs); + })); + return debouncedObservable; +} +/** + * Creates an observable that debounces the input observable. + */ +export function debouncedObservable2(observable, debounceMs) { + let hasValue = false; + let lastValue; + let timeout = undefined; + return observableFromEvent(cb => { + const d = autorun(reader => { + const value = observable.read(reader); + if (!hasValue) { + hasValue = true; + lastValue = value; + } + else { + if (timeout) { + clearTimeout(timeout); + } + timeout = setTimeout(() => { + lastValue = value; + cb(); + }, debounceMs); + } + }); + return { + dispose() { + d.dispose(); + hasValue = false; + lastValue = undefined; + }, + }; + }, () => { + if (hasValue) { + return lastValue; + } + else { + return observable.get(); + } + }); +} +export function wasEventTriggeredRecently(event, timeoutMs, disposableStore) { + const observable = observableValue('triggeredRecently', false); + let timeout = undefined; + disposableStore.add(event(() => { + observable.set(true, undefined); + if (timeout) { + clearTimeout(timeout); + } + timeout = setTimeout(() => { + observable.set(false, undefined); + }, timeoutMs); + })); + return observable; +} +/** + * This makes sure the observable is being observed and keeps its cache alive. + */ +export function keepObserved(observable) { + const o = new KeepAliveObserver(false, undefined); + observable.addObserver(o); + return toDisposable(() => { + observable.removeObserver(o); + }); +} +_setKeepObserved(keepObserved); +/** + * This converts the given observable into an autorun. + */ +export function recomputeInitiallyAndOnChange(observable, handleValue) { + const o = new KeepAliveObserver(true, handleValue); + observable.addObserver(o); + if (handleValue) { + handleValue(observable.get()); + } + else { + observable.reportChanges(); + } + return toDisposable(() => { + observable.removeObserver(o); + }); +} +_setRecomputeInitiallyAndOnChange(recomputeInitiallyAndOnChange); +export class KeepAliveObserver { + _forceRecompute; + _handleValue; + _counter = 0; + constructor(_forceRecompute, _handleValue) { + this._forceRecompute = _forceRecompute; + this._handleValue = _handleValue; + } + beginUpdate(observable) { + this._counter++; + } + endUpdate(observable) { + this._counter--; + if (this._counter === 0 && this._forceRecompute) { + if (this._handleValue) { + this._handleValue(observable.get()); + } + else { + observable.reportChanges(); + } + } + } + handlePossibleChange(observable) { + // NO OP + } + handleChange(observable, change) { + // NO OP + } +} +export function derivedObservableWithCache(owner, computeFn) { + let lastValue = undefined; + const observable = derivedOpts({ owner, debugReferenceFn: computeFn }, reader => { + lastValue = computeFn(reader, lastValue); + return lastValue; + }); + return observable; +} +export function derivedObservableWithWritableCache(owner, computeFn) { + let lastValue = undefined; + const onChange = observableSignal('derivedObservableWithWritableCache'); + const observable = derived(owner, reader => { + onChange.read(reader); + lastValue = computeFn(reader, lastValue); + return lastValue; + }); + return Object.assign(observable, { + clearCache: (tx) => { + lastValue = undefined; + onChange.trigger(tx); + }, + setCache: (newValue, tx) => { + lastValue = newValue; + onChange.trigger(tx); + } + }); +} +/** + * When the items array changes, referential equal items are not mapped again. + */ +export function mapObservableArrayCached(owner, items, map, keySelector) { + let m = new ArrayMap(map, keySelector); + const self = derivedOpts({ + debugReferenceFn: map, + owner, + onLastObserverRemoved: () => { + m.dispose(); + m = new ArrayMap(map); + } + }, (reader) => { + m.setItems(items.read(reader)); + return m.getItems(); + }); + return self; +} +class ArrayMap { + _map; + _keySelector; + _cache = new Map(); + _items = []; + constructor(_map, _keySelector) { + this._map = _map; + this._keySelector = _keySelector; + } + dispose() { + this._cache.forEach(entry => entry.store.dispose()); + this._cache.clear(); + } + setItems(items) { + const newItems = []; + const itemsToRemove = new Set(this._cache.keys()); + for (const item of items) { + const key = this._keySelector ? this._keySelector(item) : item; + let entry = this._cache.get(key); + if (!entry) { + const store = new DisposableStore(); + const out = this._map(item, store); + entry = { out, store }; + this._cache.set(key, entry); + } + else { + itemsToRemove.delete(key); + } + newItems.push(entry.out); + } + for (const item of itemsToRemove) { + const entry = this._cache.get(item); + entry.store.dispose(); + this._cache.delete(item); + } + this._items = newItems; + } + getItems() { + return this._items; + } +} +export class ValueWithChangeEventFromObservable { + observable; + constructor(observable) { + this.observable = observable; + } + get onDidChange() { + return Event.fromObservableLight(this.observable); + } + get value() { + return this.observable.get(); + } +} +export function observableFromValueWithChangeEvent(owner, value) { + if (value instanceof ValueWithChangeEventFromObservable) { + return value.observable; + } + return observableFromEvent(owner, value.onDidChange, () => value.value); +} +/** + * Creates an observable that has the latest changed value of the given observables. + * Initially (and when not observed), it has the value of the last observable. + * When observed and any of the observables change, it has the value of the last changed observable. + * If multiple observables change in the same transaction, the last observable wins. +*/ +export function latestChangedValue(owner, observables) { + if (observables.length === 0) { + throw new BugIndicatingError(); + } + let hasLastChangedValue = false; + let lastChangedValue = undefined; + const result = observableFromEvent(owner, cb => { + const store = new DisposableStore(); + for (const o of observables) { + store.add(autorunOpts({ debugName: () => getDebugName(result, new DebugNameData(owner, undefined, undefined)) + '.updateLastChangedValue' }, reader => { + hasLastChangedValue = true; + lastChangedValue = o.read(reader); + cb(); + })); + } + store.add({ + dispose() { + hasLastChangedValue = false; + lastChangedValue = undefined; + }, + }); + return store; + }, () => { + if (hasLastChangedValue) { + return lastChangedValue; + } + else { + return observables[observables.length - 1].get(); + } + }); + return result; +} +/** + * Works like a derived. + * However, if the value is not undefined, it is cached and will not be recomputed anymore. + * In that case, the derived will unsubscribe from its dependencies. +*/ +export function derivedConstOnceDefined(owner, fn) { + return derivedObservableWithCache(owner, (reader, lastValue) => lastValue ?? fn(reader)); +} +export function runOnChange(observable, cb) { + let _previousValue; + return autorunWithStoreHandleChanges({ + createEmptyChangeSummary: () => ({ deltas: [], didChange: false }), + handleChange: (context, changeSummary) => { + if (context.didChange(observable)) { + const e = context.change; + if (e !== undefined) { + changeSummary.deltas.push(e); + } + changeSummary.didChange = true; + } + return true; + }, + }, (reader, changeSummary) => { + const value = observable.read(reader); + const previousValue = _previousValue; + if (changeSummary.didChange) { + _previousValue = value; + cb(value, previousValue, changeSummary.deltas); + } + }); +} +export function runOnChangeWithStore(observable, cb) { + const store = new DisposableStore(); + const disposable = runOnChange(observable, (value, previousValue, deltas) => { + store.clear(); + cb(value, previousValue, deltas, store); + }); + return { + dispose() { + disposable.dispose(); + store.dispose(); + } + }; +} //# sourceMappingURL=utils.js.map \ No newline at end of file diff --git a/packages/core/dist/observableInternal/utils.js.map b/packages/core/dist/observableInternal/utils.js.map index 21cf42be..068bdc20 100644 --- a/packages/core/dist/observableInternal/utils.js.map +++ b/packages/core/dist/observableInternal/utils.js.map @@ -1 +1 @@ -{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/observableInternal/utils.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/observableInternal/utils.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/dist/observableInternal/utilsCancellation.d.ts b/packages/core/dist/observableInternal/utilsCancellation.d.ts index a3591db1..8a64c604 100644 --- a/packages/core/dist/observableInternal/utilsCancellation.d.ts +++ b/packages/core/dist/observableInternal/utilsCancellation.d.ts @@ -1,10 +1,10 @@ -import { IReader, IObservable } from './base.js'; -import { CancellationToken } from './commonFacade/cancellation.js'; -/** - * Resolves the promise when the observables state matches the predicate. - */ -export declare function waitForState(observable: IObservable): Promise; -export declare function waitForState(observable: IObservable, predicate: (state: T) => state is TState, isError?: (state: T) => boolean | unknown | undefined, cancellationToken?: CancellationToken): Promise; -export declare function waitForState(observable: IObservable, predicate: (state: T) => boolean, isError?: (state: T) => boolean | unknown | undefined, cancellationToken?: CancellationToken): Promise; -export declare function derivedWithCancellationToken(computeFn: (reader: IReader, cancellationToken: CancellationToken) => T): IObservable; -export declare function derivedWithCancellationToken(owner: object, computeFn: (reader: IReader, cancellationToken: CancellationToken) => T): IObservable; +import { IReader, IObservable } from './base.js'; +import { CancellationToken } from './commonFacade/cancellation.js'; +/** + * Resolves the promise when the observables state matches the predicate. + */ +export declare function waitForState(observable: IObservable): Promise; +export declare function waitForState(observable: IObservable, predicate: (state: T) => state is TState, isError?: (state: T) => boolean | unknown | undefined, cancellationToken?: CancellationToken): Promise; +export declare function waitForState(observable: IObservable, predicate: (state: T) => boolean, isError?: (state: T) => boolean | unknown | undefined, cancellationToken?: CancellationToken): Promise; +export declare function derivedWithCancellationToken(computeFn: (reader: IReader, cancellationToken: CancellationToken) => T): IObservable; +export declare function derivedWithCancellationToken(owner: object, computeFn: (reader: IReader, cancellationToken: CancellationToken) => T): IObservable; diff --git a/packages/core/dist/observableInternal/utilsCancellation.js b/packages/core/dist/observableInternal/utilsCancellation.js index ac8debd2..93b11f22 100644 --- a/packages/core/dist/observableInternal/utilsCancellation.js +++ b/packages/core/dist/observableInternal/utilsCancellation.js @@ -1,83 +1,83 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ -import { DebugNameData } from './debugName.js'; -import { CancellationError, CancellationTokenSource } from './commonFacade/cancellation.js'; -import { Derived } from './derived.js'; -import { strictEquals } from './commonFacade/deps.js'; -import { autorun } from './autorun.js'; -export function waitForState(observable, predicate, isError, cancellationToken) { - if (!predicate) { - predicate = state => state !== null && state !== undefined; - } - return new Promise((resolve, reject) => { - let isImmediateRun = true; - let shouldDispose = false; - const stateObs = observable.map(state => { - /** @description waitForState.state */ - return { - isFinished: predicate(state), - error: isError ? isError(state) : false, - state - }; - }); - const d = autorun(reader => { - /** @description waitForState */ - const { isFinished, error, state } = stateObs.read(reader); - if (isFinished || error) { - if (isImmediateRun) { - // The variable `d` is not initialized yet - shouldDispose = true; - } - else { - d.dispose(); - } - if (error) { - reject(error === true ? state : error); - } - else { - resolve(state); - } - } - }); - if (cancellationToken) { - const dc = cancellationToken.onCancellationRequested(() => { - d.dispose(); - dc.dispose(); - reject(new CancellationError()); - }); - if (cancellationToken.isCancellationRequested) { - d.dispose(); - dc.dispose(); - reject(new CancellationError()); - return; - } - } - isImmediateRun = false; - if (shouldDispose) { - d.dispose(); - } - }); -} -export function derivedWithCancellationToken(computeFnOrOwner, computeFnOrUndefined) { - let computeFn; - let owner; - if (computeFnOrUndefined === undefined) { - computeFn = computeFnOrOwner; - owner = undefined; - } - else { - owner = computeFnOrOwner; - computeFn = computeFnOrUndefined; - } - let cancellationTokenSource = undefined; - return new Derived(new DebugNameData(owner, undefined, computeFn), r => { - if (cancellationTokenSource) { - cancellationTokenSource.dispose(true); - } - cancellationTokenSource = new CancellationTokenSource(); - return computeFn(r, cancellationTokenSource.token); - }, undefined, undefined, () => cancellationTokenSource?.dispose(), strictEquals); -} +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +import { DebugNameData } from './debugName.js'; +import { CancellationError, CancellationTokenSource } from './commonFacade/cancellation.js'; +import { Derived } from './derived.js'; +import { strictEquals } from './commonFacade/deps.js'; +import { autorun } from './autorun.js'; +export function waitForState(observable, predicate, isError, cancellationToken) { + if (!predicate) { + predicate = state => state !== null && state !== undefined; + } + return new Promise((resolve, reject) => { + let isImmediateRun = true; + let shouldDispose = false; + const stateObs = observable.map(state => { + /** @description waitForState.state */ + return { + isFinished: predicate(state), + error: isError ? isError(state) : false, + state + }; + }); + const d = autorun(reader => { + /** @description waitForState */ + const { isFinished, error, state } = stateObs.read(reader); + if (isFinished || error) { + if (isImmediateRun) { + // The variable `d` is not initialized yet + shouldDispose = true; + } + else { + d.dispose(); + } + if (error) { + reject(error === true ? state : error); + } + else { + resolve(state); + } + } + }); + if (cancellationToken) { + const dc = cancellationToken.onCancellationRequested(() => { + d.dispose(); + dc.dispose(); + reject(new CancellationError()); + }); + if (cancellationToken.isCancellationRequested) { + d.dispose(); + dc.dispose(); + reject(new CancellationError()); + return; + } + } + isImmediateRun = false; + if (shouldDispose) { + d.dispose(); + } + }); +} +export function derivedWithCancellationToken(computeFnOrOwner, computeFnOrUndefined) { + let computeFn; + let owner; + if (computeFnOrUndefined === undefined) { + computeFn = computeFnOrOwner; + owner = undefined; + } + else { + owner = computeFnOrOwner; + computeFn = computeFnOrUndefined; + } + let cancellationTokenSource = undefined; + return new Derived(new DebugNameData(owner, undefined, computeFn), r => { + if (cancellationTokenSource) { + cancellationTokenSource.dispose(true); + } + cancellationTokenSource = new CancellationTokenSource(); + return computeFn(r, cancellationTokenSource.token); + }, undefined, undefined, () => cancellationTokenSource?.dispose(), strictEquals); +} //# sourceMappingURL=utilsCancellation.js.map \ No newline at end of file diff --git a/packages/core/dist/observableInternal/utilsCancellation.js.map b/packages/core/dist/observableInternal/utilsCancellation.js.map index ec1631b0..611253a7 100644 --- a/packages/core/dist/observableInternal/utilsCancellation.js.map +++ b/packages/core/dist/observableInternal/utilsCancellation.js.map @@ -1 +1 @@ -{"version":3,"file":"utilsCancellation.js","sourceRoot":"","sources":["../../src/observableInternal/utilsCancellation.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"utilsCancellation.js","sourceRoot":"","sources":["../../src/observableInternal/utilsCancellation.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/dist/path.d.ts b/packages/core/dist/path.d.ts index c7ed7908..3ca67a8c 100644 --- a/packages/core/dist/path.d.ts +++ b/packages/core/dist/path.d.ts @@ -1,39 +1,39 @@ -export interface ParsedPath { - root: string; - dir: string; - base: string; - ext: string; - name: string; -} -export interface IPath { - normalize(path: string): string; - isAbsolute(path: string): boolean; - join(...paths: string[]): string; - resolve(...pathSegments: string[]): string; - relative(from: string, to: string): string; - dirname(path: string): string; - basename(path: string, suffix?: string): string; - extname(path: string): string; - format(pathObject: ParsedPath): string; - parse(path: string): ParsedPath; - toNamespacedPath(path: string): string; - sep: '\\' | '/'; - delimiter: string; - win32: IPath | null; - posix: IPath | null; -} -export declare const win32: IPath; -export declare const posix: IPath; -export declare const normalize: (path: string) => string; -export declare const isAbsolute: (path: string) => boolean; -export declare const join: (...paths: string[]) => string; -export declare const resolve: (...pathSegments: string[]) => string; -export declare const relative: (from: string, to: string) => string; -export declare const dirname: (path: string) => string; -export declare const basename: (path: string, suffix?: string) => string; -export declare const extname: (path: string) => string; -export declare const format: (pathObject: ParsedPath) => string; -export declare const parse: (path: string) => ParsedPath; -export declare const toNamespacedPath: (path: string) => string; -export declare const sep: "/" | "\\"; -export declare const delimiter: string; +export interface ParsedPath { + root: string; + dir: string; + base: string; + ext: string; + name: string; +} +export interface IPath { + normalize(path: string): string; + isAbsolute(path: string): boolean; + join(...paths: string[]): string; + resolve(...pathSegments: string[]): string; + relative(from: string, to: string): string; + dirname(path: string): string; + basename(path: string, suffix?: string): string; + extname(path: string): string; + format(pathObject: ParsedPath): string; + parse(path: string): ParsedPath; + toNamespacedPath(path: string): string; + sep: '\\' | '/'; + delimiter: string; + win32: IPath | null; + posix: IPath | null; +} +export declare const win32: IPath; +export declare const posix: IPath; +export declare const normalize: (path: string) => string; +export declare const isAbsolute: (path: string) => boolean; +export declare const join: (...paths: string[]) => string; +export declare const resolve: (...pathSegments: string[]) => string; +export declare const relative: (from: string, to: string) => string; +export declare const dirname: (path: string) => string; +export declare const basename: (path: string, suffix?: string) => string; +export declare const extname: (path: string) => string; +export declare const format: (pathObject: ParsedPath) => string; +export declare const parse: (path: string) => ParsedPath; +export declare const toNamespacedPath: (path: string) => string; +export declare const sep: "/" | "\\"; +export declare const delimiter: string; diff --git a/packages/core/dist/path.js b/packages/core/dist/path.js index 39627430..599bc6b8 100644 --- a/packages/core/dist/path.js +++ b/packages/core/dist/path.js @@ -1,1406 +1,1406 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ -// NOTE: VSCode's copy of nodejs path library to be usable in common (non-node) namespace -// Copied from: https://github.com/nodejs/node/commits/v20.9.0/lib/path.js -// Excluding: the change that adds primordials -// (https://github.com/nodejs/node/commit/187a862d221dec42fa9a5c4214e7034d9092792f and others) -/** - * Copyright Joyent, Inc. and other Node contributors. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Software, and to permit - * persons to whom the Software is furnished to do so, subject to the - * following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN - * NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, - * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR - * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE - * USE OR OTHER DEALINGS IN THE SOFTWARE. - */ -import * as process from './process.js'; -const CHAR_UPPERCASE_A = 65; /* A */ -const CHAR_LOWERCASE_A = 97; /* a */ -const CHAR_UPPERCASE_Z = 90; /* Z */ -const CHAR_LOWERCASE_Z = 122; /* z */ -const CHAR_DOT = 46; /* . */ -const CHAR_FORWARD_SLASH = 47; /* / */ -const CHAR_BACKWARD_SLASH = 92; /* \ */ -const CHAR_COLON = 58; /* : */ -const CHAR_QUESTION_MARK = 63; /* ? */ -class ErrorInvalidArgType extends Error { - code; - constructor(name, expected, actual) { - // determiner: 'must be' or 'must not be' - let determiner; - if (typeof expected === 'string' && expected.indexOf('not ') === 0) { - determiner = 'must not be'; - expected = expected.replace(/^not /, ''); - } - else { - determiner = 'must be'; - } - const type = name.indexOf('.') !== -1 ? 'property' : 'argument'; - let msg = `The "${name}" ${type} ${determiner} of type ${expected}`; - msg += `. Received type ${typeof actual}`; - super(msg); - this.code = 'ERR_INVALID_ARG_TYPE'; - } -} -function validateObject(pathObject, name) { - if (pathObject === null || typeof pathObject !== 'object') { - throw new ErrorInvalidArgType(name, 'Object', pathObject); - } -} -function validateString(value, name) { - if (typeof value !== 'string') { - throw new ErrorInvalidArgType(name, 'string', value); - } -} -const platformIsWin32 = (process.platform === 'win32'); -function isPathSeparator(code) { - return code === CHAR_FORWARD_SLASH || code === CHAR_BACKWARD_SLASH; -} -function isPosixPathSeparator(code) { - return code === CHAR_FORWARD_SLASH; -} -function isWindowsDeviceRoot(code) { - return (code >= CHAR_UPPERCASE_A && code <= CHAR_UPPERCASE_Z) || - (code >= CHAR_LOWERCASE_A && code <= CHAR_LOWERCASE_Z); -} -// Resolves . and .. elements in a path with directory names -function normalizeString(path, allowAboveRoot, separator, isPathSeparator) { - let res = ''; - let lastSegmentLength = 0; - let lastSlash = -1; - let dots = 0; - let code = 0; - for (let i = 0; i <= path.length; ++i) { - if (i < path.length) { - code = path.charCodeAt(i); - } - else if (isPathSeparator(code)) { - break; - } - else { - code = CHAR_FORWARD_SLASH; - } - if (isPathSeparator(code)) { - if (lastSlash === i - 1 || dots === 1) { - // NOOP - } - else if (dots === 2) { - if (res.length < 2 || lastSegmentLength !== 2 || - res.charCodeAt(res.length - 1) !== CHAR_DOT || - res.charCodeAt(res.length - 2) !== CHAR_DOT) { - if (res.length > 2) { - const lastSlashIndex = res.lastIndexOf(separator); - if (lastSlashIndex === -1) { - res = ''; - lastSegmentLength = 0; - } - else { - res = res.slice(0, lastSlashIndex); - lastSegmentLength = res.length - 1 - res.lastIndexOf(separator); - } - lastSlash = i; - dots = 0; - continue; - } - else if (res.length !== 0) { - res = ''; - lastSegmentLength = 0; - lastSlash = i; - dots = 0; - continue; - } - } - if (allowAboveRoot) { - res += res.length > 0 ? `${separator}..` : '..'; - lastSegmentLength = 2; - } - } - else { - if (res.length > 0) { - res += `${separator}${path.slice(lastSlash + 1, i)}`; - } - else { - res = path.slice(lastSlash + 1, i); - } - lastSegmentLength = i - lastSlash - 1; - } - lastSlash = i; - dots = 0; - } - else if (code === CHAR_DOT && dots !== -1) { - ++dots; - } - else { - dots = -1; - } - } - return res; -} -function formatExt(ext) { - return ext ? `${ext[0] === '.' ? '' : '.'}${ext}` : ''; -} -function _format(sep, pathObject) { - validateObject(pathObject, 'pathObject'); - const dir = pathObject.dir || pathObject.root; - const base = pathObject.base || - `${pathObject.name || ''}${formatExt(pathObject.ext)}`; - if (!dir) { - return base; - } - return dir === pathObject.root ? `${dir}${base}` : `${dir}${sep}${base}`; -} -export const win32 = { - // path.resolve([from ...], to) - resolve(...pathSegments) { - let resolvedDevice = ''; - let resolvedTail = ''; - let resolvedAbsolute = false; - for (let i = pathSegments.length - 1; i >= -1; i--) { - let path; - if (i >= 0) { - path = pathSegments[i]; - validateString(path, `paths[${i}]`); - // Skip empty entries - if (path.length === 0) { - continue; - } - } - else if (resolvedDevice.length === 0) { - path = process.cwd(); - } - else { - // Windows has the concept of drive-specific current working - // directories. If we've resolved a drive letter but not yet an - // absolute path, get cwd for that drive, or the process cwd if - // the drive cwd is not available. We're sure the device is not - // a UNC path at this points, because UNC paths are always absolute. - path = process.env[`=${resolvedDevice}`] || process.cwd(); - // Verify that a cwd was found and that it actually points - // to our drive. If not, default to the drive's root. - if (path === undefined || - (path.slice(0, 2).toLowerCase() !== resolvedDevice.toLowerCase() && - path.charCodeAt(2) === CHAR_BACKWARD_SLASH)) { - path = `${resolvedDevice}\\`; - } - } - const len = path.length; - let rootEnd = 0; - let device = ''; - let isAbsolute = false; - const code = path.charCodeAt(0); - // Try to match a root - if (len === 1) { - if (isPathSeparator(code)) { - // `path` contains just a path separator - rootEnd = 1; - isAbsolute = true; - } - } - else if (isPathSeparator(code)) { - // Possible UNC root - // If we started with a separator, we know we at least have an - // absolute path of some kind (UNC or otherwise) - isAbsolute = true; - if (isPathSeparator(path.charCodeAt(1))) { - // Matched double path separator at beginning - let j = 2; - let last = j; - // Match 1 or more non-path separators - while (j < len && !isPathSeparator(path.charCodeAt(j))) { - j++; - } - if (j < len && j !== last) { - const firstPart = path.slice(last, j); - // Matched! - last = j; - // Match 1 or more path separators - while (j < len && isPathSeparator(path.charCodeAt(j))) { - j++; - } - if (j < len && j !== last) { - // Matched! - last = j; - // Match 1 or more non-path separators - while (j < len && !isPathSeparator(path.charCodeAt(j))) { - j++; - } - if (j === len || j !== last) { - // We matched a UNC root - device = `\\\\${firstPart}\\${path.slice(last, j)}`; - rootEnd = j; - } - } - } - } - else { - rootEnd = 1; - } - } - else if (isWindowsDeviceRoot(code) && - path.charCodeAt(1) === CHAR_COLON) { - // Possible device root - device = path.slice(0, 2); - rootEnd = 2; - if (len > 2 && isPathSeparator(path.charCodeAt(2))) { - // Treat separator following drive name as an absolute path - // indicator - isAbsolute = true; - rootEnd = 3; - } - } - if (device.length > 0) { - if (resolvedDevice.length > 0) { - if (device.toLowerCase() !== resolvedDevice.toLowerCase()) { - // This path points to another device so it is not applicable - continue; - } - } - else { - resolvedDevice = device; - } - } - if (resolvedAbsolute) { - if (resolvedDevice.length > 0) { - break; - } - } - else { - resolvedTail = `${path.slice(rootEnd)}\\${resolvedTail}`; - resolvedAbsolute = isAbsolute; - if (isAbsolute && resolvedDevice.length > 0) { - break; - } - } - } - // At this point the path should be resolved to a full absolute path, - // but handle relative paths to be safe (might happen when process.cwd() - // fails) - // Normalize the tail path - resolvedTail = normalizeString(resolvedTail, !resolvedAbsolute, '\\', isPathSeparator); - return resolvedAbsolute ? - `${resolvedDevice}\\${resolvedTail}` : - `${resolvedDevice}${resolvedTail}` || '.'; - }, - normalize(path) { - validateString(path, 'path'); - const len = path.length; - if (len === 0) { - return '.'; - } - let rootEnd = 0; - let device; - let isAbsolute = false; - const code = path.charCodeAt(0); - // Try to match a root - if (len === 1) { - // `path` contains just a single char, exit early to avoid - // unnecessary work - return isPosixPathSeparator(code) ? '\\' : path; - } - if (isPathSeparator(code)) { - // Possible UNC root - // If we started with a separator, we know we at least have an absolute - // path of some kind (UNC or otherwise) - isAbsolute = true; - if (isPathSeparator(path.charCodeAt(1))) { - // Matched double path separator at beginning - let j = 2; - let last = j; - // Match 1 or more non-path separators - while (j < len && !isPathSeparator(path.charCodeAt(j))) { - j++; - } - if (j < len && j !== last) { - const firstPart = path.slice(last, j); - // Matched! - last = j; - // Match 1 or more path separators - while (j < len && isPathSeparator(path.charCodeAt(j))) { - j++; - } - if (j < len && j !== last) { - // Matched! - last = j; - // Match 1 or more non-path separators - while (j < len && !isPathSeparator(path.charCodeAt(j))) { - j++; - } - if (j === len) { - // We matched a UNC root only - // Return the normalized version of the UNC root since there - // is nothing left to process - return `\\\\${firstPart}\\${path.slice(last)}\\`; - } - if (j !== last) { - // We matched a UNC root with leftovers - device = `\\\\${firstPart}\\${path.slice(last, j)}`; - rootEnd = j; - } - } - } - } - else { - rootEnd = 1; - } - } - else if (isWindowsDeviceRoot(code) && path.charCodeAt(1) === CHAR_COLON) { - // Possible device root - device = path.slice(0, 2); - rootEnd = 2; - if (len > 2 && isPathSeparator(path.charCodeAt(2))) { - // Treat separator following drive name as an absolute path - // indicator - isAbsolute = true; - rootEnd = 3; - } - } - let tail = rootEnd < len ? - normalizeString(path.slice(rootEnd), !isAbsolute, '\\', isPathSeparator) : - ''; - if (tail.length === 0 && !isAbsolute) { - tail = '.'; - } - if (tail.length > 0 && isPathSeparator(path.charCodeAt(len - 1))) { - tail += '\\'; - } - if (device === undefined) { - return isAbsolute ? `\\${tail}` : tail; - } - return isAbsolute ? `${device}\\${tail}` : `${device}${tail}`; - }, - isAbsolute(path) { - validateString(path, 'path'); - const len = path.length; - if (len === 0) { - return false; - } - const code = path.charCodeAt(0); - return isPathSeparator(code) || - // Possible device root - (len > 2 && - isWindowsDeviceRoot(code) && - path.charCodeAt(1) === CHAR_COLON && - isPathSeparator(path.charCodeAt(2))); - }, - join(...paths) { - if (paths.length === 0) { - return '.'; - } - let joined; - let firstPart; - for (let i = 0; i < paths.length; ++i) { - const arg = paths[i]; - validateString(arg, 'path'); - if (arg.length > 0) { - if (joined === undefined) { - joined = firstPart = arg; - } - else { - joined += `\\${arg}`; - } - } - } - if (joined === undefined) { - return '.'; - } - // Make sure that the joined path doesn't start with two slashes, because - // normalize() will mistake it for a UNC path then. - // - // This step is skipped when it is very clear that the user actually - // intended to point at a UNC path. This is assumed when the first - // non-empty string arguments starts with exactly two slashes followed by - // at least one more non-slash character. - // - // Note that for normalize() to treat a path as a UNC path it needs to - // have at least 2 components, so we don't filter for that here. - // This means that the user can use join to construct UNC paths from - // a server name and a share name; for example: - // path.join('//server', 'share') -> '\\\\server\\share\\') - let needsReplace = true; - let slashCount = 0; - if (typeof firstPart === 'string' && isPathSeparator(firstPart.charCodeAt(0))) { - ++slashCount; - const firstLen = firstPart.length; - if (firstLen > 1 && isPathSeparator(firstPart.charCodeAt(1))) { - ++slashCount; - if (firstLen > 2) { - if (isPathSeparator(firstPart.charCodeAt(2))) { - ++slashCount; - } - else { - // We matched a UNC path in the first part - needsReplace = false; - } - } - } - } - if (needsReplace) { - // Find any more consecutive slashes we need to replace - while (slashCount < joined.length && - isPathSeparator(joined.charCodeAt(slashCount))) { - slashCount++; - } - // Replace the slashes if needed - if (slashCount >= 2) { - joined = `\\${joined.slice(slashCount)}`; - } - } - return win32.normalize(joined); - }, - // It will solve the relative path from `from` to `to`, for instance: - // from = 'C:\\orandea\\test\\aaa' - // to = 'C:\\orandea\\impl\\bbb' - // The output of the function should be: '..\\..\\impl\\bbb' - relative(from, to) { - validateString(from, 'from'); - validateString(to, 'to'); - if (from === to) { - return ''; - } - const fromOrig = win32.resolve(from); - const toOrig = win32.resolve(to); - if (fromOrig === toOrig) { - return ''; - } - from = fromOrig.toLowerCase(); - to = toOrig.toLowerCase(); - if (from === to) { - return ''; - } - // Trim any leading backslashes - let fromStart = 0; - while (fromStart < from.length && - from.charCodeAt(fromStart) === CHAR_BACKWARD_SLASH) { - fromStart++; - } - // Trim trailing backslashes (applicable to UNC paths only) - let fromEnd = from.length; - while (fromEnd - 1 > fromStart && - from.charCodeAt(fromEnd - 1) === CHAR_BACKWARD_SLASH) { - fromEnd--; - } - const fromLen = fromEnd - fromStart; - // Trim any leading backslashes - let toStart = 0; - while (toStart < to.length && - to.charCodeAt(toStart) === CHAR_BACKWARD_SLASH) { - toStart++; - } - // Trim trailing backslashes (applicable to UNC paths only) - let toEnd = to.length; - while (toEnd - 1 > toStart && - to.charCodeAt(toEnd - 1) === CHAR_BACKWARD_SLASH) { - toEnd--; - } - const toLen = toEnd - toStart; - // Compare paths to find the longest common path from root - const length = fromLen < toLen ? fromLen : toLen; - let lastCommonSep = -1; - let i = 0; - for (; i < length; i++) { - const fromCode = from.charCodeAt(fromStart + i); - if (fromCode !== to.charCodeAt(toStart + i)) { - break; - } - else if (fromCode === CHAR_BACKWARD_SLASH) { - lastCommonSep = i; - } - } - // We found a mismatch before the first common path separator was seen, so - // return the original `to`. - if (i !== length) { - if (lastCommonSep === -1) { - return toOrig; - } - } - else { - if (toLen > length) { - if (to.charCodeAt(toStart + i) === CHAR_BACKWARD_SLASH) { - // We get here if `from` is the exact base path for `to`. - // For example: from='C:\\foo\\bar'; to='C:\\foo\\bar\\baz' - return toOrig.slice(toStart + i + 1); - } - if (i === 2) { - // We get here if `from` is the device root. - // For example: from='C:\\'; to='C:\\foo' - return toOrig.slice(toStart + i); - } - } - if (fromLen > length) { - if (from.charCodeAt(fromStart + i) === CHAR_BACKWARD_SLASH) { - // We get here if `to` is the exact base path for `from`. - // For example: from='C:\\foo\\bar'; to='C:\\foo' - lastCommonSep = i; - } - else if (i === 2) { - // We get here if `to` is the device root. - // For example: from='C:\\foo\\bar'; to='C:\\' - lastCommonSep = 3; - } - } - if (lastCommonSep === -1) { - lastCommonSep = 0; - } - } - let out = ''; - // Generate the relative path based on the path difference between `to` and - // `from` - for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) { - if (i === fromEnd || from.charCodeAt(i) === CHAR_BACKWARD_SLASH) { - out += out.length === 0 ? '..' : '\\..'; - } - } - toStart += lastCommonSep; - // Lastly, append the rest of the destination (`to`) path that comes after - // the common path parts - if (out.length > 0) { - return `${out}${toOrig.slice(toStart, toEnd)}`; - } - if (toOrig.charCodeAt(toStart) === CHAR_BACKWARD_SLASH) { - ++toStart; - } - return toOrig.slice(toStart, toEnd); - }, - toNamespacedPath(path) { - // Note: this will *probably* throw somewhere. - if (typeof path !== 'string' || path.length === 0) { - return path; - } - const resolvedPath = win32.resolve(path); - if (resolvedPath.length <= 2) { - return path; - } - if (resolvedPath.charCodeAt(0) === CHAR_BACKWARD_SLASH) { - // Possible UNC root - if (resolvedPath.charCodeAt(1) === CHAR_BACKWARD_SLASH) { - const code = resolvedPath.charCodeAt(2); - if (code !== CHAR_QUESTION_MARK && code !== CHAR_DOT) { - // Matched non-long UNC root, convert the path to a long UNC path - return `\\\\?\\UNC\\${resolvedPath.slice(2)}`; - } - } - } - else if (isWindowsDeviceRoot(resolvedPath.charCodeAt(0)) && - resolvedPath.charCodeAt(1) === CHAR_COLON && - resolvedPath.charCodeAt(2) === CHAR_BACKWARD_SLASH) { - // Matched device root, convert the path to a long UNC path - return `\\\\?\\${resolvedPath}`; - } - return path; - }, - dirname(path) { - validateString(path, 'path'); - const len = path.length; - if (len === 0) { - return '.'; - } - let rootEnd = -1; - let offset = 0; - const code = path.charCodeAt(0); - if (len === 1) { - // `path` contains just a path separator, exit early to avoid - // unnecessary work or a dot. - return isPathSeparator(code) ? path : '.'; - } - // Try to match a root - if (isPathSeparator(code)) { - // Possible UNC root - rootEnd = offset = 1; - if (isPathSeparator(path.charCodeAt(1))) { - // Matched double path separator at beginning - let j = 2; - let last = j; - // Match 1 or more non-path separators - while (j < len && !isPathSeparator(path.charCodeAt(j))) { - j++; - } - if (j < len && j !== last) { - // Matched! - last = j; - // Match 1 or more path separators - while (j < len && isPathSeparator(path.charCodeAt(j))) { - j++; - } - if (j < len && j !== last) { - // Matched! - last = j; - // Match 1 or more non-path separators - while (j < len && !isPathSeparator(path.charCodeAt(j))) { - j++; - } - if (j === len) { - // We matched a UNC root only - return path; - } - if (j !== last) { - // We matched a UNC root with leftovers - // Offset by 1 to include the separator after the UNC root to - // treat it as a "normal root" on top of a (UNC) root - rootEnd = offset = j + 1; - } - } - } - } - // Possible device root - } - else if (isWindowsDeviceRoot(code) && path.charCodeAt(1) === CHAR_COLON) { - rootEnd = len > 2 && isPathSeparator(path.charCodeAt(2)) ? 3 : 2; - offset = rootEnd; - } - let end = -1; - let matchedSlash = true; - for (let i = len - 1; i >= offset; --i) { - if (isPathSeparator(path.charCodeAt(i))) { - if (!matchedSlash) { - end = i; - break; - } - } - else { - // We saw the first non-path separator - matchedSlash = false; - } - } - if (end === -1) { - if (rootEnd === -1) { - return '.'; - } - end = rootEnd; - } - return path.slice(0, end); - }, - basename(path, suffix) { - if (suffix !== undefined) { - validateString(suffix, 'suffix'); - } - validateString(path, 'path'); - let start = 0; - let end = -1; - let matchedSlash = true; - let i; - // Check for a drive letter prefix so as not to mistake the following - // path separator as an extra separator at the end of the path that can be - // disregarded - if (path.length >= 2 && - isWindowsDeviceRoot(path.charCodeAt(0)) && - path.charCodeAt(1) === CHAR_COLON) { - start = 2; - } - if (suffix !== undefined && suffix.length > 0 && suffix.length <= path.length) { - if (suffix === path) { - return ''; - } - let extIdx = suffix.length - 1; - let firstNonSlashEnd = -1; - for (i = path.length - 1; i >= start; --i) { - const code = path.charCodeAt(i); - if (isPathSeparator(code)) { - // If we reached a path separator that was not part of a set of path - // separators at the end of the string, stop now - if (!matchedSlash) { - start = i + 1; - break; - } - } - else { - if (firstNonSlashEnd === -1) { - // We saw the first non-path separator, remember this index in case - // we need it if the extension ends up not matching - matchedSlash = false; - firstNonSlashEnd = i + 1; - } - if (extIdx >= 0) { - // Try to match the explicit extension - if (code === suffix.charCodeAt(extIdx)) { - if (--extIdx === -1) { - // We matched the extension, so mark this as the end of our path - // component - end = i; - } - } - else { - // Extension does not match, so our result is the entire path - // component - extIdx = -1; - end = firstNonSlashEnd; - } - } - } - } - if (start === end) { - end = firstNonSlashEnd; - } - else if (end === -1) { - end = path.length; - } - return path.slice(start, end); - } - for (i = path.length - 1; i >= start; --i) { - if (isPathSeparator(path.charCodeAt(i))) { - // If we reached a path separator that was not part of a set of path - // separators at the end of the string, stop now - if (!matchedSlash) { - start = i + 1; - break; - } - } - else if (end === -1) { - // We saw the first non-path separator, mark this as the end of our - // path component - matchedSlash = false; - end = i + 1; - } - } - if (end === -1) { - return ''; - } - return path.slice(start, end); - }, - extname(path) { - validateString(path, 'path'); - let start = 0; - let startDot = -1; - let startPart = 0; - let end = -1; - let matchedSlash = true; - // Track the state of characters (if any) we see before our first dot and - // after any path separator we find - let preDotState = 0; - // Check for a drive letter prefix so as not to mistake the following - // path separator as an extra separator at the end of the path that can be - // disregarded - if (path.length >= 2 && - path.charCodeAt(1) === CHAR_COLON && - isWindowsDeviceRoot(path.charCodeAt(0))) { - start = startPart = 2; - } - for (let i = path.length - 1; i >= start; --i) { - const code = path.charCodeAt(i); - if (isPathSeparator(code)) { - // If we reached a path separator that was not part of a set of path - // separators at the end of the string, stop now - if (!matchedSlash) { - startPart = i + 1; - break; - } - continue; - } - if (end === -1) { - // We saw the first non-path separator, mark this as the end of our - // extension - matchedSlash = false; - end = i + 1; - } - if (code === CHAR_DOT) { - // If this is our first dot, mark it as the start of our extension - if (startDot === -1) { - startDot = i; - } - else if (preDotState !== 1) { - preDotState = 1; - } - } - else if (startDot !== -1) { - // We saw a non-dot and non-path separator before our dot, so we should - // have a good chance at having a non-empty extension - preDotState = -1; - } - } - if (startDot === -1 || - end === -1 || - // We saw a non-dot character immediately before the dot - preDotState === 0 || - // The (right-most) trimmed path component is exactly '..' - (preDotState === 1 && - startDot === end - 1 && - startDot === startPart + 1)) { - return ''; - } - return path.slice(startDot, end); - }, - format: _format.bind(null, '\\'), - parse(path) { - validateString(path, 'path'); - const ret = { root: '', dir: '', base: '', ext: '', name: '' }; - if (path.length === 0) { - return ret; - } - const len = path.length; - let rootEnd = 0; - let code = path.charCodeAt(0); - if (len === 1) { - if (isPathSeparator(code)) { - // `path` contains just a path separator, exit early to avoid - // unnecessary work - ret.root = ret.dir = path; - return ret; - } - ret.base = ret.name = path; - return ret; - } - // Try to match a root - if (isPathSeparator(code)) { - // Possible UNC root - rootEnd = 1; - if (isPathSeparator(path.charCodeAt(1))) { - // Matched double path separator at beginning - let j = 2; - let last = j; - // Match 1 or more non-path separators - while (j < len && !isPathSeparator(path.charCodeAt(j))) { - j++; - } - if (j < len && j !== last) { - // Matched! - last = j; - // Match 1 or more path separators - while (j < len && isPathSeparator(path.charCodeAt(j))) { - j++; - } - if (j < len && j !== last) { - // Matched! - last = j; - // Match 1 or more non-path separators - while (j < len && !isPathSeparator(path.charCodeAt(j))) { - j++; - } - if (j === len) { - // We matched a UNC root only - rootEnd = j; - } - else if (j !== last) { - // We matched a UNC root with leftovers - rootEnd = j + 1; - } - } - } - } - } - else if (isWindowsDeviceRoot(code) && path.charCodeAt(1) === CHAR_COLON) { - // Possible device root - if (len <= 2) { - // `path` contains just a drive root, exit early to avoid - // unnecessary work - ret.root = ret.dir = path; - return ret; - } - rootEnd = 2; - if (isPathSeparator(path.charCodeAt(2))) { - if (len === 3) { - // `path` contains just a drive root, exit early to avoid - // unnecessary work - ret.root = ret.dir = path; - return ret; - } - rootEnd = 3; - } - } - if (rootEnd > 0) { - ret.root = path.slice(0, rootEnd); - } - let startDot = -1; - let startPart = rootEnd; - let end = -1; - let matchedSlash = true; - let i = path.length - 1; - // Track the state of characters (if any) we see before our first dot and - // after any path separator we find - let preDotState = 0; - // Get non-dir info - for (; i >= rootEnd; --i) { - code = path.charCodeAt(i); - if (isPathSeparator(code)) { - // If we reached a path separator that was not part of a set of path - // separators at the end of the string, stop now - if (!matchedSlash) { - startPart = i + 1; - break; - } - continue; - } - if (end === -1) { - // We saw the first non-path separator, mark this as the end of our - // extension - matchedSlash = false; - end = i + 1; - } - if (code === CHAR_DOT) { - // If this is our first dot, mark it as the start of our extension - if (startDot === -1) { - startDot = i; - } - else if (preDotState !== 1) { - preDotState = 1; - } - } - else if (startDot !== -1) { - // We saw a non-dot and non-path separator before our dot, so we should - // have a good chance at having a non-empty extension - preDotState = -1; - } - } - if (end !== -1) { - if (startDot === -1 || - // We saw a non-dot character immediately before the dot - preDotState === 0 || - // The (right-most) trimmed path component is exactly '..' - (preDotState === 1 && - startDot === end - 1 && - startDot === startPart + 1)) { - ret.base = ret.name = path.slice(startPart, end); - } - else { - ret.name = path.slice(startPart, startDot); - ret.base = path.slice(startPart, end); - ret.ext = path.slice(startDot, end); - } - } - // If the directory is the root, use the entire root as the `dir` including - // the trailing slash if any (`C:\abc` -> `C:\`). Otherwise, strip out the - // trailing slash (`C:\abc\def` -> `C:\abc`). - if (startPart > 0 && startPart !== rootEnd) { - ret.dir = path.slice(0, startPart - 1); - } - else { - ret.dir = ret.root; - } - return ret; - }, - sep: '\\', - delimiter: ';', - win32: null, - posix: null -}; -const posixCwd = (() => { - if (platformIsWin32) { - // Converts Windows' backslash path separators to POSIX forward slashes - // and truncates any drive indicator - const regexp = /\\/g; - return () => { - const cwd = process.cwd().replace(regexp, '/'); - return cwd.slice(cwd.indexOf('/')); - }; - } - // We're already on POSIX, no need for any transformations - return () => process.cwd(); -})(); -export const posix = { - // path.resolve([from ...], to) - resolve(...pathSegments) { - let resolvedPath = ''; - let resolvedAbsolute = false; - for (let i = pathSegments.length - 1; i >= -1 && !resolvedAbsolute; i--) { - const path = i >= 0 ? pathSegments[i] : posixCwd(); - validateString(path, `paths[${i}]`); - // Skip empty entries - if (path.length === 0) { - continue; - } - resolvedPath = `${path}/${resolvedPath}`; - resolvedAbsolute = path.charCodeAt(0) === CHAR_FORWARD_SLASH; - } - // At this point the path should be resolved to a full absolute path, but - // handle relative paths to be safe (might happen when process.cwd() fails) - // Normalize the path - resolvedPath = normalizeString(resolvedPath, !resolvedAbsolute, '/', isPosixPathSeparator); - if (resolvedAbsolute) { - return `/${resolvedPath}`; - } - return resolvedPath.length > 0 ? resolvedPath : '.'; - }, - normalize(path) { - validateString(path, 'path'); - if (path.length === 0) { - return '.'; - } - const isAbsolute = path.charCodeAt(0) === CHAR_FORWARD_SLASH; - const trailingSeparator = path.charCodeAt(path.length - 1) === CHAR_FORWARD_SLASH; - // Normalize the path - path = normalizeString(path, !isAbsolute, '/', isPosixPathSeparator); - if (path.length === 0) { - if (isAbsolute) { - return '/'; - } - return trailingSeparator ? './' : '.'; - } - if (trailingSeparator) { - path += '/'; - } - return isAbsolute ? `/${path}` : path; - }, - isAbsolute(path) { - validateString(path, 'path'); - return path.length > 0 && path.charCodeAt(0) === CHAR_FORWARD_SLASH; - }, - join(...paths) { - if (paths.length === 0) { - return '.'; - } - let joined; - for (let i = 0; i < paths.length; ++i) { - const arg = paths[i]; - validateString(arg, 'path'); - if (arg.length > 0) { - if (joined === undefined) { - joined = arg; - } - else { - joined += `/${arg}`; - } - } - } - if (joined === undefined) { - return '.'; - } - return posix.normalize(joined); - }, - relative(from, to) { - validateString(from, 'from'); - validateString(to, 'to'); - if (from === to) { - return ''; - } - // Trim leading forward slashes. - from = posix.resolve(from); - to = posix.resolve(to); - if (from === to) { - return ''; - } - const fromStart = 1; - const fromEnd = from.length; - const fromLen = fromEnd - fromStart; - const toStart = 1; - const toLen = to.length - toStart; - // Compare paths to find the longest common path from root - const length = (fromLen < toLen ? fromLen : toLen); - let lastCommonSep = -1; - let i = 0; - for (; i < length; i++) { - const fromCode = from.charCodeAt(fromStart + i); - if (fromCode !== to.charCodeAt(toStart + i)) { - break; - } - else if (fromCode === CHAR_FORWARD_SLASH) { - lastCommonSep = i; - } - } - if (i === length) { - if (toLen > length) { - if (to.charCodeAt(toStart + i) === CHAR_FORWARD_SLASH) { - // We get here if `from` is the exact base path for `to`. - // For example: from='/foo/bar'; to='/foo/bar/baz' - return to.slice(toStart + i + 1); - } - if (i === 0) { - // We get here if `from` is the root - // For example: from='/'; to='/foo' - return to.slice(toStart + i); - } - } - else if (fromLen > length) { - if (from.charCodeAt(fromStart + i) === CHAR_FORWARD_SLASH) { - // We get here if `to` is the exact base path for `from`. - // For example: from='/foo/bar/baz'; to='/foo/bar' - lastCommonSep = i; - } - else if (i === 0) { - // We get here if `to` is the root. - // For example: from='/foo/bar'; to='/' - lastCommonSep = 0; - } - } - } - let out = ''; - // Generate the relative path based on the path difference between `to` - // and `from`. - for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) { - if (i === fromEnd || from.charCodeAt(i) === CHAR_FORWARD_SLASH) { - out += out.length === 0 ? '..' : '/..'; - } - } - // Lastly, append the rest of the destination (`to`) path that comes after - // the common path parts. - return `${out}${to.slice(toStart + lastCommonSep)}`; - }, - toNamespacedPath(path) { - // Non-op on posix systems - return path; - }, - dirname(path) { - validateString(path, 'path'); - if (path.length === 0) { - return '.'; - } - const hasRoot = path.charCodeAt(0) === CHAR_FORWARD_SLASH; - let end = -1; - let matchedSlash = true; - for (let i = path.length - 1; i >= 1; --i) { - if (path.charCodeAt(i) === CHAR_FORWARD_SLASH) { - if (!matchedSlash) { - end = i; - break; - } - } - else { - // We saw the first non-path separator - matchedSlash = false; - } - } - if (end === -1) { - return hasRoot ? '/' : '.'; - } - if (hasRoot && end === 1) { - return '//'; - } - return path.slice(0, end); - }, - basename(path, suffix) { - if (suffix !== undefined) { - validateString(suffix, 'ext'); - } - validateString(path, 'path'); - let start = 0; - let end = -1; - let matchedSlash = true; - let i; - if (suffix !== undefined && suffix.length > 0 && suffix.length <= path.length) { - if (suffix === path) { - return ''; - } - let extIdx = suffix.length - 1; - let firstNonSlashEnd = -1; - for (i = path.length - 1; i >= 0; --i) { - const code = path.charCodeAt(i); - if (code === CHAR_FORWARD_SLASH) { - // If we reached a path separator that was not part of a set of path - // separators at the end of the string, stop now - if (!matchedSlash) { - start = i + 1; - break; - } - } - else { - if (firstNonSlashEnd === -1) { - // We saw the first non-path separator, remember this index in case - // we need it if the extension ends up not matching - matchedSlash = false; - firstNonSlashEnd = i + 1; - } - if (extIdx >= 0) { - // Try to match the explicit extension - if (code === suffix.charCodeAt(extIdx)) { - if (--extIdx === -1) { - // We matched the extension, so mark this as the end of our path - // component - end = i; - } - } - else { - // Extension does not match, so our result is the entire path - // component - extIdx = -1; - end = firstNonSlashEnd; - } - } - } - } - if (start === end) { - end = firstNonSlashEnd; - } - else if (end === -1) { - end = path.length; - } - return path.slice(start, end); - } - for (i = path.length - 1; i >= 0; --i) { - if (path.charCodeAt(i) === CHAR_FORWARD_SLASH) { - // If we reached a path separator that was not part of a set of path - // separators at the end of the string, stop now - if (!matchedSlash) { - start = i + 1; - break; - } - } - else if (end === -1) { - // We saw the first non-path separator, mark this as the end of our - // path component - matchedSlash = false; - end = i + 1; - } - } - if (end === -1) { - return ''; - } - return path.slice(start, end); - }, - extname(path) { - validateString(path, 'path'); - let startDot = -1; - let startPart = 0; - let end = -1; - let matchedSlash = true; - // Track the state of characters (if any) we see before our first dot and - // after any path separator we find - let preDotState = 0; - for (let i = path.length - 1; i >= 0; --i) { - const code = path.charCodeAt(i); - if (code === CHAR_FORWARD_SLASH) { - // If we reached a path separator that was not part of a set of path - // separators at the end of the string, stop now - if (!matchedSlash) { - startPart = i + 1; - break; - } - continue; - } - if (end === -1) { - // We saw the first non-path separator, mark this as the end of our - // extension - matchedSlash = false; - end = i + 1; - } - if (code === CHAR_DOT) { - // If this is our first dot, mark it as the start of our extension - if (startDot === -1) { - startDot = i; - } - else if (preDotState !== 1) { - preDotState = 1; - } - } - else if (startDot !== -1) { - // We saw a non-dot and non-path separator before our dot, so we should - // have a good chance at having a non-empty extension - preDotState = -1; - } - } - if (startDot === -1 || - end === -1 || - // We saw a non-dot character immediately before the dot - preDotState === 0 || - // The (right-most) trimmed path component is exactly '..' - (preDotState === 1 && - startDot === end - 1 && - startDot === startPart + 1)) { - return ''; - } - return path.slice(startDot, end); - }, - format: _format.bind(null, '/'), - parse(path) { - validateString(path, 'path'); - const ret = { root: '', dir: '', base: '', ext: '', name: '' }; - if (path.length === 0) { - return ret; - } - const isAbsolute = path.charCodeAt(0) === CHAR_FORWARD_SLASH; - let start; - if (isAbsolute) { - ret.root = '/'; - start = 1; - } - else { - start = 0; - } - let startDot = -1; - let startPart = 0; - let end = -1; - let matchedSlash = true; - let i = path.length - 1; - // Track the state of characters (if any) we see before our first dot and - // after any path separator we find - let preDotState = 0; - // Get non-dir info - for (; i >= start; --i) { - const code = path.charCodeAt(i); - if (code === CHAR_FORWARD_SLASH) { - // If we reached a path separator that was not part of a set of path - // separators at the end of the string, stop now - if (!matchedSlash) { - startPart = i + 1; - break; - } - continue; - } - if (end === -1) { - // We saw the first non-path separator, mark this as the end of our - // extension - matchedSlash = false; - end = i + 1; - } - if (code === CHAR_DOT) { - // If this is our first dot, mark it as the start of our extension - if (startDot === -1) { - startDot = i; - } - else if (preDotState !== 1) { - preDotState = 1; - } - } - else if (startDot !== -1) { - // We saw a non-dot and non-path separator before our dot, so we should - // have a good chance at having a non-empty extension - preDotState = -1; - } - } - if (end !== -1) { - const start = startPart === 0 && isAbsolute ? 1 : startPart; - if (startDot === -1 || - // We saw a non-dot character immediately before the dot - preDotState === 0 || - // The (right-most) trimmed path component is exactly '..' - (preDotState === 1 && - startDot === end - 1 && - startDot === startPart + 1)) { - ret.base = ret.name = path.slice(start, end); - } - else { - ret.name = path.slice(start, startDot); - ret.base = path.slice(start, end); - ret.ext = path.slice(startDot, end); - } - } - if (startPart > 0) { - ret.dir = path.slice(0, startPart - 1); - } - else if (isAbsolute) { - ret.dir = '/'; - } - return ret; - }, - sep: '/', - delimiter: ':', - win32: null, - posix: null -}; -posix.win32 = win32.win32 = win32; -posix.posix = win32.posix = posix; -export const normalize = (platformIsWin32 ? win32.normalize : posix.normalize); -export const isAbsolute = (platformIsWin32 ? win32.isAbsolute : posix.isAbsolute); -export const join = (platformIsWin32 ? win32.join : posix.join); -export const resolve = (platformIsWin32 ? win32.resolve : posix.resolve); -export const relative = (platformIsWin32 ? win32.relative : posix.relative); -export const dirname = (platformIsWin32 ? win32.dirname : posix.dirname); -export const basename = (platformIsWin32 ? win32.basename : posix.basename); -export const extname = (platformIsWin32 ? win32.extname : posix.extname); -export const format = (platformIsWin32 ? win32.format : posix.format); -export const parse = (platformIsWin32 ? win32.parse : posix.parse); -export const toNamespacedPath = (platformIsWin32 ? win32.toNamespacedPath : posix.toNamespacedPath); -export const sep = (platformIsWin32 ? win32.sep : posix.sep); -export const delimiter = (platformIsWin32 ? win32.delimiter : posix.delimiter); +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +// NOTE: VSCode's copy of nodejs path library to be usable in common (non-node) namespace +// Copied from: https://github.com/nodejs/node/commits/v20.9.0/lib/path.js +// Excluding: the change that adds primordials +// (https://github.com/nodejs/node/commit/187a862d221dec42fa9a5c4214e7034d9092792f and others) +/** + * Copyright Joyent, Inc. and other Node contributors. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to permit + * persons to whom the Software is furnished to do so, subject to the + * following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN + * NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + * USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +import * as process from './process.js'; +const CHAR_UPPERCASE_A = 65; /* A */ +const CHAR_LOWERCASE_A = 97; /* a */ +const CHAR_UPPERCASE_Z = 90; /* Z */ +const CHAR_LOWERCASE_Z = 122; /* z */ +const CHAR_DOT = 46; /* . */ +const CHAR_FORWARD_SLASH = 47; /* / */ +const CHAR_BACKWARD_SLASH = 92; /* \ */ +const CHAR_COLON = 58; /* : */ +const CHAR_QUESTION_MARK = 63; /* ? */ +class ErrorInvalidArgType extends Error { + code; + constructor(name, expected, actual) { + // determiner: 'must be' or 'must not be' + let determiner; + if (typeof expected === 'string' && expected.indexOf('not ') === 0) { + determiner = 'must not be'; + expected = expected.replace(/^not /, ''); + } + else { + determiner = 'must be'; + } + const type = name.indexOf('.') !== -1 ? 'property' : 'argument'; + let msg = `The "${name}" ${type} ${determiner} of type ${expected}`; + msg += `. Received type ${typeof actual}`; + super(msg); + this.code = 'ERR_INVALID_ARG_TYPE'; + } +} +function validateObject(pathObject, name) { + if (pathObject === null || typeof pathObject !== 'object') { + throw new ErrorInvalidArgType(name, 'Object', pathObject); + } +} +function validateString(value, name) { + if (typeof value !== 'string') { + throw new ErrorInvalidArgType(name, 'string', value); + } +} +const platformIsWin32 = (process.platform === 'win32'); +function isPathSeparator(code) { + return code === CHAR_FORWARD_SLASH || code === CHAR_BACKWARD_SLASH; +} +function isPosixPathSeparator(code) { + return code === CHAR_FORWARD_SLASH; +} +function isWindowsDeviceRoot(code) { + return (code >= CHAR_UPPERCASE_A && code <= CHAR_UPPERCASE_Z) || + (code >= CHAR_LOWERCASE_A && code <= CHAR_LOWERCASE_Z); +} +// Resolves . and .. elements in a path with directory names +function normalizeString(path, allowAboveRoot, separator, isPathSeparator) { + let res = ''; + let lastSegmentLength = 0; + let lastSlash = -1; + let dots = 0; + let code = 0; + for (let i = 0; i <= path.length; ++i) { + if (i < path.length) { + code = path.charCodeAt(i); + } + else if (isPathSeparator(code)) { + break; + } + else { + code = CHAR_FORWARD_SLASH; + } + if (isPathSeparator(code)) { + if (lastSlash === i - 1 || dots === 1) { + // NOOP + } + else if (dots === 2) { + if (res.length < 2 || lastSegmentLength !== 2 || + res.charCodeAt(res.length - 1) !== CHAR_DOT || + res.charCodeAt(res.length - 2) !== CHAR_DOT) { + if (res.length > 2) { + const lastSlashIndex = res.lastIndexOf(separator); + if (lastSlashIndex === -1) { + res = ''; + lastSegmentLength = 0; + } + else { + res = res.slice(0, lastSlashIndex); + lastSegmentLength = res.length - 1 - res.lastIndexOf(separator); + } + lastSlash = i; + dots = 0; + continue; + } + else if (res.length !== 0) { + res = ''; + lastSegmentLength = 0; + lastSlash = i; + dots = 0; + continue; + } + } + if (allowAboveRoot) { + res += res.length > 0 ? `${separator}..` : '..'; + lastSegmentLength = 2; + } + } + else { + if (res.length > 0) { + res += `${separator}${path.slice(lastSlash + 1, i)}`; + } + else { + res = path.slice(lastSlash + 1, i); + } + lastSegmentLength = i - lastSlash - 1; + } + lastSlash = i; + dots = 0; + } + else if (code === CHAR_DOT && dots !== -1) { + ++dots; + } + else { + dots = -1; + } + } + return res; +} +function formatExt(ext) { + return ext ? `${ext[0] === '.' ? '' : '.'}${ext}` : ''; +} +function _format(sep, pathObject) { + validateObject(pathObject, 'pathObject'); + const dir = pathObject.dir || pathObject.root; + const base = pathObject.base || + `${pathObject.name || ''}${formatExt(pathObject.ext)}`; + if (!dir) { + return base; + } + return dir === pathObject.root ? `${dir}${base}` : `${dir}${sep}${base}`; +} +export const win32 = { + // path.resolve([from ...], to) + resolve(...pathSegments) { + let resolvedDevice = ''; + let resolvedTail = ''; + let resolvedAbsolute = false; + for (let i = pathSegments.length - 1; i >= -1; i--) { + let path; + if (i >= 0) { + path = pathSegments[i]; + validateString(path, `paths[${i}]`); + // Skip empty entries + if (path.length === 0) { + continue; + } + } + else if (resolvedDevice.length === 0) { + path = process.cwd(); + } + else { + // Windows has the concept of drive-specific current working + // directories. If we've resolved a drive letter but not yet an + // absolute path, get cwd for that drive, or the process cwd if + // the drive cwd is not available. We're sure the device is not + // a UNC path at this points, because UNC paths are always absolute. + path = process.env[`=${resolvedDevice}`] || process.cwd(); + // Verify that a cwd was found and that it actually points + // to our drive. If not, default to the drive's root. + if (path === undefined || + (path.slice(0, 2).toLowerCase() !== resolvedDevice.toLowerCase() && + path.charCodeAt(2) === CHAR_BACKWARD_SLASH)) { + path = `${resolvedDevice}\\`; + } + } + const len = path.length; + let rootEnd = 0; + let device = ''; + let isAbsolute = false; + const code = path.charCodeAt(0); + // Try to match a root + if (len === 1) { + if (isPathSeparator(code)) { + // `path` contains just a path separator + rootEnd = 1; + isAbsolute = true; + } + } + else if (isPathSeparator(code)) { + // Possible UNC root + // If we started with a separator, we know we at least have an + // absolute path of some kind (UNC or otherwise) + isAbsolute = true; + if (isPathSeparator(path.charCodeAt(1))) { + // Matched double path separator at beginning + let j = 2; + let last = j; + // Match 1 or more non-path separators + while (j < len && !isPathSeparator(path.charCodeAt(j))) { + j++; + } + if (j < len && j !== last) { + const firstPart = path.slice(last, j); + // Matched! + last = j; + // Match 1 or more path separators + while (j < len && isPathSeparator(path.charCodeAt(j))) { + j++; + } + if (j < len && j !== last) { + // Matched! + last = j; + // Match 1 or more non-path separators + while (j < len && !isPathSeparator(path.charCodeAt(j))) { + j++; + } + if (j === len || j !== last) { + // We matched a UNC root + device = `\\\\${firstPart}\\${path.slice(last, j)}`; + rootEnd = j; + } + } + } + } + else { + rootEnd = 1; + } + } + else if (isWindowsDeviceRoot(code) && + path.charCodeAt(1) === CHAR_COLON) { + // Possible device root + device = path.slice(0, 2); + rootEnd = 2; + if (len > 2 && isPathSeparator(path.charCodeAt(2))) { + // Treat separator following drive name as an absolute path + // indicator + isAbsolute = true; + rootEnd = 3; + } + } + if (device.length > 0) { + if (resolvedDevice.length > 0) { + if (device.toLowerCase() !== resolvedDevice.toLowerCase()) { + // This path points to another device so it is not applicable + continue; + } + } + else { + resolvedDevice = device; + } + } + if (resolvedAbsolute) { + if (resolvedDevice.length > 0) { + break; + } + } + else { + resolvedTail = `${path.slice(rootEnd)}\\${resolvedTail}`; + resolvedAbsolute = isAbsolute; + if (isAbsolute && resolvedDevice.length > 0) { + break; + } + } + } + // At this point the path should be resolved to a full absolute path, + // but handle relative paths to be safe (might happen when process.cwd() + // fails) + // Normalize the tail path + resolvedTail = normalizeString(resolvedTail, !resolvedAbsolute, '\\', isPathSeparator); + return resolvedAbsolute ? + `${resolvedDevice}\\${resolvedTail}` : + `${resolvedDevice}${resolvedTail}` || '.'; + }, + normalize(path) { + validateString(path, 'path'); + const len = path.length; + if (len === 0) { + return '.'; + } + let rootEnd = 0; + let device; + let isAbsolute = false; + const code = path.charCodeAt(0); + // Try to match a root + if (len === 1) { + // `path` contains just a single char, exit early to avoid + // unnecessary work + return isPosixPathSeparator(code) ? '\\' : path; + } + if (isPathSeparator(code)) { + // Possible UNC root + // If we started with a separator, we know we at least have an absolute + // path of some kind (UNC or otherwise) + isAbsolute = true; + if (isPathSeparator(path.charCodeAt(1))) { + // Matched double path separator at beginning + let j = 2; + let last = j; + // Match 1 or more non-path separators + while (j < len && !isPathSeparator(path.charCodeAt(j))) { + j++; + } + if (j < len && j !== last) { + const firstPart = path.slice(last, j); + // Matched! + last = j; + // Match 1 or more path separators + while (j < len && isPathSeparator(path.charCodeAt(j))) { + j++; + } + if (j < len && j !== last) { + // Matched! + last = j; + // Match 1 or more non-path separators + while (j < len && !isPathSeparator(path.charCodeAt(j))) { + j++; + } + if (j === len) { + // We matched a UNC root only + // Return the normalized version of the UNC root since there + // is nothing left to process + return `\\\\${firstPart}\\${path.slice(last)}\\`; + } + if (j !== last) { + // We matched a UNC root with leftovers + device = `\\\\${firstPart}\\${path.slice(last, j)}`; + rootEnd = j; + } + } + } + } + else { + rootEnd = 1; + } + } + else if (isWindowsDeviceRoot(code) && path.charCodeAt(1) === CHAR_COLON) { + // Possible device root + device = path.slice(0, 2); + rootEnd = 2; + if (len > 2 && isPathSeparator(path.charCodeAt(2))) { + // Treat separator following drive name as an absolute path + // indicator + isAbsolute = true; + rootEnd = 3; + } + } + let tail = rootEnd < len ? + normalizeString(path.slice(rootEnd), !isAbsolute, '\\', isPathSeparator) : + ''; + if (tail.length === 0 && !isAbsolute) { + tail = '.'; + } + if (tail.length > 0 && isPathSeparator(path.charCodeAt(len - 1))) { + tail += '\\'; + } + if (device === undefined) { + return isAbsolute ? `\\${tail}` : tail; + } + return isAbsolute ? `${device}\\${tail}` : `${device}${tail}`; + }, + isAbsolute(path) { + validateString(path, 'path'); + const len = path.length; + if (len === 0) { + return false; + } + const code = path.charCodeAt(0); + return isPathSeparator(code) || + // Possible device root + (len > 2 && + isWindowsDeviceRoot(code) && + path.charCodeAt(1) === CHAR_COLON && + isPathSeparator(path.charCodeAt(2))); + }, + join(...paths) { + if (paths.length === 0) { + return '.'; + } + let joined; + let firstPart; + for (let i = 0; i < paths.length; ++i) { + const arg = paths[i]; + validateString(arg, 'path'); + if (arg.length > 0) { + if (joined === undefined) { + joined = firstPart = arg; + } + else { + joined += `\\${arg}`; + } + } + } + if (joined === undefined) { + return '.'; + } + // Make sure that the joined path doesn't start with two slashes, because + // normalize() will mistake it for a UNC path then. + // + // This step is skipped when it is very clear that the user actually + // intended to point at a UNC path. This is assumed when the first + // non-empty string arguments starts with exactly two slashes followed by + // at least one more non-slash character. + // + // Note that for normalize() to treat a path as a UNC path it needs to + // have at least 2 components, so we don't filter for that here. + // This means that the user can use join to construct UNC paths from + // a server name and a share name; for example: + // path.join('//server', 'share') -> '\\\\server\\share\\') + let needsReplace = true; + let slashCount = 0; + if (typeof firstPart === 'string' && isPathSeparator(firstPart.charCodeAt(0))) { + ++slashCount; + const firstLen = firstPart.length; + if (firstLen > 1 && isPathSeparator(firstPart.charCodeAt(1))) { + ++slashCount; + if (firstLen > 2) { + if (isPathSeparator(firstPart.charCodeAt(2))) { + ++slashCount; + } + else { + // We matched a UNC path in the first part + needsReplace = false; + } + } + } + } + if (needsReplace) { + // Find any more consecutive slashes we need to replace + while (slashCount < joined.length && + isPathSeparator(joined.charCodeAt(slashCount))) { + slashCount++; + } + // Replace the slashes if needed + if (slashCount >= 2) { + joined = `\\${joined.slice(slashCount)}`; + } + } + return win32.normalize(joined); + }, + // It will solve the relative path from `from` to `to`, for instance: + // from = 'C:\\orandea\\test\\aaa' + // to = 'C:\\orandea\\impl\\bbb' + // The output of the function should be: '..\\..\\impl\\bbb' + relative(from, to) { + validateString(from, 'from'); + validateString(to, 'to'); + if (from === to) { + return ''; + } + const fromOrig = win32.resolve(from); + const toOrig = win32.resolve(to); + if (fromOrig === toOrig) { + return ''; + } + from = fromOrig.toLowerCase(); + to = toOrig.toLowerCase(); + if (from === to) { + return ''; + } + // Trim any leading backslashes + let fromStart = 0; + while (fromStart < from.length && + from.charCodeAt(fromStart) === CHAR_BACKWARD_SLASH) { + fromStart++; + } + // Trim trailing backslashes (applicable to UNC paths only) + let fromEnd = from.length; + while (fromEnd - 1 > fromStart && + from.charCodeAt(fromEnd - 1) === CHAR_BACKWARD_SLASH) { + fromEnd--; + } + const fromLen = fromEnd - fromStart; + // Trim any leading backslashes + let toStart = 0; + while (toStart < to.length && + to.charCodeAt(toStart) === CHAR_BACKWARD_SLASH) { + toStart++; + } + // Trim trailing backslashes (applicable to UNC paths only) + let toEnd = to.length; + while (toEnd - 1 > toStart && + to.charCodeAt(toEnd - 1) === CHAR_BACKWARD_SLASH) { + toEnd--; + } + const toLen = toEnd - toStart; + // Compare paths to find the longest common path from root + const length = fromLen < toLen ? fromLen : toLen; + let lastCommonSep = -1; + let i = 0; + for (; i < length; i++) { + const fromCode = from.charCodeAt(fromStart + i); + if (fromCode !== to.charCodeAt(toStart + i)) { + break; + } + else if (fromCode === CHAR_BACKWARD_SLASH) { + lastCommonSep = i; + } + } + // We found a mismatch before the first common path separator was seen, so + // return the original `to`. + if (i !== length) { + if (lastCommonSep === -1) { + return toOrig; + } + } + else { + if (toLen > length) { + if (to.charCodeAt(toStart + i) === CHAR_BACKWARD_SLASH) { + // We get here if `from` is the exact base path for `to`. + // For example: from='C:\\foo\\bar'; to='C:\\foo\\bar\\baz' + return toOrig.slice(toStart + i + 1); + } + if (i === 2) { + // We get here if `from` is the device root. + // For example: from='C:\\'; to='C:\\foo' + return toOrig.slice(toStart + i); + } + } + if (fromLen > length) { + if (from.charCodeAt(fromStart + i) === CHAR_BACKWARD_SLASH) { + // We get here if `to` is the exact base path for `from`. + // For example: from='C:\\foo\\bar'; to='C:\\foo' + lastCommonSep = i; + } + else if (i === 2) { + // We get here if `to` is the device root. + // For example: from='C:\\foo\\bar'; to='C:\\' + lastCommonSep = 3; + } + } + if (lastCommonSep === -1) { + lastCommonSep = 0; + } + } + let out = ''; + // Generate the relative path based on the path difference between `to` and + // `from` + for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) { + if (i === fromEnd || from.charCodeAt(i) === CHAR_BACKWARD_SLASH) { + out += out.length === 0 ? '..' : '\\..'; + } + } + toStart += lastCommonSep; + // Lastly, append the rest of the destination (`to`) path that comes after + // the common path parts + if (out.length > 0) { + return `${out}${toOrig.slice(toStart, toEnd)}`; + } + if (toOrig.charCodeAt(toStart) === CHAR_BACKWARD_SLASH) { + ++toStart; + } + return toOrig.slice(toStart, toEnd); + }, + toNamespacedPath(path) { + // Note: this will *probably* throw somewhere. + if (typeof path !== 'string' || path.length === 0) { + return path; + } + const resolvedPath = win32.resolve(path); + if (resolvedPath.length <= 2) { + return path; + } + if (resolvedPath.charCodeAt(0) === CHAR_BACKWARD_SLASH) { + // Possible UNC root + if (resolvedPath.charCodeAt(1) === CHAR_BACKWARD_SLASH) { + const code = resolvedPath.charCodeAt(2); + if (code !== CHAR_QUESTION_MARK && code !== CHAR_DOT) { + // Matched non-long UNC root, convert the path to a long UNC path + return `\\\\?\\UNC\\${resolvedPath.slice(2)}`; + } + } + } + else if (isWindowsDeviceRoot(resolvedPath.charCodeAt(0)) && + resolvedPath.charCodeAt(1) === CHAR_COLON && + resolvedPath.charCodeAt(2) === CHAR_BACKWARD_SLASH) { + // Matched device root, convert the path to a long UNC path + return `\\\\?\\${resolvedPath}`; + } + return path; + }, + dirname(path) { + validateString(path, 'path'); + const len = path.length; + if (len === 0) { + return '.'; + } + let rootEnd = -1; + let offset = 0; + const code = path.charCodeAt(0); + if (len === 1) { + // `path` contains just a path separator, exit early to avoid + // unnecessary work or a dot. + return isPathSeparator(code) ? path : '.'; + } + // Try to match a root + if (isPathSeparator(code)) { + // Possible UNC root + rootEnd = offset = 1; + if (isPathSeparator(path.charCodeAt(1))) { + // Matched double path separator at beginning + let j = 2; + let last = j; + // Match 1 or more non-path separators + while (j < len && !isPathSeparator(path.charCodeAt(j))) { + j++; + } + if (j < len && j !== last) { + // Matched! + last = j; + // Match 1 or more path separators + while (j < len && isPathSeparator(path.charCodeAt(j))) { + j++; + } + if (j < len && j !== last) { + // Matched! + last = j; + // Match 1 or more non-path separators + while (j < len && !isPathSeparator(path.charCodeAt(j))) { + j++; + } + if (j === len) { + // We matched a UNC root only + return path; + } + if (j !== last) { + // We matched a UNC root with leftovers + // Offset by 1 to include the separator after the UNC root to + // treat it as a "normal root" on top of a (UNC) root + rootEnd = offset = j + 1; + } + } + } + } + // Possible device root + } + else if (isWindowsDeviceRoot(code) && path.charCodeAt(1) === CHAR_COLON) { + rootEnd = len > 2 && isPathSeparator(path.charCodeAt(2)) ? 3 : 2; + offset = rootEnd; + } + let end = -1; + let matchedSlash = true; + for (let i = len - 1; i >= offset; --i) { + if (isPathSeparator(path.charCodeAt(i))) { + if (!matchedSlash) { + end = i; + break; + } + } + else { + // We saw the first non-path separator + matchedSlash = false; + } + } + if (end === -1) { + if (rootEnd === -1) { + return '.'; + } + end = rootEnd; + } + return path.slice(0, end); + }, + basename(path, suffix) { + if (suffix !== undefined) { + validateString(suffix, 'suffix'); + } + validateString(path, 'path'); + let start = 0; + let end = -1; + let matchedSlash = true; + let i; + // Check for a drive letter prefix so as not to mistake the following + // path separator as an extra separator at the end of the path that can be + // disregarded + if (path.length >= 2 && + isWindowsDeviceRoot(path.charCodeAt(0)) && + path.charCodeAt(1) === CHAR_COLON) { + start = 2; + } + if (suffix !== undefined && suffix.length > 0 && suffix.length <= path.length) { + if (suffix === path) { + return ''; + } + let extIdx = suffix.length - 1; + let firstNonSlashEnd = -1; + for (i = path.length - 1; i >= start; --i) { + const code = path.charCodeAt(i); + if (isPathSeparator(code)) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + start = i + 1; + break; + } + } + else { + if (firstNonSlashEnd === -1) { + // We saw the first non-path separator, remember this index in case + // we need it if the extension ends up not matching + matchedSlash = false; + firstNonSlashEnd = i + 1; + } + if (extIdx >= 0) { + // Try to match the explicit extension + if (code === suffix.charCodeAt(extIdx)) { + if (--extIdx === -1) { + // We matched the extension, so mark this as the end of our path + // component + end = i; + } + } + else { + // Extension does not match, so our result is the entire path + // component + extIdx = -1; + end = firstNonSlashEnd; + } + } + } + } + if (start === end) { + end = firstNonSlashEnd; + } + else if (end === -1) { + end = path.length; + } + return path.slice(start, end); + } + for (i = path.length - 1; i >= start; --i) { + if (isPathSeparator(path.charCodeAt(i))) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + start = i + 1; + break; + } + } + else if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // path component + matchedSlash = false; + end = i + 1; + } + } + if (end === -1) { + return ''; + } + return path.slice(start, end); + }, + extname(path) { + validateString(path, 'path'); + let start = 0; + let startDot = -1; + let startPart = 0; + let end = -1; + let matchedSlash = true; + // Track the state of characters (if any) we see before our first dot and + // after any path separator we find + let preDotState = 0; + // Check for a drive letter prefix so as not to mistake the following + // path separator as an extra separator at the end of the path that can be + // disregarded + if (path.length >= 2 && + path.charCodeAt(1) === CHAR_COLON && + isWindowsDeviceRoot(path.charCodeAt(0))) { + start = startPart = 2; + } + for (let i = path.length - 1; i >= start; --i) { + const code = path.charCodeAt(i); + if (isPathSeparator(code)) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + startPart = i + 1; + break; + } + continue; + } + if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // extension + matchedSlash = false; + end = i + 1; + } + if (code === CHAR_DOT) { + // If this is our first dot, mark it as the start of our extension + if (startDot === -1) { + startDot = i; + } + else if (preDotState !== 1) { + preDotState = 1; + } + } + else if (startDot !== -1) { + // We saw a non-dot and non-path separator before our dot, so we should + // have a good chance at having a non-empty extension + preDotState = -1; + } + } + if (startDot === -1 || + end === -1 || + // We saw a non-dot character immediately before the dot + preDotState === 0 || + // The (right-most) trimmed path component is exactly '..' + (preDotState === 1 && + startDot === end - 1 && + startDot === startPart + 1)) { + return ''; + } + return path.slice(startDot, end); + }, + format: _format.bind(null, '\\'), + parse(path) { + validateString(path, 'path'); + const ret = { root: '', dir: '', base: '', ext: '', name: '' }; + if (path.length === 0) { + return ret; + } + const len = path.length; + let rootEnd = 0; + let code = path.charCodeAt(0); + if (len === 1) { + if (isPathSeparator(code)) { + // `path` contains just a path separator, exit early to avoid + // unnecessary work + ret.root = ret.dir = path; + return ret; + } + ret.base = ret.name = path; + return ret; + } + // Try to match a root + if (isPathSeparator(code)) { + // Possible UNC root + rootEnd = 1; + if (isPathSeparator(path.charCodeAt(1))) { + // Matched double path separator at beginning + let j = 2; + let last = j; + // Match 1 or more non-path separators + while (j < len && !isPathSeparator(path.charCodeAt(j))) { + j++; + } + if (j < len && j !== last) { + // Matched! + last = j; + // Match 1 or more path separators + while (j < len && isPathSeparator(path.charCodeAt(j))) { + j++; + } + if (j < len && j !== last) { + // Matched! + last = j; + // Match 1 or more non-path separators + while (j < len && !isPathSeparator(path.charCodeAt(j))) { + j++; + } + if (j === len) { + // We matched a UNC root only + rootEnd = j; + } + else if (j !== last) { + // We matched a UNC root with leftovers + rootEnd = j + 1; + } + } + } + } + } + else if (isWindowsDeviceRoot(code) && path.charCodeAt(1) === CHAR_COLON) { + // Possible device root + if (len <= 2) { + // `path` contains just a drive root, exit early to avoid + // unnecessary work + ret.root = ret.dir = path; + return ret; + } + rootEnd = 2; + if (isPathSeparator(path.charCodeAt(2))) { + if (len === 3) { + // `path` contains just a drive root, exit early to avoid + // unnecessary work + ret.root = ret.dir = path; + return ret; + } + rootEnd = 3; + } + } + if (rootEnd > 0) { + ret.root = path.slice(0, rootEnd); + } + let startDot = -1; + let startPart = rootEnd; + let end = -1; + let matchedSlash = true; + let i = path.length - 1; + // Track the state of characters (if any) we see before our first dot and + // after any path separator we find + let preDotState = 0; + // Get non-dir info + for (; i >= rootEnd; --i) { + code = path.charCodeAt(i); + if (isPathSeparator(code)) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + startPart = i + 1; + break; + } + continue; + } + if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // extension + matchedSlash = false; + end = i + 1; + } + if (code === CHAR_DOT) { + // If this is our first dot, mark it as the start of our extension + if (startDot === -1) { + startDot = i; + } + else if (preDotState !== 1) { + preDotState = 1; + } + } + else if (startDot !== -1) { + // We saw a non-dot and non-path separator before our dot, so we should + // have a good chance at having a non-empty extension + preDotState = -1; + } + } + if (end !== -1) { + if (startDot === -1 || + // We saw a non-dot character immediately before the dot + preDotState === 0 || + // The (right-most) trimmed path component is exactly '..' + (preDotState === 1 && + startDot === end - 1 && + startDot === startPart + 1)) { + ret.base = ret.name = path.slice(startPart, end); + } + else { + ret.name = path.slice(startPart, startDot); + ret.base = path.slice(startPart, end); + ret.ext = path.slice(startDot, end); + } + } + // If the directory is the root, use the entire root as the `dir` including + // the trailing slash if any (`C:\abc` -> `C:\`). Otherwise, strip out the + // trailing slash (`C:\abc\def` -> `C:\abc`). + if (startPart > 0 && startPart !== rootEnd) { + ret.dir = path.slice(0, startPart - 1); + } + else { + ret.dir = ret.root; + } + return ret; + }, + sep: '\\', + delimiter: ';', + win32: null, + posix: null +}; +const posixCwd = (() => { + if (platformIsWin32) { + // Converts Windows' backslash path separators to POSIX forward slashes + // and truncates any drive indicator + const regexp = /\\/g; + return () => { + const cwd = process.cwd().replace(regexp, '/'); + return cwd.slice(cwd.indexOf('/')); + }; + } + // We're already on POSIX, no need for any transformations + return () => process.cwd(); +})(); +export const posix = { + // path.resolve([from ...], to) + resolve(...pathSegments) { + let resolvedPath = ''; + let resolvedAbsolute = false; + for (let i = pathSegments.length - 1; i >= -1 && !resolvedAbsolute; i--) { + const path = i >= 0 ? pathSegments[i] : posixCwd(); + validateString(path, `paths[${i}]`); + // Skip empty entries + if (path.length === 0) { + continue; + } + resolvedPath = `${path}/${resolvedPath}`; + resolvedAbsolute = path.charCodeAt(0) === CHAR_FORWARD_SLASH; + } + // At this point the path should be resolved to a full absolute path, but + // handle relative paths to be safe (might happen when process.cwd() fails) + // Normalize the path + resolvedPath = normalizeString(resolvedPath, !resolvedAbsolute, '/', isPosixPathSeparator); + if (resolvedAbsolute) { + return `/${resolvedPath}`; + } + return resolvedPath.length > 0 ? resolvedPath : '.'; + }, + normalize(path) { + validateString(path, 'path'); + if (path.length === 0) { + return '.'; + } + const isAbsolute = path.charCodeAt(0) === CHAR_FORWARD_SLASH; + const trailingSeparator = path.charCodeAt(path.length - 1) === CHAR_FORWARD_SLASH; + // Normalize the path + path = normalizeString(path, !isAbsolute, '/', isPosixPathSeparator); + if (path.length === 0) { + if (isAbsolute) { + return '/'; + } + return trailingSeparator ? './' : '.'; + } + if (trailingSeparator) { + path += '/'; + } + return isAbsolute ? `/${path}` : path; + }, + isAbsolute(path) { + validateString(path, 'path'); + return path.length > 0 && path.charCodeAt(0) === CHAR_FORWARD_SLASH; + }, + join(...paths) { + if (paths.length === 0) { + return '.'; + } + let joined; + for (let i = 0; i < paths.length; ++i) { + const arg = paths[i]; + validateString(arg, 'path'); + if (arg.length > 0) { + if (joined === undefined) { + joined = arg; + } + else { + joined += `/${arg}`; + } + } + } + if (joined === undefined) { + return '.'; + } + return posix.normalize(joined); + }, + relative(from, to) { + validateString(from, 'from'); + validateString(to, 'to'); + if (from === to) { + return ''; + } + // Trim leading forward slashes. + from = posix.resolve(from); + to = posix.resolve(to); + if (from === to) { + return ''; + } + const fromStart = 1; + const fromEnd = from.length; + const fromLen = fromEnd - fromStart; + const toStart = 1; + const toLen = to.length - toStart; + // Compare paths to find the longest common path from root + const length = (fromLen < toLen ? fromLen : toLen); + let lastCommonSep = -1; + let i = 0; + for (; i < length; i++) { + const fromCode = from.charCodeAt(fromStart + i); + if (fromCode !== to.charCodeAt(toStart + i)) { + break; + } + else if (fromCode === CHAR_FORWARD_SLASH) { + lastCommonSep = i; + } + } + if (i === length) { + if (toLen > length) { + if (to.charCodeAt(toStart + i) === CHAR_FORWARD_SLASH) { + // We get here if `from` is the exact base path for `to`. + // For example: from='/foo/bar'; to='/foo/bar/baz' + return to.slice(toStart + i + 1); + } + if (i === 0) { + // We get here if `from` is the root + // For example: from='/'; to='/foo' + return to.slice(toStart + i); + } + } + else if (fromLen > length) { + if (from.charCodeAt(fromStart + i) === CHAR_FORWARD_SLASH) { + // We get here if `to` is the exact base path for `from`. + // For example: from='/foo/bar/baz'; to='/foo/bar' + lastCommonSep = i; + } + else if (i === 0) { + // We get here if `to` is the root. + // For example: from='/foo/bar'; to='/' + lastCommonSep = 0; + } + } + } + let out = ''; + // Generate the relative path based on the path difference between `to` + // and `from`. + for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) { + if (i === fromEnd || from.charCodeAt(i) === CHAR_FORWARD_SLASH) { + out += out.length === 0 ? '..' : '/..'; + } + } + // Lastly, append the rest of the destination (`to`) path that comes after + // the common path parts. + return `${out}${to.slice(toStart + lastCommonSep)}`; + }, + toNamespacedPath(path) { + // Non-op on posix systems + return path; + }, + dirname(path) { + validateString(path, 'path'); + if (path.length === 0) { + return '.'; + } + const hasRoot = path.charCodeAt(0) === CHAR_FORWARD_SLASH; + let end = -1; + let matchedSlash = true; + for (let i = path.length - 1; i >= 1; --i) { + if (path.charCodeAt(i) === CHAR_FORWARD_SLASH) { + if (!matchedSlash) { + end = i; + break; + } + } + else { + // We saw the first non-path separator + matchedSlash = false; + } + } + if (end === -1) { + return hasRoot ? '/' : '.'; + } + if (hasRoot && end === 1) { + return '//'; + } + return path.slice(0, end); + }, + basename(path, suffix) { + if (suffix !== undefined) { + validateString(suffix, 'ext'); + } + validateString(path, 'path'); + let start = 0; + let end = -1; + let matchedSlash = true; + let i; + if (suffix !== undefined && suffix.length > 0 && suffix.length <= path.length) { + if (suffix === path) { + return ''; + } + let extIdx = suffix.length - 1; + let firstNonSlashEnd = -1; + for (i = path.length - 1; i >= 0; --i) { + const code = path.charCodeAt(i); + if (code === CHAR_FORWARD_SLASH) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + start = i + 1; + break; + } + } + else { + if (firstNonSlashEnd === -1) { + // We saw the first non-path separator, remember this index in case + // we need it if the extension ends up not matching + matchedSlash = false; + firstNonSlashEnd = i + 1; + } + if (extIdx >= 0) { + // Try to match the explicit extension + if (code === suffix.charCodeAt(extIdx)) { + if (--extIdx === -1) { + // We matched the extension, so mark this as the end of our path + // component + end = i; + } + } + else { + // Extension does not match, so our result is the entire path + // component + extIdx = -1; + end = firstNonSlashEnd; + } + } + } + } + if (start === end) { + end = firstNonSlashEnd; + } + else if (end === -1) { + end = path.length; + } + return path.slice(start, end); + } + for (i = path.length - 1; i >= 0; --i) { + if (path.charCodeAt(i) === CHAR_FORWARD_SLASH) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + start = i + 1; + break; + } + } + else if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // path component + matchedSlash = false; + end = i + 1; + } + } + if (end === -1) { + return ''; + } + return path.slice(start, end); + }, + extname(path) { + validateString(path, 'path'); + let startDot = -1; + let startPart = 0; + let end = -1; + let matchedSlash = true; + // Track the state of characters (if any) we see before our first dot and + // after any path separator we find + let preDotState = 0; + for (let i = path.length - 1; i >= 0; --i) { + const code = path.charCodeAt(i); + if (code === CHAR_FORWARD_SLASH) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + startPart = i + 1; + break; + } + continue; + } + if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // extension + matchedSlash = false; + end = i + 1; + } + if (code === CHAR_DOT) { + // If this is our first dot, mark it as the start of our extension + if (startDot === -1) { + startDot = i; + } + else if (preDotState !== 1) { + preDotState = 1; + } + } + else if (startDot !== -1) { + // We saw a non-dot and non-path separator before our dot, so we should + // have a good chance at having a non-empty extension + preDotState = -1; + } + } + if (startDot === -1 || + end === -1 || + // We saw a non-dot character immediately before the dot + preDotState === 0 || + // The (right-most) trimmed path component is exactly '..' + (preDotState === 1 && + startDot === end - 1 && + startDot === startPart + 1)) { + return ''; + } + return path.slice(startDot, end); + }, + format: _format.bind(null, '/'), + parse(path) { + validateString(path, 'path'); + const ret = { root: '', dir: '', base: '', ext: '', name: '' }; + if (path.length === 0) { + return ret; + } + const isAbsolute = path.charCodeAt(0) === CHAR_FORWARD_SLASH; + let start; + if (isAbsolute) { + ret.root = '/'; + start = 1; + } + else { + start = 0; + } + let startDot = -1; + let startPart = 0; + let end = -1; + let matchedSlash = true; + let i = path.length - 1; + // Track the state of characters (if any) we see before our first dot and + // after any path separator we find + let preDotState = 0; + // Get non-dir info + for (; i >= start; --i) { + const code = path.charCodeAt(i); + if (code === CHAR_FORWARD_SLASH) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + startPart = i + 1; + break; + } + continue; + } + if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // extension + matchedSlash = false; + end = i + 1; + } + if (code === CHAR_DOT) { + // If this is our first dot, mark it as the start of our extension + if (startDot === -1) { + startDot = i; + } + else if (preDotState !== 1) { + preDotState = 1; + } + } + else if (startDot !== -1) { + // We saw a non-dot and non-path separator before our dot, so we should + // have a good chance at having a non-empty extension + preDotState = -1; + } + } + if (end !== -1) { + const start = startPart === 0 && isAbsolute ? 1 : startPart; + if (startDot === -1 || + // We saw a non-dot character immediately before the dot + preDotState === 0 || + // The (right-most) trimmed path component is exactly '..' + (preDotState === 1 && + startDot === end - 1 && + startDot === startPart + 1)) { + ret.base = ret.name = path.slice(start, end); + } + else { + ret.name = path.slice(start, startDot); + ret.base = path.slice(start, end); + ret.ext = path.slice(startDot, end); + } + } + if (startPart > 0) { + ret.dir = path.slice(0, startPart - 1); + } + else if (isAbsolute) { + ret.dir = '/'; + } + return ret; + }, + sep: '/', + delimiter: ':', + win32: null, + posix: null +}; +posix.win32 = win32.win32 = win32; +posix.posix = win32.posix = posix; +export const normalize = (platformIsWin32 ? win32.normalize : posix.normalize); +export const isAbsolute = (platformIsWin32 ? win32.isAbsolute : posix.isAbsolute); +export const join = (platformIsWin32 ? win32.join : posix.join); +export const resolve = (platformIsWin32 ? win32.resolve : posix.resolve); +export const relative = (platformIsWin32 ? win32.relative : posix.relative); +export const dirname = (platformIsWin32 ? win32.dirname : posix.dirname); +export const basename = (platformIsWin32 ? win32.basename : posix.basename); +export const extname = (platformIsWin32 ? win32.extname : posix.extname); +export const format = (platformIsWin32 ? win32.format : posix.format); +export const parse = (platformIsWin32 ? win32.parse : posix.parse); +export const toNamespacedPath = (platformIsWin32 ? win32.toNamespacedPath : posix.toNamespacedPath); +export const sep = (platformIsWin32 ? win32.sep : posix.sep); +export const delimiter = (platformIsWin32 ? win32.delimiter : posix.delimiter); //# sourceMappingURL=path.js.map \ No newline at end of file diff --git a/packages/core/dist/path.js.map b/packages/core/dist/path.js.map index f6f2c696..19cdb182 100644 --- a/packages/core/dist/path.js.map +++ b/packages/core/dist/path.js.map @@ -1 +1 @@ -{"version":3,"file":"path.js","sourceRoot":"","sources":["../src/path.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"path.js","sourceRoot":"","sources":["../src/path.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/dist/platform.d.ts b/packages/core/dist/platform.d.ts index 1803990b..0f489d62 100644 --- a/packages/core/dist/platform.d.ts +++ b/packages/core/dist/platform.d.ts @@ -1,99 +1,99 @@ -export declare const LANGUAGE_DEFAULT = "en"; -export interface IProcessEnvironment { - [key: string]: string | undefined; -} -/** - * This interface is intentionally not identical to node.js - * process because it also works in sandboxed environments - * where the process object is implemented differently. We - * define the properties here that we need for `platform` - * to work and nothing else. - */ -export interface INodeProcess { - platform: string; - arch: string; - env: IProcessEnvironment; - versions?: { - node?: string; - electron?: string; - chrome?: string; - }; - type?: string; - cwd: () => string; -} -export declare const enum Platform { - Web = 0, - Mac = 1, - Linux = 2, - Windows = 3 -} -export type PlatformName = 'Web' | 'Windows' | 'Mac' | 'Linux'; -export declare function PlatformToString(platform: Platform): PlatformName; -export declare const isWindows: boolean; -export declare const isMacintosh: boolean; -export declare const isLinux: boolean; -export declare const isLinuxSnap: boolean; -export declare const isNative: boolean; -export declare const isElectron: boolean; -export declare const isWeb: boolean; -export declare const isWebWorker: boolean; -export declare const webWorkerOrigin: any; -export declare const isIOS: boolean; -export declare const isMobile: boolean; -/** - * Whether we run inside a CI environment, such as - * GH actions or Azure Pipelines. - */ -export declare const isCI: boolean; -export declare const platform: Platform; -export declare const userAgent: string; -/** - * The language used for the user interface. The format of - * the string is all lower case (e.g. zh-tw for Traditional - * Chinese or de for German) - */ -export declare const language: string; -export declare namespace Language { - function value(): string; - function isDefaultVariant(): boolean; - function isDefault(): boolean; -} -/** - * Desktop: The OS locale or the locale specified by --locale or `argv.json`. - * Web: matches `platformLocale`. - * - * The UI is not necessarily shown in the provided locale. - */ -export declare const locale: string; -/** - * This will always be set to the OS/browser's locale regardless of - * what was specified otherwise. The format of the string is all - * lower case (e.g. zh-tw for Traditional Chinese). The UI is not - * necessarily shown in the provided locale. - */ -export declare const platformLocale: string; -/** - * The translations that are available through language packs. - */ -export declare const translationsConfigFile: string; -export declare const setTimeout0IsFaster: boolean; -/** - * See https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#:~:text=than%204%2C%20then-,set%20timeout%20to%204,-. - * - * Works similarly to `setTimeout(0)` but doesn't suffer from the 4ms artificial delay - * that browsers set when the nesting level is > 5. - */ -export declare const setTimeout0: (callback: () => void) => void; -export declare const enum OperatingSystem { - Windows = 1, - Macintosh = 2, - Linux = 3 -} -export declare const OS: OperatingSystem; -export declare function isLittleEndian(): boolean; -export declare const isChrome: boolean; -export declare const isFirefox: boolean; -export declare const isSafari: boolean; -export declare const isEdge: boolean; -export declare const isAndroid: boolean; -export declare function isBigSurOrNewer(osVersion: string): boolean; +export declare const LANGUAGE_DEFAULT = "en"; +export interface IProcessEnvironment { + [key: string]: string | undefined; +} +/** + * This interface is intentionally not identical to node.js + * process because it also works in sandboxed environments + * where the process object is implemented differently. We + * define the properties here that we need for `platform` + * to work and nothing else. + */ +export interface INodeProcess { + platform: string; + arch: string; + env: IProcessEnvironment; + versions?: { + node?: string; + electron?: string; + chrome?: string; + }; + type?: string; + cwd: () => string; +} +export declare const enum Platform { + Web = 0, + Mac = 1, + Linux = 2, + Windows = 3 +} +export type PlatformName = 'Web' | 'Windows' | 'Mac' | 'Linux'; +export declare function PlatformToString(platform: Platform): PlatformName; +export declare const isWindows: boolean; +export declare const isMacintosh: boolean; +export declare const isLinux: boolean; +export declare const isLinuxSnap: boolean; +export declare const isNative: boolean; +export declare const isElectron: boolean; +export declare const isWeb: boolean; +export declare const isWebWorker: boolean; +export declare const webWorkerOrigin: any; +export declare const isIOS: boolean; +export declare const isMobile: boolean; +/** + * Whether we run inside a CI environment, such as + * GH actions or Azure Pipelines. + */ +export declare const isCI: boolean; +export declare const platform: Platform; +export declare const userAgent: string; +/** + * The language used for the user interface. The format of + * the string is all lower case (e.g. zh-tw for Traditional + * Chinese or de for German) + */ +export declare const language: string; +export declare namespace Language { + function value(): string; + function isDefaultVariant(): boolean; + function isDefault(): boolean; +} +/** + * Desktop: The OS locale or the locale specified by --locale or `argv.json`. + * Web: matches `platformLocale`. + * + * The UI is not necessarily shown in the provided locale. + */ +export declare const locale: string; +/** + * This will always be set to the OS/browser's locale regardless of + * what was specified otherwise. The format of the string is all + * lower case (e.g. zh-tw for Traditional Chinese). The UI is not + * necessarily shown in the provided locale. + */ +export declare const platformLocale: string; +/** + * The translations that are available through language packs. + */ +export declare const translationsConfigFile: string; +export declare const setTimeout0IsFaster: boolean; +/** + * See https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#:~:text=than%204%2C%20then-,set%20timeout%20to%204,-. + * + * Works similarly to `setTimeout(0)` but doesn't suffer from the 4ms artificial delay + * that browsers set when the nesting level is > 5. + */ +export declare const setTimeout0: (callback: () => void) => void; +export declare const enum OperatingSystem { + Windows = 1, + Macintosh = 2, + Linux = 3 +} +export declare const OS: OperatingSystem; +export declare function isLittleEndian(): boolean; +export declare const isChrome: boolean; +export declare const isFirefox: boolean; +export declare const isSafari: boolean; +export declare const isEdge: boolean; +export declare const isAndroid: boolean; +export declare function isBigSurOrNewer(osVersion: string): boolean; diff --git a/packages/core/dist/platform.js b/packages/core/dist/platform.js index 1c4b82bb..80a263d1 100644 --- a/packages/core/dist/platform.js +++ b/packages/core/dist/platform.js @@ -1,227 +1,227 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ -import * as nls from './nls.js'; -export const LANGUAGE_DEFAULT = 'en'; -let _isWindows = false; -let _isMacintosh = false; -let _isLinux = false; -let _isLinuxSnap = false; -let _isNative = false; -let _isWeb = false; -let _isElectron = false; -let _isIOS = false; -let _isCI = false; -let _isMobile = false; -let _locale = undefined; -let _language = LANGUAGE_DEFAULT; -let _platformLocale = LANGUAGE_DEFAULT; -let _translationsConfigFile = undefined; -let _userAgent = undefined; -const $globalThis = globalThis; -let nodeProcess = undefined; -if (typeof $globalThis.vscode !== 'undefined' && typeof $globalThis.vscode.process !== 'undefined') { - // Native environment (sandboxed) - nodeProcess = $globalThis.vscode.process; -} -else if (typeof process !== 'undefined' && typeof process?.versions?.node === 'string') { - // Native environment (non-sandboxed) - nodeProcess = process; -} -const isElectronProcess = typeof nodeProcess?.versions?.electron === 'string'; -const isElectronRenderer = isElectronProcess && nodeProcess?.type === 'renderer'; -// Native environment -if (typeof nodeProcess === 'object') { - _isWindows = (nodeProcess.platform === 'win32'); - _isMacintosh = (nodeProcess.platform === 'darwin'); - _isLinux = (nodeProcess.platform === 'linux'); - _isLinuxSnap = _isLinux && !!nodeProcess.env['SNAP'] && !!nodeProcess.env['SNAP_REVISION']; - _isElectron = isElectronProcess; - _isCI = !!nodeProcess.env['CI'] || !!nodeProcess.env['BUILD_ARTIFACTSTAGINGDIRECTORY']; - _locale = LANGUAGE_DEFAULT; - _language = LANGUAGE_DEFAULT; - const rawNlsConfig = nodeProcess.env['VSCODE_NLS_CONFIG']; - if (rawNlsConfig) { - try { - const nlsConfig = JSON.parse(rawNlsConfig); - _locale = nlsConfig.userLocale; - _platformLocale = nlsConfig.osLocale; - _language = nlsConfig.resolvedLanguage || LANGUAGE_DEFAULT; - _translationsConfigFile = nlsConfig.languagePack?.translationsConfigFile; - } - catch (e) { - } - } - _isNative = true; -} -// Web environment -else if (typeof navigator === 'object' && !isElectronRenderer) { - _userAgent = navigator.userAgent; - _isWindows = _userAgent.indexOf('Windows') >= 0; - _isMacintosh = _userAgent.indexOf('Macintosh') >= 0; - _isIOS = (_userAgent.indexOf('Macintosh') >= 0 || _userAgent.indexOf('iPad') >= 0 || _userAgent.indexOf('iPhone') >= 0) && !!navigator.maxTouchPoints && navigator.maxTouchPoints > 0; - _isLinux = _userAgent.indexOf('Linux') >= 0; - _isMobile = _userAgent?.indexOf('Mobi') >= 0; - _isWeb = true; - _language = nls.getNLSLanguage() || LANGUAGE_DEFAULT; - _locale = navigator.language.toLowerCase(); - _platformLocale = _locale; -} -// Unknown environment -else { - console.error('Unable to resolve platform.'); -} -export var Platform; -(function (Platform) { - Platform[Platform["Web"] = 0] = "Web"; - Platform[Platform["Mac"] = 1] = "Mac"; - Platform[Platform["Linux"] = 2] = "Linux"; - Platform[Platform["Windows"] = 3] = "Windows"; -})(Platform = Platform || (Platform = {})); -export function PlatformToString(platform) { - switch (platform) { - case 0 /* Platform.Web */: return 'Web'; - case 1 /* Platform.Mac */: return 'Mac'; - case 2 /* Platform.Linux */: return 'Linux'; - case 3 /* Platform.Windows */: return 'Windows'; - } -} -let _platform = 0 /* Platform.Web */; -if (_isMacintosh) { - _platform = 1 /* Platform.Mac */; -} -else if (_isWindows) { - _platform = 3 /* Platform.Windows */; -} -else if (_isLinux) { - _platform = 2 /* Platform.Linux */; -} -export const isWindows = _isWindows; -export const isMacintosh = _isMacintosh; -export const isLinux = _isLinux; -export const isLinuxSnap = _isLinuxSnap; -export const isNative = _isNative; -export const isElectron = _isElectron; -export const isWeb = _isWeb; -export const isWebWorker = (_isWeb && typeof $globalThis.importScripts === 'function'); -export const webWorkerOrigin = isWebWorker ? $globalThis.origin : undefined; -export const isIOS = _isIOS; -export const isMobile = _isMobile; -/** - * Whether we run inside a CI environment, such as - * GH actions or Azure Pipelines. - */ -export const isCI = _isCI; -export const platform = _platform; -export const userAgent = _userAgent; -/** - * The language used for the user interface. The format of - * the string is all lower case (e.g. zh-tw for Traditional - * Chinese or de for German) - */ -export const language = _language; -export var Language; -(function (Language) { - function value() { - return language; - } - Language.value = value; - function isDefaultVariant() { - if (language.length === 2) { - return language === 'en'; - } - else if (language.length >= 3) { - return language[0] === 'e' && language[1] === 'n' && language[2] === '-'; - } - else { - return false; - } - } - Language.isDefaultVariant = isDefaultVariant; - function isDefault() { - return language === 'en'; - } - Language.isDefault = isDefault; -})(Language = Language || (Language = {})); -/** - * Desktop: The OS locale or the locale specified by --locale or `argv.json`. - * Web: matches `platformLocale`. - * - * The UI is not necessarily shown in the provided locale. - */ -export const locale = _locale; -/** - * This will always be set to the OS/browser's locale regardless of - * what was specified otherwise. The format of the string is all - * lower case (e.g. zh-tw for Traditional Chinese). The UI is not - * necessarily shown in the provided locale. - */ -export const platformLocale = _platformLocale; -/** - * The translations that are available through language packs. - */ -export const translationsConfigFile = _translationsConfigFile; -export const setTimeout0IsFaster = (typeof $globalThis.postMessage === 'function' && !$globalThis.importScripts); -/** - * See https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#:~:text=than%204%2C%20then-,set%20timeout%20to%204,-. - * - * Works similarly to `setTimeout(0)` but doesn't suffer from the 4ms artificial delay - * that browsers set when the nesting level is > 5. - */ -export const setTimeout0 = (() => { - if (setTimeout0IsFaster) { - const pending = []; - $globalThis.addEventListener('message', (e) => { - if (e.data && e.data.vscodeScheduleAsyncWork) { - for (let i = 0, len = pending.length; i < len; i++) { - const candidate = pending[i]; - if (candidate.id === e.data.vscodeScheduleAsyncWork) { - pending.splice(i, 1); - candidate.callback(); - return; - } - } - } - }); - let lastId = 0; - return (callback) => { - const myId = ++lastId; - pending.push({ - id: myId, - callback: callback - }); - $globalThis.postMessage({ vscodeScheduleAsyncWork: myId }, '*'); - }; - } - return (callback) => setTimeout(callback); -})(); -export var OperatingSystem; -(function (OperatingSystem) { - OperatingSystem[OperatingSystem["Windows"] = 1] = "Windows"; - OperatingSystem[OperatingSystem["Macintosh"] = 2] = "Macintosh"; - OperatingSystem[OperatingSystem["Linux"] = 3] = "Linux"; -})(OperatingSystem = OperatingSystem || (OperatingSystem = {})); -export const OS = (_isMacintosh || _isIOS ? 2 /* OperatingSystem.Macintosh */ : (_isWindows ? 1 /* OperatingSystem.Windows */ : 3 /* OperatingSystem.Linux */)); -let _isLittleEndian = true; -let _isLittleEndianComputed = false; -export function isLittleEndian() { - if (!_isLittleEndianComputed) { - _isLittleEndianComputed = true; - const test = new Uint8Array(2); - test[0] = 1; - test[1] = 2; - const view = new Uint16Array(test.buffer); - _isLittleEndian = (view[0] === (2 << 8) + 1); - } - return _isLittleEndian; -} -export const isChrome = !!(userAgent && userAgent.indexOf('Chrome') >= 0); -export const isFirefox = !!(userAgent && userAgent.indexOf('Firefox') >= 0); -export const isSafari = !!(!isChrome && (userAgent && userAgent.indexOf('Safari') >= 0)); -export const isEdge = !!(userAgent && userAgent.indexOf('Edg/') >= 0); -export const isAndroid = !!(userAgent && userAgent.indexOf('Android') >= 0); -export function isBigSurOrNewer(osVersion) { - return parseFloat(osVersion) >= 20; -} +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +import * as nls from './nls.js'; +export const LANGUAGE_DEFAULT = 'en'; +let _isWindows = false; +let _isMacintosh = false; +let _isLinux = false; +let _isLinuxSnap = false; +let _isNative = false; +let _isWeb = false; +let _isElectron = false; +let _isIOS = false; +let _isCI = false; +let _isMobile = false; +let _locale = undefined; +let _language = LANGUAGE_DEFAULT; +let _platformLocale = LANGUAGE_DEFAULT; +let _translationsConfigFile = undefined; +let _userAgent = undefined; +const $globalThis = globalThis; +let nodeProcess = undefined; +if (typeof $globalThis.vscode !== 'undefined' && typeof $globalThis.vscode.process !== 'undefined') { + // Native environment (sandboxed) + nodeProcess = $globalThis.vscode.process; +} +else if (typeof process !== 'undefined' && typeof process?.versions?.node === 'string') { + // Native environment (non-sandboxed) + nodeProcess = process; +} +const isElectronProcess = typeof nodeProcess?.versions?.electron === 'string'; +const isElectronRenderer = isElectronProcess && nodeProcess?.type === 'renderer'; +// Native environment +if (typeof nodeProcess === 'object') { + _isWindows = (nodeProcess.platform === 'win32'); + _isMacintosh = (nodeProcess.platform === 'darwin'); + _isLinux = (nodeProcess.platform === 'linux'); + _isLinuxSnap = _isLinux && !!nodeProcess.env['SNAP'] && !!nodeProcess.env['SNAP_REVISION']; + _isElectron = isElectronProcess; + _isCI = !!nodeProcess.env['CI'] || !!nodeProcess.env['BUILD_ARTIFACTSTAGINGDIRECTORY']; + _locale = LANGUAGE_DEFAULT; + _language = LANGUAGE_DEFAULT; + const rawNlsConfig = nodeProcess.env['VSCODE_NLS_CONFIG']; + if (rawNlsConfig) { + try { + const nlsConfig = JSON.parse(rawNlsConfig); + _locale = nlsConfig.userLocale; + _platformLocale = nlsConfig.osLocale; + _language = nlsConfig.resolvedLanguage || LANGUAGE_DEFAULT; + _translationsConfigFile = nlsConfig.languagePack?.translationsConfigFile; + } + catch (e) { + } + } + _isNative = true; +} +// Web environment +else if (typeof navigator === 'object' && !isElectronRenderer) { + _userAgent = navigator.userAgent; + _isWindows = _userAgent.indexOf('Windows') >= 0; + _isMacintosh = _userAgent.indexOf('Macintosh') >= 0; + _isIOS = (_userAgent.indexOf('Macintosh') >= 0 || _userAgent.indexOf('iPad') >= 0 || _userAgent.indexOf('iPhone') >= 0) && !!navigator.maxTouchPoints && navigator.maxTouchPoints > 0; + _isLinux = _userAgent.indexOf('Linux') >= 0; + _isMobile = _userAgent?.indexOf('Mobi') >= 0; + _isWeb = true; + _language = nls.getNLSLanguage() || LANGUAGE_DEFAULT; + _locale = navigator.language.toLowerCase(); + _platformLocale = _locale; +} +// Unknown environment +else { + console.error('Unable to resolve platform.'); +} +export var Platform; +(function (Platform) { + Platform[Platform["Web"] = 0] = "Web"; + Platform[Platform["Mac"] = 1] = "Mac"; + Platform[Platform["Linux"] = 2] = "Linux"; + Platform[Platform["Windows"] = 3] = "Windows"; +})(Platform || (Platform = {})); +export function PlatformToString(platform) { + switch (platform) { + case 0 /* Platform.Web */: return 'Web'; + case 1 /* Platform.Mac */: return 'Mac'; + case 2 /* Platform.Linux */: return 'Linux'; + case 3 /* Platform.Windows */: return 'Windows'; + } +} +let _platform = 0 /* Platform.Web */; +if (_isMacintosh) { + _platform = 1 /* Platform.Mac */; +} +else if (_isWindows) { + _platform = 3 /* Platform.Windows */; +} +else if (_isLinux) { + _platform = 2 /* Platform.Linux */; +} +export const isWindows = _isWindows; +export const isMacintosh = _isMacintosh; +export const isLinux = _isLinux; +export const isLinuxSnap = _isLinuxSnap; +export const isNative = _isNative; +export const isElectron = _isElectron; +export const isWeb = _isWeb; +export const isWebWorker = (_isWeb && typeof $globalThis.importScripts === 'function'); +export const webWorkerOrigin = isWebWorker ? $globalThis.origin : undefined; +export const isIOS = _isIOS; +export const isMobile = _isMobile; +/** + * Whether we run inside a CI environment, such as + * GH actions or Azure Pipelines. + */ +export const isCI = _isCI; +export const platform = _platform; +export const userAgent = _userAgent; +/** + * The language used for the user interface. The format of + * the string is all lower case (e.g. zh-tw for Traditional + * Chinese or de for German) + */ +export const language = _language; +export var Language; +(function (Language) { + function value() { + return language; + } + Language.value = value; + function isDefaultVariant() { + if (language.length === 2) { + return language === 'en'; + } + else if (language.length >= 3) { + return language[0] === 'e' && language[1] === 'n' && language[2] === '-'; + } + else { + return false; + } + } + Language.isDefaultVariant = isDefaultVariant; + function isDefault() { + return language === 'en'; + } + Language.isDefault = isDefault; +})(Language || (Language = {})); +/** + * Desktop: The OS locale or the locale specified by --locale or `argv.json`. + * Web: matches `platformLocale`. + * + * The UI is not necessarily shown in the provided locale. + */ +export const locale = _locale; +/** + * This will always be set to the OS/browser's locale regardless of + * what was specified otherwise. The format of the string is all + * lower case (e.g. zh-tw for Traditional Chinese). The UI is not + * necessarily shown in the provided locale. + */ +export const platformLocale = _platformLocale; +/** + * The translations that are available through language packs. + */ +export const translationsConfigFile = _translationsConfigFile; +export const setTimeout0IsFaster = (typeof $globalThis.postMessage === 'function' && !$globalThis.importScripts); +/** + * See https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#:~:text=than%204%2C%20then-,set%20timeout%20to%204,-. + * + * Works similarly to `setTimeout(0)` but doesn't suffer from the 4ms artificial delay + * that browsers set when the nesting level is > 5. + */ +export const setTimeout0 = (() => { + if (setTimeout0IsFaster) { + const pending = []; + $globalThis.addEventListener('message', (e) => { + if (e.data && e.data.vscodeScheduleAsyncWork) { + for (let i = 0, len = pending.length; i < len; i++) { + const candidate = pending[i]; + if (candidate.id === e.data.vscodeScheduleAsyncWork) { + pending.splice(i, 1); + candidate.callback(); + return; + } + } + } + }); + let lastId = 0; + return (callback) => { + const myId = ++lastId; + pending.push({ + id: myId, + callback: callback + }); + $globalThis.postMessage({ vscodeScheduleAsyncWork: myId }, '*'); + }; + } + return (callback) => setTimeout(callback); +})(); +export var OperatingSystem; +(function (OperatingSystem) { + OperatingSystem[OperatingSystem["Windows"] = 1] = "Windows"; + OperatingSystem[OperatingSystem["Macintosh"] = 2] = "Macintosh"; + OperatingSystem[OperatingSystem["Linux"] = 3] = "Linux"; +})(OperatingSystem || (OperatingSystem = {})); +export const OS = (_isMacintosh || _isIOS ? 2 /* OperatingSystem.Macintosh */ : (_isWindows ? 1 /* OperatingSystem.Windows */ : 3 /* OperatingSystem.Linux */)); +let _isLittleEndian = true; +let _isLittleEndianComputed = false; +export function isLittleEndian() { + if (!_isLittleEndianComputed) { + _isLittleEndianComputed = true; + const test = new Uint8Array(2); + test[0] = 1; + test[1] = 2; + const view = new Uint16Array(test.buffer); + _isLittleEndian = (view[0] === (2 << 8) + 1); + } + return _isLittleEndian; +} +export const isChrome = !!(userAgent && userAgent.indexOf('Chrome') >= 0); +export const isFirefox = !!(userAgent && userAgent.indexOf('Firefox') >= 0); +export const isSafari = !!(!isChrome && (userAgent && userAgent.indexOf('Safari') >= 0)); +export const isEdge = !!(userAgent && userAgent.indexOf('Edg/') >= 0); +export const isAndroid = !!(userAgent && userAgent.indexOf('Android') >= 0); +export function isBigSurOrNewer(osVersion) { + return parseFloat(osVersion) >= 20; +} //# sourceMappingURL=platform.js.map \ No newline at end of file diff --git a/packages/core/dist/platform.js.map b/packages/core/dist/platform.js.map index 56e230d9..319b4818 100644 --- a/packages/core/dist/platform.js.map +++ b/packages/core/dist/platform.js.map @@ -1 +1 @@ -{"version":3,"file":"platform.js","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"platform.js","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/dist/primitives.d.ts b/packages/core/dist/primitives.d.ts index ae0cf851..3dff5b6f 100644 --- a/packages/core/dist/primitives.d.ts +++ b/packages/core/dist/primitives.d.ts @@ -1,87 +1,87 @@ -/** - * @returns whether the provided parameter is of type `Buffer` or Uint8Array dervived type - */ -export declare function isTypedArray(obj: unknown): obj is Object; -/** - * @returns whether the provided parameter is a JavaScript Array or not. - */ -export declare function isArray(array: any): array is any[]; -/** - * @returns whether the provided parameter is a JavaScript String or not. - */ -export declare function isString(str: any): str is string; -/** - * @returns whether the provided parameter is a JavaScript Array and each element in the array is a string. - */ -export declare function isStringArray(value: any): value is string[]; -/** - * - * @returns whether the provided parameter is of type `object` but **not** - * `null`, an `array`, a `regexp`, nor a `date`. - */ -export declare function isObject(obj: any): boolean; -/** - * In **contrast** to just checking `typeof` this will return `false` for `NaN`. - * @returns whether the provided parameter is a JavaScript Number or not. - */ -export declare function isNumber(obj: any): obj is number; -/** - * @returns whether the provided parameter is a JavaScript Boolean or not. - */ -export declare function isBoolean(obj: any): obj is boolean; -/** - * @returns whether the provided parameter is undefined. - */ -export declare function isUndefined(obj: any): boolean; -/** - * @returns whether the provided parameter is undefined or null. - */ -export declare function isUndefinedOrNull(obj: any): boolean; -/** - * @returns whether the provided parameter is an empty JavaScript Object or not. - */ -export declare function isEmptyObject(obj: any): obj is any; -/** - * @returns whether the provided parameter is a JavaScript Function or not. - */ -export declare function isFunction(obj: any): obj is Function; -/** - * @returns whether the provided parameters is are JavaScript Function or not. - */ -export declare function areFunctions(...objects: any[]): boolean; -export type TypeConstraint = string | Function; -export declare function validateConstraints(args: any[], constraints: TypeConstraint[]): void; -export declare function validateConstraint(arg: any, constraint: TypeConstraint): void; -/** - * Creates a new object of the provided class and will call the constructor with - * any additional argument supplied. - */ -export declare function create(ctor: Function, ...args: any[]): any; -export type IFunction0 = () => T; -export type IFunction1 = (a1: A1) => T; -export type IFunction2 = (a1: A1, a2: A2) => T; -export type IFunction3 = (a1: A1, a2: A2, a3: A3) => T; -export type IFunction4 = (a1: A1, a2: A2, a3: A3, a4: A4) => T; -export type IFunction5 = (a1: A1, a2: A2, a3: A3, a4: A4, a5: A5) => T; -export type IFunction6 = (a1: A1, a2: A2, a3: A3, a4: A4, a5: A5, a6: A6) => T; -export type IFunction7 = (a1: A1, a2: A2, a3: A3, a4: A4, a5: A5, a6: A6, a7: A7) => T; -export type IFunction8 = (a1: A1, a2: A2, a3: A3, a4: A4, a5: A5, a6: A6, a7: A7, a8: A8) => T; -export interface IAction0 extends IFunction0 { -} -export interface IAction1 extends IFunction1 { -} -export interface IAction2 extends IFunction2 { -} -export interface IAction3 extends IFunction3 { -} -export interface IAction4 extends IFunction4 { -} -export interface IAction5 extends IFunction5 { -} -export interface IAction6 extends IFunction6 { -} -export interface IAction7 extends IFunction7 { -} -export interface IAction8 extends IFunction8 { -} -export type NumberCallback = (index: number) => void; +/** + * @returns whether the provided parameter is of type `Buffer` or Uint8Array dervived type + */ +export declare function isTypedArray(obj: unknown): obj is Object; +/** + * @returns whether the provided parameter is a JavaScript Array or not. + */ +export declare function isArray(array: any): array is any[]; +/** + * @returns whether the provided parameter is a JavaScript String or not. + */ +export declare function isString(str: any): str is string; +/** + * @returns whether the provided parameter is a JavaScript Array and each element in the array is a string. + */ +export declare function isStringArray(value: any): value is string[]; +/** + * + * @returns whether the provided parameter is of type `object` but **not** + * `null`, an `array`, a `regexp`, nor a `date`. + */ +export declare function isObject(obj: any): boolean; +/** + * In **contrast** to just checking `typeof` this will return `false` for `NaN`. + * @returns whether the provided parameter is a JavaScript Number or not. + */ +export declare function isNumber(obj: any): obj is number; +/** + * @returns whether the provided parameter is a JavaScript Boolean or not. + */ +export declare function isBoolean(obj: any): obj is boolean; +/** + * @returns whether the provided parameter is undefined. + */ +export declare function isUndefined(obj: any): boolean; +/** + * @returns whether the provided parameter is undefined or null. + */ +export declare function isUndefinedOrNull(obj: any): boolean; +/** + * @returns whether the provided parameter is an empty JavaScript Object or not. + */ +export declare function isEmptyObject(obj: any): obj is any; +/** + * @returns whether the provided parameter is a JavaScript Function or not. + */ +export declare function isFunction(obj: any): obj is Function; +/** + * @returns whether the provided parameters is are JavaScript Function or not. + */ +export declare function areFunctions(...objects: any[]): boolean; +export type TypeConstraint = string | Function; +export declare function validateConstraints(args: any[], constraints: TypeConstraint[]): void; +export declare function validateConstraint(arg: any, constraint: TypeConstraint): void; +/** + * Creates a new object of the provided class and will call the constructor with + * any additional argument supplied. + */ +export declare function create(ctor: Function, ...args: any[]): any; +export type IFunction0 = () => T; +export type IFunction1 = (a1: A1) => T; +export type IFunction2 = (a1: A1, a2: A2) => T; +export type IFunction3 = (a1: A1, a2: A2, a3: A3) => T; +export type IFunction4 = (a1: A1, a2: A2, a3: A3, a4: A4) => T; +export type IFunction5 = (a1: A1, a2: A2, a3: A3, a4: A4, a5: A5) => T; +export type IFunction6 = (a1: A1, a2: A2, a3: A3, a4: A4, a5: A5, a6: A6) => T; +export type IFunction7 = (a1: A1, a2: A2, a3: A3, a4: A4, a5: A5, a6: A6, a7: A7) => T; +export type IFunction8 = (a1: A1, a2: A2, a3: A3, a4: A4, a5: A5, a6: A6, a7: A7, a8: A8) => T; +export interface IAction0 extends IFunction0 { +} +export interface IAction1 extends IFunction1 { +} +export interface IAction2 extends IFunction2 { +} +export interface IAction3 extends IFunction3 { +} +export interface IAction4 extends IFunction4 { +} +export interface IAction5 extends IFunction5 { +} +export interface IAction6 extends IFunction6 { +} +export interface IAction7 extends IFunction7 { +} +export interface IAction8 extends IFunction8 { +} +export type NumberCallback = (index: number) => void; diff --git a/packages/core/dist/primitives.js b/packages/core/dist/primitives.js index cd3d9b06..6b44417c 100644 --- a/packages/core/dist/primitives.js +++ b/packages/core/dist/primitives.js @@ -1,152 +1,152 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ -'use strict'; -const _typeof = { - number: 'number', - string: 'string', - undefined: 'undefined', - object: 'object', - function: 'function' -}; -/** - * @returns whether the provided parameter is of type `Buffer` or Uint8Array dervived type - */ -export function isTypedArray(obj) { - const TypedArray = Object.getPrototypeOf(Uint8Array); - return typeof obj === 'object' - && obj instanceof TypedArray; -} -/** - * @returns whether the provided parameter is a JavaScript Array or not. - */ -export function isArray(array) { - if (Array.isArray) { - return Array.isArray(array); - } - if (array && typeof (array.length) === _typeof.number && array.constructor === Array) { - return true; - } - return false; -} -/** - * @returns whether the provided parameter is a JavaScript String or not. - */ -export function isString(str) { - if (typeof (str) === _typeof.string || str instanceof String) { - return true; - } - return false; -} -/** - * @returns whether the provided parameter is a JavaScript Array and each element in the array is a string. - */ -export function isStringArray(value) { - return isArray(value) && (value).every(elem => isString(elem)); -} -/** - * - * @returns whether the provided parameter is of type `object` but **not** - * `null`, an `array`, a `regexp`, nor a `date`. - */ -export function isObject(obj) { - // The method can't do a type cast since there are type (like strings) which - // are subclasses of any put not positvely matched by the function. Hence type - // narrowing results in wrong results. - return typeof obj === _typeof.object - && obj !== null - && !Array.isArray(obj) - && !(obj instanceof RegExp) - && !(obj instanceof Date); -} -/** - * In **contrast** to just checking `typeof` this will return `false` for `NaN`. - * @returns whether the provided parameter is a JavaScript Number or not. - */ -export function isNumber(obj) { - if ((typeof (obj) === _typeof.number || obj instanceof Number) && !isNaN(obj)) { - return true; - } - return false; -} -/** - * @returns whether the provided parameter is a JavaScript Boolean or not. - */ -export function isBoolean(obj) { - return obj === true || obj === false; -} -/** - * @returns whether the provided parameter is undefined. - */ -export function isUndefined(obj) { - return typeof (obj) === _typeof.undefined; -} -/** - * @returns whether the provided parameter is undefined or null. - */ -export function isUndefinedOrNull(obj) { - return isUndefined(obj) || obj === null; -} -const hasOwnProperty = Object.prototype.hasOwnProperty; -/** - * @returns whether the provided parameter is an empty JavaScript Object or not. - */ -export function isEmptyObject(obj) { - if (!isObject(obj)) { - return false; - } - for (const key in obj) { - if (hasOwnProperty.call(obj, key)) { - return false; - } - } - return true; -} -/** - * @returns whether the provided parameter is a JavaScript Function or not. - */ -export function isFunction(obj) { - return typeof obj === _typeof.function; -} -/** - * @returns whether the provided parameters is are JavaScript Function or not. - */ -export function areFunctions(...objects) { - return objects && objects.length > 0 && objects.every(isFunction); -} -export function validateConstraints(args, constraints) { - const len = Math.min(args.length, constraints.length); - for (let i = 0; i < len; i++) { - validateConstraint(args[i], constraints[i]); - } -} -export function validateConstraint(arg, constraint) { - if (isString(constraint)) { - if (typeof arg !== constraint) { - throw new Error(`argument does not match constraint: typeof ${constraint}`); - } - } - else if (isFunction(constraint)) { - if (arg instanceof constraint) { - return; - } - if (arg && arg.constructor === constraint) { - return; - } - if (constraint.length === 1 && constraint.call(undefined, arg) === true) { - return; - } - throw new Error(`argument does not match one of these constraints: arg instanceof constraint, arg.constructor === constraint, nor constraint(arg) === true`); - } -} -/** - * Creates a new object of the provided class and will call the constructor with - * any additional argument supplied. - */ -export function create(ctor, ...args) { - const obj = Object.create(ctor.prototype); - ctor.apply(obj, args); - return obj; -} +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +'use strict'; +const _typeof = { + number: 'number', + string: 'string', + undefined: 'undefined', + object: 'object', + function: 'function' +}; +/** + * @returns whether the provided parameter is of type `Buffer` or Uint8Array dervived type + */ +export function isTypedArray(obj) { + const TypedArray = Object.getPrototypeOf(Uint8Array); + return typeof obj === 'object' + && obj instanceof TypedArray; +} +/** + * @returns whether the provided parameter is a JavaScript Array or not. + */ +export function isArray(array) { + if (Array.isArray) { + return Array.isArray(array); + } + if (array && typeof (array.length) === _typeof.number && array.constructor === Array) { + return true; + } + return false; +} +/** + * @returns whether the provided parameter is a JavaScript String or not. + */ +export function isString(str) { + if (typeof (str) === _typeof.string || str instanceof String) { + return true; + } + return false; +} +/** + * @returns whether the provided parameter is a JavaScript Array and each element in the array is a string. + */ +export function isStringArray(value) { + return isArray(value) && (value).every(elem => isString(elem)); +} +/** + * + * @returns whether the provided parameter is of type `object` but **not** + * `null`, an `array`, a `regexp`, nor a `date`. + */ +export function isObject(obj) { + // The method can't do a type cast since there are type (like strings) which + // are subclasses of any put not positvely matched by the function. Hence type + // narrowing results in wrong results. + return typeof obj === _typeof.object + && obj !== null + && !Array.isArray(obj) + && !(obj instanceof RegExp) + && !(obj instanceof Date); +} +/** + * In **contrast** to just checking `typeof` this will return `false` for `NaN`. + * @returns whether the provided parameter is a JavaScript Number or not. + */ +export function isNumber(obj) { + if ((typeof (obj) === _typeof.number || obj instanceof Number) && !isNaN(obj)) { + return true; + } + return false; +} +/** + * @returns whether the provided parameter is a JavaScript Boolean or not. + */ +export function isBoolean(obj) { + return obj === true || obj === false; +} +/** + * @returns whether the provided parameter is undefined. + */ +export function isUndefined(obj) { + return typeof (obj) === _typeof.undefined; +} +/** + * @returns whether the provided parameter is undefined or null. + */ +export function isUndefinedOrNull(obj) { + return isUndefined(obj) || obj === null; +} +const hasOwnProperty = Object.prototype.hasOwnProperty; +/** + * @returns whether the provided parameter is an empty JavaScript Object or not. + */ +export function isEmptyObject(obj) { + if (!isObject(obj)) { + return false; + } + for (const key in obj) { + if (hasOwnProperty.call(obj, key)) { + return false; + } + } + return true; +} +/** + * @returns whether the provided parameter is a JavaScript Function or not. + */ +export function isFunction(obj) { + return typeof obj === _typeof.function; +} +/** + * @returns whether the provided parameters is are JavaScript Function or not. + */ +export function areFunctions(...objects) { + return objects && objects.length > 0 && objects.every(isFunction); +} +export function validateConstraints(args, constraints) { + const len = Math.min(args.length, constraints.length); + for (let i = 0; i < len; i++) { + validateConstraint(args[i], constraints[i]); + } +} +export function validateConstraint(arg, constraint) { + if (isString(constraint)) { + if (typeof arg !== constraint) { + throw new Error(`argument does not match constraint: typeof ${constraint}`); + } + } + else if (isFunction(constraint)) { + if (arg instanceof constraint) { + return; + } + if (arg && arg.constructor === constraint) { + return; + } + if (constraint.length === 1 && constraint.call(undefined, arg) === true) { + return; + } + throw new Error(`argument does not match one of these constraints: arg instanceof constraint, arg.constructor === constraint, nor constraint(arg) === true`); + } +} +/** + * Creates a new object of the provided class and will call the constructor with + * any additional argument supplied. + */ +export function create(ctor, ...args) { + const obj = Object.create(ctor.prototype); + ctor.apply(obj, args); + return obj; +} //# sourceMappingURL=primitives.js.map \ No newline at end of file diff --git a/packages/core/dist/primitives.js.map b/packages/core/dist/primitives.js.map index 6853c024..860e4b74 100644 --- a/packages/core/dist/primitives.js.map +++ b/packages/core/dist/primitives.js.map @@ -1 +1 @@ -{"version":3,"file":"primitives.js","sourceRoot":"","sources":["../src/primitives.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"primitives.js","sourceRoot":"","sources":["../src/primitives.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/dist/process.d.ts b/packages/core/dist/process.d.ts index 4034374a..4063c40e 100644 --- a/packages/core/dist/process.d.ts +++ b/packages/core/dist/process.d.ts @@ -1,27 +1,27 @@ -/** - * Provides safe access to the `cwd` property in node.js, sandboxed or web - * environments. - * - * Note: in web, this property is hardcoded to be `/`. - * - * @skipMangle - */ -export declare const cwd: () => string; -/** - * Provides safe access to the `env` property in node.js, sandboxed or web - * environments. - * - * Note: in web, this property is hardcoded to be `{}`. - */ -export declare const env: import("./platform.js").IProcessEnvironment; -/** - * Provides safe access to the `platform` property in node.js, sandboxed or web - * environments. - */ -export declare const platform: string; -/** - * Provides safe access to the `arch` method in node.js, sandboxed or web - * environments. - * Note: `arch` is `undefined` in web - */ -export declare const arch: string; +/** + * Provides safe access to the `cwd` property in node.js, sandboxed or web + * environments. + * + * Note: in web, this property is hardcoded to be `/`. + * + * @skipMangle + */ +export declare const cwd: () => string; +/** + * Provides safe access to the `env` property in node.js, sandboxed or web + * environments. + * + * Note: in web, this property is hardcoded to be `{}`. + */ +export declare const env: import("./platform.js").IProcessEnvironment; +/** + * Provides safe access to the `platform` property in node.js, sandboxed or web + * environments. + */ +export declare const platform: string; +/** + * Provides safe access to the `arch` method in node.js, sandboxed or web + * environments. + * Note: `arch` is `undefined` in web + */ +export declare const arch: string; diff --git a/packages/core/dist/process.js b/packages/core/dist/process.js index 83a8a80b..a55d3821 100644 --- a/packages/core/dist/process.js +++ b/packages/core/dist/process.js @@ -1,65 +1,65 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ -import { isMacintosh, isWindows } from './platform.js'; -let safeProcess; -// Native sandbox environment -const vscodeGlobal = globalThis.vscode; -if (typeof vscodeGlobal !== 'undefined' && typeof vscodeGlobal.process !== 'undefined') { - const sandboxProcess = vscodeGlobal.process; - safeProcess = { - get platform() { return sandboxProcess.platform; }, - get arch() { return sandboxProcess.arch; }, - get env() { return sandboxProcess.env; }, - cwd() { return sandboxProcess.cwd(); } - }; -} -// Native node.js environment -else if (typeof process !== 'undefined' && typeof process?.versions?.node === 'string') { - safeProcess = { - get platform() { return process.platform; }, - get arch() { return process.arch; }, - get env() { return process.env; }, - cwd() { return process.env['VSCODE_CWD'] || process.cwd(); } - }; -} -// Web environment -else { - safeProcess = { - // Supported - get platform() { return isWindows ? 'win32' : isMacintosh ? 'darwin' : 'linux'; }, - get arch() { return undefined; /* arch is undefined in web */ }, - // Unsupported - get env() { return {}; }, - cwd() { return '/'; } - }; -} -/** - * Provides safe access to the `cwd` property in node.js, sandboxed or web - * environments. - * - * Note: in web, this property is hardcoded to be `/`. - * - * @skipMangle - */ -export const cwd = safeProcess.cwd; -/** - * Provides safe access to the `env` property in node.js, sandboxed or web - * environments. - * - * Note: in web, this property is hardcoded to be `{}`. - */ -export const env = safeProcess.env; -/** - * Provides safe access to the `platform` property in node.js, sandboxed or web - * environments. - */ -export const platform = safeProcess.platform; -/** - * Provides safe access to the `arch` method in node.js, sandboxed or web - * environments. - * Note: `arch` is `undefined` in web - */ -export const arch = safeProcess.arch; +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +import { isMacintosh, isWindows } from './platform.js'; +let safeProcess; +// Native sandbox environment +const vscodeGlobal = globalThis.vscode; +if (typeof vscodeGlobal !== 'undefined' && typeof vscodeGlobal.process !== 'undefined') { + const sandboxProcess = vscodeGlobal.process; + safeProcess = { + get platform() { return sandboxProcess.platform; }, + get arch() { return sandboxProcess.arch; }, + get env() { return sandboxProcess.env; }, + cwd() { return sandboxProcess.cwd(); } + }; +} +// Native node.js environment +else if (typeof process !== 'undefined' && typeof process?.versions?.node === 'string') { + safeProcess = { + get platform() { return process.platform; }, + get arch() { return process.arch; }, + get env() { return process.env; }, + cwd() { return process.env['VSCODE_CWD'] || process.cwd(); } + }; +} +// Web environment +else { + safeProcess = { + // Supported + get platform() { return isWindows ? 'win32' : isMacintosh ? 'darwin' : 'linux'; }, + get arch() { return undefined; /* arch is undefined in web */ }, + // Unsupported + get env() { return {}; }, + cwd() { return '/'; } + }; +} +/** + * Provides safe access to the `cwd` property in node.js, sandboxed or web + * environments. + * + * Note: in web, this property is hardcoded to be `/`. + * + * @skipMangle + */ +export const cwd = safeProcess.cwd; +/** + * Provides safe access to the `env` property in node.js, sandboxed or web + * environments. + * + * Note: in web, this property is hardcoded to be `{}`. + */ +export const env = safeProcess.env; +/** + * Provides safe access to the `platform` property in node.js, sandboxed or web + * environments. + */ +export const platform = safeProcess.platform; +/** + * Provides safe access to the `arch` method in node.js, sandboxed or web + * environments. + * Note: `arch` is `undefined` in web + */ +export const arch = safeProcess.arch; //# sourceMappingURL=process.js.map \ No newline at end of file diff --git a/packages/core/dist/process.js.map b/packages/core/dist/process.js.map index 26b9036d..37f3e740 100644 --- a/packages/core/dist/process.js.map +++ b/packages/core/dist/process.js.map @@ -1 +1 @@ -{"version":3,"file":"process.js","sourceRoot":"","sources":["../src/process.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,EAAE,WAAW,EAAE,SAAS,EAAqB,MAAM,eAAe,CAAC;AAE1E,IAAI,WAAsE,CAAC;AAG3E,6BAA6B;AAC7B,MAAM,YAAY,GAAI,UAAkB,CAAC,MAAM,CAAC;AAChD,IAAI,OAAO,YAAY,KAAK,WAAW,IAAI,OAAO,YAAY,CAAC,OAAO,KAAK,WAAW,EAAE;IACvF,MAAM,cAAc,GAAiB,YAAY,CAAC,OAAO,CAAC;IAC1D,WAAW,GAAG;QACb,IAAI,QAAQ,KAAK,OAAO,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC;QAClD,IAAI,IAAI,KAAK,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1C,IAAI,GAAG,KAAK,OAAO,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;QACxC,GAAG,KAAK,OAAO,cAAc,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;KACtC,CAAC;CACF;AAED,6BAA6B;KACxB,IAAI,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,OAAO,EAAE,QAAQ,EAAE,IAAI,KAAK,QAAQ,EAAE;IACvF,WAAW,GAAG;QACb,IAAI,QAAQ,KAAK,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC3C,IAAI,IAAI,KAAK,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QACnC,IAAI,GAAG,KAAK,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;QACjC,GAAG,KAAK,OAAO,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;KAC5D,CAAC;CACF;AAED,kBAAkB;KACb;IACJ,WAAW,GAAG;QAEb,YAAY;QACZ,IAAI,QAAQ,KAAK,OAAO,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;QACjF,IAAI,IAAI,KAAK,OAAO,SAAS,CAAC,CAAC,8BAA8B,CAAC,CAAC;QAE/D,cAAc;QACd,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC,CAAC,CAAC;QACxB,GAAG,KAAK,OAAO,GAAG,CAAC,CAAC,CAAC;KACrB,CAAC;CACF;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC;AAEnC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC;AAEnC;;;GAGG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC;AAE7C;;;;GAIG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC"} \ No newline at end of file +{"version":3,"file":"process.js","sourceRoot":"","sources":["../src/process.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,EAAE,WAAW,EAAE,SAAS,EAAqB,MAAM,eAAe,CAAC;AAE1E,IAAI,WAAsE,CAAC;AAG3E,6BAA6B;AAC7B,MAAM,YAAY,GAAI,UAAkB,CAAC,MAAM,CAAC;AAChD,IAAI,OAAO,YAAY,KAAK,WAAW,IAAI,OAAO,YAAY,CAAC,OAAO,KAAK,WAAW,EAAE,CAAC;IACxF,MAAM,cAAc,GAAiB,YAAY,CAAC,OAAO,CAAC;IAC1D,WAAW,GAAG;QACb,IAAI,QAAQ,KAAK,OAAO,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC;QAClD,IAAI,IAAI,KAAK,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1C,IAAI,GAAG,KAAK,OAAO,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;QACxC,GAAG,KAAK,OAAO,cAAc,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;KACtC,CAAC;AACH,CAAC;AAED,6BAA6B;KACxB,IAAI,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,OAAO,EAAE,QAAQ,EAAE,IAAI,KAAK,QAAQ,EAAE,CAAC;IACxF,WAAW,GAAG;QACb,IAAI,QAAQ,KAAK,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC3C,IAAI,IAAI,KAAK,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QACnC,IAAI,GAAG,KAAK,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;QACjC,GAAG,KAAK,OAAO,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;KAC5D,CAAC;AACH,CAAC;AAED,kBAAkB;KACb,CAAC;IACL,WAAW,GAAG;QAEb,YAAY;QACZ,IAAI,QAAQ,KAAK,OAAO,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;QACjF,IAAI,IAAI,KAAK,OAAO,SAAS,CAAC,CAAC,8BAA8B,CAAC,CAAC;QAE/D,cAAc;QACd,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC,CAAC,CAAC;QACxB,GAAG,KAAK,OAAO,GAAG,CAAC,CAAC,CAAC;KACrB,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC;AAEnC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC;AAEnC;;;GAGG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC;AAE7C;;;;GAIG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC"} \ No newline at end of file diff --git a/packages/core/dist/resources.d.ts b/packages/core/dist/resources.d.ts index 549bf744..65144b58 100644 --- a/packages/core/dist/resources.d.ts +++ b/packages/core/dist/resources.d.ts @@ -1,187 +1,187 @@ -import { URI } from './uri.js'; -export declare function originalFSPath(uri: URI): string; -export interface IExtUri { - /** - * Compares two uris. - * - * @param uri1 Uri - * @param uri2 Uri - * @param ignoreFragment Ignore the fragment (defaults to `false`) - */ - compare(uri1: URI, uri2: URI, ignoreFragment?: boolean): number; - /** - * Tests whether two uris are equal - * - * @param uri1 Uri - * @param uri2 Uri - * @param ignoreFragment Ignore the fragment (defaults to `false`) - */ - isEqual(uri1: URI | undefined, uri2: URI | undefined, ignoreFragment?: boolean): boolean; - /** - * Tests whether a `candidate` URI is a parent or equal of a given `base` URI. - * - * @param base A uri which is "longer" or at least same length as `parentCandidate` - * @param parentCandidate A uri which is "shorter" or up to same length as `base` - * @param ignoreFragment Ignore the fragment (defaults to `false`) - */ - isEqualOrParent(base: URI, parentCandidate: URI, ignoreFragment?: boolean): boolean; - /** - * Creates a key from a resource URI to be used to resource comparison and for resource maps. - * @see {@link ResourceMap} - * @param uri Uri - * @param ignoreFragment Ignore the fragment (defaults to `false`) - */ - getComparisonKey(uri: URI, ignoreFragment?: boolean): string; - /** - * Whether the casing of the path-component of the uri should be ignored. - */ - ignorePathCasing(uri: URI): boolean; - basenameOrAuthority(resource: URI): string; - /** - * Returns the basename of the path component of an uri. - * @param resource - */ - basename(resource: URI): string; - /** - * Returns the extension of the path component of an uri. - * @param resource - */ - extname(resource: URI): string; - /** - * Return a URI representing the directory of a URI path. - * - * @param resource The input URI. - * @returns The URI representing the directory of the input URI. - */ - dirname(resource: URI): URI; - /** - * Join a URI path with path fragments and normalizes the resulting path. - * - * @param resource The input URI. - * @param pathFragment The path fragment to add to the URI path. - * @returns The resulting URI. - */ - joinPath(resource: URI, ...pathFragment: string[]): URI; - /** - * Normalizes the path part of a URI: Resolves `.` and `..` elements with directory names. - * - * @param resource The URI to normalize the path. - * @returns The URI with the normalized path. - */ - normalizePath(resource: URI): URI; - /** - * - * @param from - * @param to - */ - relativePath(from: URI, to: URI): string | undefined; - /** - * Resolves an absolute or relative path against a base URI. - * The path can be relative or absolute posix or a Windows path - */ - resolvePath(base: URI, path: string): URI; - /** - * Returns true if the URI path is absolute. - */ - isAbsolutePath(resource: URI): boolean; - /** - * Tests whether the two authorities are the same - */ - isEqualAuthority(a1: string, a2: string): boolean; - /** - * Returns true if the URI path has a trailing path separator - */ - hasTrailingPathSeparator(resource: URI, sep?: string): boolean; - /** - * Removes a trailing path separator, if there's one. - * Important: Doesn't remove the first slash, it would make the URI invalid - */ - removeTrailingPathSeparator(resource: URI, sep?: string): URI; - /** - * Adds a trailing path separator to the URI if there isn't one already. - * For example, c:\ would be unchanged, but c:\users would become c:\users\ - */ - addTrailingPathSeparator(resource: URI, sep?: string): URI; -} -export declare class ExtUri implements IExtUri { - private _ignorePathCasing; - constructor(_ignorePathCasing: (uri: URI) => boolean); - compare(uri1: URI, uri2: URI, ignoreFragment?: boolean): number; - isEqual(uri1: URI | undefined, uri2: URI | undefined, ignoreFragment?: boolean): boolean; - getComparisonKey(uri: URI, ignoreFragment?: boolean): string; - ignorePathCasing(uri: URI): boolean; - isEqualOrParent(base: URI, parentCandidate: URI, ignoreFragment?: boolean): boolean; - joinPath(resource: URI, ...pathFragment: string[]): URI; - basenameOrAuthority(resource: URI): string; - basename(resource: URI): string; - extname(resource: URI): string; - dirname(resource: URI): URI; - normalizePath(resource: URI): URI; - relativePath(from: URI, to: URI): string | undefined; - resolvePath(base: URI, path: string): URI; - isAbsolutePath(resource: URI): boolean; - isEqualAuthority(a1: string | undefined, a2: string | undefined): boolean; - hasTrailingPathSeparator(resource: URI, sep?: string): boolean; - removeTrailingPathSeparator(resource: URI, sep?: string): URI; - addTrailingPathSeparator(resource: URI, sep?: string): URI; -} -/** - * Unbiased utility that takes uris "as they are". This means it can be interchanged with - * uri#toString() usages. The following is true - * ``` - * assertEqual(aUri.toString() === bUri.toString(), exturi.isEqual(aUri, bUri)) - * ``` - */ -export declare const extUri: ExtUri; -/** - * BIASED utility that _mostly_ ignored the case of urs paths. ONLY use this util if you - * understand what you are doing. - * - * This utility is INCOMPATIBLE with `uri.toString()`-usages and both CANNOT be used interchanged. - * - * When dealing with uris from files or documents, `extUri` (the unbiased friend)is sufficient - * because those uris come from a "trustworthy source". When creating unknown uris it's always - * better to use `IUriIdentityService` which exposes an `IExtUri`-instance which knows when path - * casing matters. - */ -export declare const extUriBiasedIgnorePathCase: ExtUri; -/** - * BIASED utility that always ignores the casing of uris paths. ONLY use this util if you - * understand what you are doing. - * - * This utility is INCOMPATIBLE with `uri.toString()`-usages and both CANNOT be used interchanged. - * - * When dealing with uris from files or documents, `extUri` (the unbiased friend)is sufficient - * because those uris come from a "trustworthy source". When creating unknown uris it's always - * better to use `IUriIdentityService` which exposes an `IExtUri`-instance which knows when path - * casing matters. - */ -export declare const extUriIgnorePathCase: ExtUri; -export declare const isEqual: any; -export declare const isEqualOrParent: any; -export declare const getComparisonKey: any; -export declare const basenameOrAuthority: any; -export declare const basename: any; -export declare const extname: any; -export declare const dirname: any; -export declare const joinPath: any; -export declare const normalizePath: any; -export declare const relativePath: any; -export declare const resolvePath: any; -export declare const isAbsolutePath: any; -export declare const isEqualAuthority: any; -export declare const hasTrailingPathSeparator: any; -export declare const removeTrailingPathSeparator: any; -export declare const addTrailingPathSeparator: any; -export declare function distinctParents(items: T[], resourceAccessor: (item: T) => URI): T[]; -/** - * Data URI related helpers. - */ -export declare namespace DataUri { - const META_DATA_LABEL = "label"; - const META_DATA_DESCRIPTION = "description"; - const META_DATA_SIZE = "size"; - const META_DATA_MIME = "mime"; - function parseMetaData(dataUri: URI): Map; -} -export declare function toLocalResource(resource: URI, authority: string | undefined, localScheme: string): URI; +import { URI } from './uri.js'; +export declare function originalFSPath(uri: URI): string; +export interface IExtUri { + /** + * Compares two uris. + * + * @param uri1 Uri + * @param uri2 Uri + * @param ignoreFragment Ignore the fragment (defaults to `false`) + */ + compare(uri1: URI, uri2: URI, ignoreFragment?: boolean): number; + /** + * Tests whether two uris are equal + * + * @param uri1 Uri + * @param uri2 Uri + * @param ignoreFragment Ignore the fragment (defaults to `false`) + */ + isEqual(uri1: URI | undefined, uri2: URI | undefined, ignoreFragment?: boolean): boolean; + /** + * Tests whether a `candidate` URI is a parent or equal of a given `base` URI. + * + * @param base A uri which is "longer" or at least same length as `parentCandidate` + * @param parentCandidate A uri which is "shorter" or up to same length as `base` + * @param ignoreFragment Ignore the fragment (defaults to `false`) + */ + isEqualOrParent(base: URI, parentCandidate: URI, ignoreFragment?: boolean): boolean; + /** + * Creates a key from a resource URI to be used to resource comparison and for resource maps. + * @see {@link ResourceMap} + * @param uri Uri + * @param ignoreFragment Ignore the fragment (defaults to `false`) + */ + getComparisonKey(uri: URI, ignoreFragment?: boolean): string; + /** + * Whether the casing of the path-component of the uri should be ignored. + */ + ignorePathCasing(uri: URI): boolean; + basenameOrAuthority(resource: URI): string; + /** + * Returns the basename of the path component of an uri. + * @param resource + */ + basename(resource: URI): string; + /** + * Returns the extension of the path component of an uri. + * @param resource + */ + extname(resource: URI): string; + /** + * Return a URI representing the directory of a URI path. + * + * @param resource The input URI. + * @returns The URI representing the directory of the input URI. + */ + dirname(resource: URI): URI; + /** + * Join a URI path with path fragments and normalizes the resulting path. + * + * @param resource The input URI. + * @param pathFragment The path fragment to add to the URI path. + * @returns The resulting URI. + */ + joinPath(resource: URI, ...pathFragment: string[]): URI; + /** + * Normalizes the path part of a URI: Resolves `.` and `..` elements with directory names. + * + * @param resource The URI to normalize the path. + * @returns The URI with the normalized path. + */ + normalizePath(resource: URI): URI; + /** + * + * @param from + * @param to + */ + relativePath(from: URI, to: URI): string | undefined; + /** + * Resolves an absolute or relative path against a base URI. + * The path can be relative or absolute posix or a Windows path + */ + resolvePath(base: URI, path: string): URI; + /** + * Returns true if the URI path is absolute. + */ + isAbsolutePath(resource: URI): boolean; + /** + * Tests whether the two authorities are the same + */ + isEqualAuthority(a1: string, a2: string): boolean; + /** + * Returns true if the URI path has a trailing path separator + */ + hasTrailingPathSeparator(resource: URI, sep?: string): boolean; + /** + * Removes a trailing path separator, if there's one. + * Important: Doesn't remove the first slash, it would make the URI invalid + */ + removeTrailingPathSeparator(resource: URI, sep?: string): URI; + /** + * Adds a trailing path separator to the URI if there isn't one already. + * For example, c:\ would be unchanged, but c:\users would become c:\users\ + */ + addTrailingPathSeparator(resource: URI, sep?: string): URI; +} +export declare class ExtUri implements IExtUri { + private _ignorePathCasing; + constructor(_ignorePathCasing: (uri: URI) => boolean); + compare(uri1: URI, uri2: URI, ignoreFragment?: boolean): number; + isEqual(uri1: URI | undefined, uri2: URI | undefined, ignoreFragment?: boolean): boolean; + getComparisonKey(uri: URI, ignoreFragment?: boolean): string; + ignorePathCasing(uri: URI): boolean; + isEqualOrParent(base: URI, parentCandidate: URI, ignoreFragment?: boolean): boolean; + joinPath(resource: URI, ...pathFragment: string[]): URI; + basenameOrAuthority(resource: URI): string; + basename(resource: URI): string; + extname(resource: URI): string; + dirname(resource: URI): URI; + normalizePath(resource: URI): URI; + relativePath(from: URI, to: URI): string | undefined; + resolvePath(base: URI, path: string): URI; + isAbsolutePath(resource: URI): boolean; + isEqualAuthority(a1: string | undefined, a2: string | undefined): boolean; + hasTrailingPathSeparator(resource: URI, sep?: string): boolean; + removeTrailingPathSeparator(resource: URI, sep?: string): URI; + addTrailingPathSeparator(resource: URI, sep?: string): URI; +} +/** + * Unbiased utility that takes uris "as they are". This means it can be interchanged with + * uri#toString() usages. The following is true + * ``` + * assertEqual(aUri.toString() === bUri.toString(), exturi.isEqual(aUri, bUri)) + * ``` + */ +export declare const extUri: ExtUri; +/** + * BIASED utility that _mostly_ ignored the case of urs paths. ONLY use this util if you + * understand what you are doing. + * + * This utility is INCOMPATIBLE with `uri.toString()`-usages and both CANNOT be used interchanged. + * + * When dealing with uris from files or documents, `extUri` (the unbiased friend)is sufficient + * because those uris come from a "trustworthy source". When creating unknown uris it's always + * better to use `IUriIdentityService` which exposes an `IExtUri`-instance which knows when path + * casing matters. + */ +export declare const extUriBiasedIgnorePathCase: ExtUri; +/** + * BIASED utility that always ignores the casing of uris paths. ONLY use this util if you + * understand what you are doing. + * + * This utility is INCOMPATIBLE with `uri.toString()`-usages and both CANNOT be used interchanged. + * + * When dealing with uris from files or documents, `extUri` (the unbiased friend)is sufficient + * because those uris come from a "trustworthy source". When creating unknown uris it's always + * better to use `IUriIdentityService` which exposes an `IExtUri`-instance which knows when path + * casing matters. + */ +export declare const extUriIgnorePathCase: ExtUri; +export declare const isEqual: any; +export declare const isEqualOrParent: any; +export declare const getComparisonKey: any; +export declare const basenameOrAuthority: any; +export declare const basename: any; +export declare const extname: any; +export declare const dirname: any; +export declare const joinPath: any; +export declare const normalizePath: any; +export declare const relativePath: any; +export declare const resolvePath: any; +export declare const isAbsolutePath: any; +export declare const isEqualAuthority: any; +export declare const hasTrailingPathSeparator: any; +export declare const removeTrailingPathSeparator: any; +export declare const addTrailingPathSeparator: any; +export declare function distinctParents(items: T[], resourceAccessor: (item: T) => URI): T[]; +/** + * Data URI related helpers. + */ +export declare namespace DataUri { + const META_DATA_LABEL = "label"; + const META_DATA_DESCRIPTION = "description"; + const META_DATA_SIZE = "size"; + const META_DATA_MIME = "mime"; + function parseMetaData(dataUri: URI): Map; +} +export declare function toLocalResource(resource: URI, authority: string | undefined, localScheme: string): URI; diff --git a/packages/core/dist/resources.js b/packages/core/dist/resources.js index 7fa1e78c..0f26a78e 100644 --- a/packages/core/dist/resources.js +++ b/packages/core/dist/resources.js @@ -1,288 +1,288 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ -import * as extpath from './extpath.js'; -import { Schemas } from './network.js'; -import * as paths from './path.js'; -import { isLinux, isWindows } from './platform.js'; -import { compare as strCompare, equalsIgnoreCase } from './strings.js'; -import { URI, uriToFsPath } from './uri.js'; -export function originalFSPath(uri) { - return uriToFsPath(uri, true); -} -export class ExtUri { - _ignorePathCasing; - constructor(_ignorePathCasing) { - this._ignorePathCasing = _ignorePathCasing; - } - compare(uri1, uri2, ignoreFragment = false) { - if (uri1 === uri2) { - return 0; - } - return strCompare(this.getComparisonKey(uri1, ignoreFragment), this.getComparisonKey(uri2, ignoreFragment)); - } - isEqual(uri1, uri2, ignoreFragment = false) { - if (uri1 === uri2) { - return true; - } - if (!uri1 || !uri2) { - return false; - } - return this.getComparisonKey(uri1, ignoreFragment) === this.getComparisonKey(uri2, ignoreFragment); - } - getComparisonKey(uri, ignoreFragment = false) { - return uri.with({ - path: this._ignorePathCasing(uri) ? uri.path.toLowerCase() : undefined, - fragment: ignoreFragment ? null : undefined - }).toString(); - } - ignorePathCasing(uri) { - return this._ignorePathCasing(uri); - } - isEqualOrParent(base, parentCandidate, ignoreFragment = false) { - if (base.scheme === parentCandidate.scheme) { - if (base.scheme === Schemas.file) { - return extpath.isEqualOrParent(originalFSPath(base), originalFSPath(parentCandidate), this._ignorePathCasing(base)) && base.query === parentCandidate.query && (ignoreFragment || base.fragment === parentCandidate.fragment); - } - if (isEqualAuthority(base.authority, parentCandidate.authority)) { - return extpath.isEqualOrParent(base.path, parentCandidate.path, this._ignorePathCasing(base), '/') && base.query === parentCandidate.query && (ignoreFragment || base.fragment === parentCandidate.fragment); - } - } - return false; - } - // --- path math - joinPath(resource, ...pathFragment) { - return URI.joinPath(resource, ...pathFragment); - } - basenameOrAuthority(resource) { - return basename(resource) || resource.authority; - } - basename(resource) { - return paths.posix.basename(resource.path); - } - extname(resource) { - return paths.posix.extname(resource.path); - } - dirname(resource) { - if (resource.path.length === 0) { - return resource; - } - let dirname; - if (resource.scheme === Schemas.file) { - dirname = URI.file(paths.dirname(originalFSPath(resource))).path; - } - else { - dirname = paths.posix.dirname(resource.path); - if (resource.authority && dirname.length && dirname.charCodeAt(0) !== 47 /* CharCode.Slash */) { - console.error(`dirname("${resource.toString})) resulted in a relative path`); - dirname = '/'; // If a URI contains an authority component, then the path component must either be empty or begin with a CharCode.Slash ("/") character - } - } - return resource.with({ - path: dirname - }); - } - normalizePath(resource) { - if (!resource.path.length) { - return resource; - } - let normalizedPath; - if (resource.scheme === Schemas.file) { - normalizedPath = URI.file(paths.normalize(originalFSPath(resource))).path; - } - else { - normalizedPath = paths.posix.normalize(resource.path); - } - return resource.with({ - path: normalizedPath - }); - } - relativePath(from, to) { - if (from.scheme !== to.scheme || !isEqualAuthority(from.authority, to.authority)) { - return undefined; - } - if (from.scheme === Schemas.file) { - const relativePath = paths.relative(originalFSPath(from), originalFSPath(to)); - return isWindows ? extpath.toSlashes(relativePath) : relativePath; - } - let fromPath = from.path || '/'; - const toPath = to.path || '/'; - if (this._ignorePathCasing(from)) { - // make casing of fromPath match toPath - let i = 0; - for (const len = Math.min(fromPath.length, toPath.length); i < len; i++) { - if (fromPath.charCodeAt(i) !== toPath.charCodeAt(i)) { - if (fromPath.charAt(i).toLowerCase() !== toPath.charAt(i).toLowerCase()) { - break; - } - } - } - fromPath = toPath.substr(0, i) + fromPath.substr(i); - } - return paths.posix.relative(fromPath, toPath); - } - resolvePath(base, path) { - if (base.scheme === Schemas.file) { - const newURI = URI.file(paths.resolve(originalFSPath(base), path)); - return base.with({ - authority: newURI.authority, - path: newURI.path - }); - } - path = extpath.toPosixPath(path); // we allow path to be a windows path - return base.with({ - path: paths.posix.resolve(base.path, path) - }); - } - // --- misc - isAbsolutePath(resource) { - return !!resource.path && resource.path[0] === '/'; - } - isEqualAuthority(a1, a2) { - return a1 === a2 || (a1 !== undefined && a2 !== undefined && equalsIgnoreCase(a1, a2)); - } - hasTrailingPathSeparator(resource, sep = paths.sep) { - if (resource.scheme === Schemas.file) { - const fsp = originalFSPath(resource); - return fsp.length > extpath.getRoot(fsp).length && fsp[fsp.length - 1] === sep; - } - else { - const p = resource.path; - return (p.length > 1 && p.charCodeAt(p.length - 1) === 47 /* CharCode.Slash */) && !(/^[a-zA-Z]:(\/$|\\$)/.test(resource.fsPath)); // ignore the slash at offset 0 - } - } - removeTrailingPathSeparator(resource, sep = paths.sep) { - // Make sure that the path isn't a drive letter. A trailing separator there is not removable. - if (hasTrailingPathSeparator(resource, sep)) { - return resource.with({ path: resource.path.substr(0, resource.path.length - 1) }); - } - return resource; - } - addTrailingPathSeparator(resource, sep = paths.sep) { - let isRootSep = false; - if (resource.scheme === Schemas.file) { - const fsp = originalFSPath(resource); - isRootSep = ((fsp !== undefined) && (fsp.length === extpath.getRoot(fsp).length) && (fsp[fsp.length - 1] === sep)); - } - else { - sep = '/'; - const p = resource.path; - isRootSep = p.length === 1 && p.charCodeAt(p.length - 1) === 47 /* CharCode.Slash */; - } - if (!isRootSep && !hasTrailingPathSeparator(resource, sep)) { - return resource.with({ path: resource.path + '/' }); - } - return resource; - } -} -/** - * Unbiased utility that takes uris "as they are". This means it can be interchanged with - * uri#toString() usages. The following is true - * ``` - * assertEqual(aUri.toString() === bUri.toString(), exturi.isEqual(aUri, bUri)) - * ``` - */ -export const extUri = new ExtUri(() => false); -/** - * BIASED utility that _mostly_ ignored the case of urs paths. ONLY use this util if you - * understand what you are doing. - * - * This utility is INCOMPATIBLE with `uri.toString()`-usages and both CANNOT be used interchanged. - * - * When dealing with uris from files or documents, `extUri` (the unbiased friend)is sufficient - * because those uris come from a "trustworthy source". When creating unknown uris it's always - * better to use `IUriIdentityService` which exposes an `IExtUri`-instance which knows when path - * casing matters. - */ -export const extUriBiasedIgnorePathCase = new ExtUri(uri => { - // A file scheme resource is in the same platform as code, so ignore case for non linux platforms - // Resource can be from another platform. Lowering the case as an hack. Should come from File system provider - return uri.scheme === Schemas.file ? !isLinux : true; -}); -/** - * BIASED utility that always ignores the casing of uris paths. ONLY use this util if you - * understand what you are doing. - * - * This utility is INCOMPATIBLE with `uri.toString()`-usages and both CANNOT be used interchanged. - * - * When dealing with uris from files or documents, `extUri` (the unbiased friend)is sufficient - * because those uris come from a "trustworthy source". When creating unknown uris it's always - * better to use `IUriIdentityService` which exposes an `IExtUri`-instance which knows when path - * casing matters. - */ -export const extUriIgnorePathCase = new ExtUri(_ => true); -export const isEqual = extUri.isEqual.bind(extUri); -export const isEqualOrParent = extUri.isEqualOrParent.bind(extUri); -export const getComparisonKey = extUri.getComparisonKey.bind(extUri); -export const basenameOrAuthority = extUri.basenameOrAuthority.bind(extUri); -export const basename = extUri.basename.bind(extUri); -export const extname = extUri.extname.bind(extUri); -export const dirname = extUri.dirname.bind(extUri); -export const joinPath = extUri.joinPath.bind(extUri); -export const normalizePath = extUri.normalizePath.bind(extUri); -export const relativePath = extUri.relativePath.bind(extUri); -export const resolvePath = extUri.resolvePath.bind(extUri); -export const isAbsolutePath = extUri.isAbsolutePath.bind(extUri); -export const isEqualAuthority = extUri.isEqualAuthority.bind(extUri); -export const hasTrailingPathSeparator = extUri.hasTrailingPathSeparator.bind(extUri); -export const removeTrailingPathSeparator = extUri.removeTrailingPathSeparator.bind(extUri); -export const addTrailingPathSeparator = extUri.addTrailingPathSeparator.bind(extUri); -//#endregion -export function distinctParents(items, resourceAccessor) { - const distinctParents = []; - for (let i = 0; i < items.length; i++) { - const candidateResource = resourceAccessor(items[i]); - if (items.some((otherItem, index) => { - if (index === i) { - return false; - } - return isEqualOrParent(candidateResource, resourceAccessor(otherItem)); - })) { - continue; - } - distinctParents.push(items[i]); - } - return distinctParents; -} -/** - * Data URI related helpers. - */ -export var DataUri; -(function (DataUri) { - DataUri.META_DATA_LABEL = 'label'; - DataUri.META_DATA_DESCRIPTION = 'description'; - DataUri.META_DATA_SIZE = 'size'; - DataUri.META_DATA_MIME = 'mime'; - function parseMetaData(dataUri) { - const metadata = new Map(); - // Given a URI of: data:image/png;size:2313;label:SomeLabel;description:SomeDescription;base64,77+9UE5... - // the metadata is: size:2313;label:SomeLabel;description:SomeDescription - const meta = dataUri.path.substring(dataUri.path.indexOf(';') + 1, dataUri.path.lastIndexOf(';')); - meta.split(';').forEach(property => { - const [key, value] = property.split(':'); - if (key && value) { - metadata.set(key, value); - } - }); - // Given a URI of: data:image/png;size:2313;label:SomeLabel;description:SomeDescription;base64,77+9UE5... - // the mime is: image/png - const mime = dataUri.path.substring(0, dataUri.path.indexOf(';')); - if (mime) { - metadata.set(DataUri.META_DATA_MIME, mime); - } - return metadata; - } - DataUri.parseMetaData = parseMetaData; -})(DataUri = DataUri || (DataUri = {})); -export function toLocalResource(resource, authority, localScheme) { - if (authority) { - let path = resource.path; - if (path && path[0] !== paths.posix.sep) { - path = paths.posix.sep + path; - } - return resource.with({ scheme: localScheme, authority, path }); - } - return resource.with({ scheme: localScheme }); -} +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +import * as extpath from './extpath.js'; +import { Schemas } from './network.js'; +import * as paths from './path.js'; +import { isLinux, isWindows } from './platform.js'; +import { compare as strCompare, equalsIgnoreCase } from './strings.js'; +import { URI, uriToFsPath } from './uri.js'; +export function originalFSPath(uri) { + return uriToFsPath(uri, true); +} +export class ExtUri { + _ignorePathCasing; + constructor(_ignorePathCasing) { + this._ignorePathCasing = _ignorePathCasing; + } + compare(uri1, uri2, ignoreFragment = false) { + if (uri1 === uri2) { + return 0; + } + return strCompare(this.getComparisonKey(uri1, ignoreFragment), this.getComparisonKey(uri2, ignoreFragment)); + } + isEqual(uri1, uri2, ignoreFragment = false) { + if (uri1 === uri2) { + return true; + } + if (!uri1 || !uri2) { + return false; + } + return this.getComparisonKey(uri1, ignoreFragment) === this.getComparisonKey(uri2, ignoreFragment); + } + getComparisonKey(uri, ignoreFragment = false) { + return uri.with({ + path: this._ignorePathCasing(uri) ? uri.path.toLowerCase() : undefined, + fragment: ignoreFragment ? null : undefined + }).toString(); + } + ignorePathCasing(uri) { + return this._ignorePathCasing(uri); + } + isEqualOrParent(base, parentCandidate, ignoreFragment = false) { + if (base.scheme === parentCandidate.scheme) { + if (base.scheme === Schemas.file) { + return extpath.isEqualOrParent(originalFSPath(base), originalFSPath(parentCandidate), this._ignorePathCasing(base)) && base.query === parentCandidate.query && (ignoreFragment || base.fragment === parentCandidate.fragment); + } + if (isEqualAuthority(base.authority, parentCandidate.authority)) { + return extpath.isEqualOrParent(base.path, parentCandidate.path, this._ignorePathCasing(base), '/') && base.query === parentCandidate.query && (ignoreFragment || base.fragment === parentCandidate.fragment); + } + } + return false; + } + // --- path math + joinPath(resource, ...pathFragment) { + return URI.joinPath(resource, ...pathFragment); + } + basenameOrAuthority(resource) { + return basename(resource) || resource.authority; + } + basename(resource) { + return paths.posix.basename(resource.path); + } + extname(resource) { + return paths.posix.extname(resource.path); + } + dirname(resource) { + if (resource.path.length === 0) { + return resource; + } + let dirname; + if (resource.scheme === Schemas.file) { + dirname = URI.file(paths.dirname(originalFSPath(resource))).path; + } + else { + dirname = paths.posix.dirname(resource.path); + if (resource.authority && dirname.length && dirname.charCodeAt(0) !== 47 /* CharCode.Slash */) { + console.error(`dirname("${resource.toString})) resulted in a relative path`); + dirname = '/'; // If a URI contains an authority component, then the path component must either be empty or begin with a CharCode.Slash ("/") character + } + } + return resource.with({ + path: dirname + }); + } + normalizePath(resource) { + if (!resource.path.length) { + return resource; + } + let normalizedPath; + if (resource.scheme === Schemas.file) { + normalizedPath = URI.file(paths.normalize(originalFSPath(resource))).path; + } + else { + normalizedPath = paths.posix.normalize(resource.path); + } + return resource.with({ + path: normalizedPath + }); + } + relativePath(from, to) { + if (from.scheme !== to.scheme || !isEqualAuthority(from.authority, to.authority)) { + return undefined; + } + if (from.scheme === Schemas.file) { + const relativePath = paths.relative(originalFSPath(from), originalFSPath(to)); + return isWindows ? extpath.toSlashes(relativePath) : relativePath; + } + let fromPath = from.path || '/'; + const toPath = to.path || '/'; + if (this._ignorePathCasing(from)) { + // make casing of fromPath match toPath + let i = 0; + for (const len = Math.min(fromPath.length, toPath.length); i < len; i++) { + if (fromPath.charCodeAt(i) !== toPath.charCodeAt(i)) { + if (fromPath.charAt(i).toLowerCase() !== toPath.charAt(i).toLowerCase()) { + break; + } + } + } + fromPath = toPath.substr(0, i) + fromPath.substr(i); + } + return paths.posix.relative(fromPath, toPath); + } + resolvePath(base, path) { + if (base.scheme === Schemas.file) { + const newURI = URI.file(paths.resolve(originalFSPath(base), path)); + return base.with({ + authority: newURI.authority, + path: newURI.path + }); + } + path = extpath.toPosixPath(path); // we allow path to be a windows path + return base.with({ + path: paths.posix.resolve(base.path, path) + }); + } + // --- misc + isAbsolutePath(resource) { + return !!resource.path && resource.path[0] === '/'; + } + isEqualAuthority(a1, a2) { + return a1 === a2 || (a1 !== undefined && a2 !== undefined && equalsIgnoreCase(a1, a2)); + } + hasTrailingPathSeparator(resource, sep = paths.sep) { + if (resource.scheme === Schemas.file) { + const fsp = originalFSPath(resource); + return fsp.length > extpath.getRoot(fsp).length && fsp[fsp.length - 1] === sep; + } + else { + const p = resource.path; + return (p.length > 1 && p.charCodeAt(p.length - 1) === 47 /* CharCode.Slash */) && !(/^[a-zA-Z]:(\/$|\\$)/.test(resource.fsPath)); // ignore the slash at offset 0 + } + } + removeTrailingPathSeparator(resource, sep = paths.sep) { + // Make sure that the path isn't a drive letter. A trailing separator there is not removable. + if (hasTrailingPathSeparator(resource, sep)) { + return resource.with({ path: resource.path.substr(0, resource.path.length - 1) }); + } + return resource; + } + addTrailingPathSeparator(resource, sep = paths.sep) { + let isRootSep = false; + if (resource.scheme === Schemas.file) { + const fsp = originalFSPath(resource); + isRootSep = ((fsp !== undefined) && (fsp.length === extpath.getRoot(fsp).length) && (fsp[fsp.length - 1] === sep)); + } + else { + sep = '/'; + const p = resource.path; + isRootSep = p.length === 1 && p.charCodeAt(p.length - 1) === 47 /* CharCode.Slash */; + } + if (!isRootSep && !hasTrailingPathSeparator(resource, sep)) { + return resource.with({ path: resource.path + '/' }); + } + return resource; + } +} +/** + * Unbiased utility that takes uris "as they are". This means it can be interchanged with + * uri#toString() usages. The following is true + * ``` + * assertEqual(aUri.toString() === bUri.toString(), exturi.isEqual(aUri, bUri)) + * ``` + */ +export const extUri = new ExtUri(() => false); +/** + * BIASED utility that _mostly_ ignored the case of urs paths. ONLY use this util if you + * understand what you are doing. + * + * This utility is INCOMPATIBLE with `uri.toString()`-usages and both CANNOT be used interchanged. + * + * When dealing with uris from files or documents, `extUri` (the unbiased friend)is sufficient + * because those uris come from a "trustworthy source". When creating unknown uris it's always + * better to use `IUriIdentityService` which exposes an `IExtUri`-instance which knows when path + * casing matters. + */ +export const extUriBiasedIgnorePathCase = new ExtUri(uri => { + // A file scheme resource is in the same platform as code, so ignore case for non linux platforms + // Resource can be from another platform. Lowering the case as an hack. Should come from File system provider + return uri.scheme === Schemas.file ? !isLinux : true; +}); +/** + * BIASED utility that always ignores the casing of uris paths. ONLY use this util if you + * understand what you are doing. + * + * This utility is INCOMPATIBLE with `uri.toString()`-usages and both CANNOT be used interchanged. + * + * When dealing with uris from files or documents, `extUri` (the unbiased friend)is sufficient + * because those uris come from a "trustworthy source". When creating unknown uris it's always + * better to use `IUriIdentityService` which exposes an `IExtUri`-instance which knows when path + * casing matters. + */ +export const extUriIgnorePathCase = new ExtUri(_ => true); +export const isEqual = extUri.isEqual.bind(extUri); +export const isEqualOrParent = extUri.isEqualOrParent.bind(extUri); +export const getComparisonKey = extUri.getComparisonKey.bind(extUri); +export const basenameOrAuthority = extUri.basenameOrAuthority.bind(extUri); +export const basename = extUri.basename.bind(extUri); +export const extname = extUri.extname.bind(extUri); +export const dirname = extUri.dirname.bind(extUri); +export const joinPath = extUri.joinPath.bind(extUri); +export const normalizePath = extUri.normalizePath.bind(extUri); +export const relativePath = extUri.relativePath.bind(extUri); +export const resolvePath = extUri.resolvePath.bind(extUri); +export const isAbsolutePath = extUri.isAbsolutePath.bind(extUri); +export const isEqualAuthority = extUri.isEqualAuthority.bind(extUri); +export const hasTrailingPathSeparator = extUri.hasTrailingPathSeparator.bind(extUri); +export const removeTrailingPathSeparator = extUri.removeTrailingPathSeparator.bind(extUri); +export const addTrailingPathSeparator = extUri.addTrailingPathSeparator.bind(extUri); +//#endregion +export function distinctParents(items, resourceAccessor) { + const distinctParents = []; + for (let i = 0; i < items.length; i++) { + const candidateResource = resourceAccessor(items[i]); + if (items.some((otherItem, index) => { + if (index === i) { + return false; + } + return isEqualOrParent(candidateResource, resourceAccessor(otherItem)); + })) { + continue; + } + distinctParents.push(items[i]); + } + return distinctParents; +} +/** + * Data URI related helpers. + */ +export var DataUri; +(function (DataUri) { + DataUri.META_DATA_LABEL = 'label'; + DataUri.META_DATA_DESCRIPTION = 'description'; + DataUri.META_DATA_SIZE = 'size'; + DataUri.META_DATA_MIME = 'mime'; + function parseMetaData(dataUri) { + const metadata = new Map(); + // Given a URI of: data:image/png;size:2313;label:SomeLabel;description:SomeDescription;base64,77+9UE5... + // the metadata is: size:2313;label:SomeLabel;description:SomeDescription + const meta = dataUri.path.substring(dataUri.path.indexOf(';') + 1, dataUri.path.lastIndexOf(';')); + meta.split(';').forEach(property => { + const [key, value] = property.split(':'); + if (key && value) { + metadata.set(key, value); + } + }); + // Given a URI of: data:image/png;size:2313;label:SomeLabel;description:SomeDescription;base64,77+9UE5... + // the mime is: image/png + const mime = dataUri.path.substring(0, dataUri.path.indexOf(';')); + if (mime) { + metadata.set(DataUri.META_DATA_MIME, mime); + } + return metadata; + } + DataUri.parseMetaData = parseMetaData; +})(DataUri || (DataUri = {})); +export function toLocalResource(resource, authority, localScheme) { + if (authority) { + let path = resource.path; + if (path && path[0] !== paths.posix.sep) { + path = paths.posix.sep + path; + } + return resource.with({ scheme: localScheme, authority, path }); + } + return resource.with({ scheme: localScheme }); +} //# sourceMappingURL=resources.js.map \ No newline at end of file diff --git a/packages/core/dist/resources.js.map b/packages/core/dist/resources.js.map index 17d7121d..54809120 100644 --- a/packages/core/dist/resources.js.map +++ b/packages/core/dist/resources.js.map @@ -1 +1 @@ -{"version":3,"file":"resources.js","sourceRoot":"","sources":["../src/resources.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"resources.js","sourceRoot":"","sources":["../src/resources.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/dist/sequence.d.ts b/packages/core/dist/sequence.d.ts index fb18d215..b5408a3b 100644 --- a/packages/core/dist/sequence.d.ts +++ b/packages/core/dist/sequence.d.ts @@ -1,19 +1,19 @@ -import { Event } from './event.js'; -export interface ISplice { - readonly start: number; - readonly deleteCount: number; - readonly toInsert: readonly T[]; -} -export interface ISpliceable { - splice(start: number, deleteCount: number, toInsert: readonly T[]): void; -} -export interface ISequence { - readonly elements: T[]; - readonly onDidSplice: Event>; -} -export declare class Sequence implements ISequence, ISpliceable { - readonly elements: T[]; - private readonly _onDidSplice; - readonly onDidSplice: Event>; - splice(start: number, deleteCount: number, toInsert?: readonly T[]): void; -} +import { Event } from './event.js'; +export interface ISplice { + readonly start: number; + readonly deleteCount: number; + readonly toInsert: readonly T[]; +} +export interface ISpliceable { + splice(start: number, deleteCount: number, toInsert: readonly T[]): void; +} +export interface ISequence { + readonly elements: T[]; + readonly onDidSplice: Event>; +} +export declare class Sequence implements ISequence, ISpliceable { + readonly elements: T[]; + private readonly _onDidSplice; + readonly onDidSplice: Event>; + splice(start: number, deleteCount: number, toInsert?: readonly T[]): void; +} diff --git a/packages/core/dist/sequence.js b/packages/core/dist/sequence.js index 528c33d0..69701328 100644 --- a/packages/core/dist/sequence.js +++ b/packages/core/dist/sequence.js @@ -1,15 +1,15 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ -import { Emitter } from './event.js'; -export class Sequence { - elements = []; - _onDidSplice = new Emitter(); - onDidSplice = this._onDidSplice.event; - splice(start, deleteCount, toInsert = []) { - this.elements.splice(start, deleteCount, ...toInsert); - this._onDidSplice.fire({ start, deleteCount, toInsert }); - } -} +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +import { Emitter } from './event.js'; +export class Sequence { + elements = []; + _onDidSplice = new Emitter(); + onDidSplice = this._onDidSplice.event; + splice(start, deleteCount, toInsert = []) { + this.elements.splice(start, deleteCount, ...toInsert); + this._onDidSplice.fire({ start, deleteCount, toInsert }); + } +} //# sourceMappingURL=sequence.js.map \ No newline at end of file diff --git a/packages/core/dist/set.d.ts b/packages/core/dist/set.d.ts index d29d1269..95c78300 100644 --- a/packages/core/dist/set.d.ts +++ b/packages/core/dist/set.d.ts @@ -1,9 +1,9 @@ -export declare class ArraySet { - private _elements; - constructor(elements?: T[]); - get size(): number; - set(element: T): void; - contains(element: T): boolean; - unset(element: T): void; - get elements(): T[]; -} +export declare class ArraySet { + private _elements; + constructor(elements?: T[]); + get size(): number; + set(element: T): void; + contains(element: T): boolean; + unset(element: T): void; + get elements(): T[]; +} diff --git a/packages/core/dist/set.js b/packages/core/dist/set.js index a7c7afa0..85e76330 100644 --- a/packages/core/dist/set.js +++ b/packages/core/dist/set.js @@ -1,30 +1,30 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ -export class ArraySet { - _elements; - constructor(elements = []) { - this._elements = elements.slice(); - } - get size() { - return this._elements.length; - } - set(element) { - this.unset(element); - this._elements.push(element); - } - contains(element) { - return this._elements.includes(element); - } - unset(element) { - const index = this._elements.indexOf(element); - if (index > -1) { - this._elements.splice(index, 1); - } - } - get elements() { - return this._elements.slice(); - } -} +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +export class ArraySet { + _elements; + constructor(elements = []) { + this._elements = elements.slice(); + } + get size() { + return this._elements.length; + } + set(element) { + this.unset(element); + this._elements.push(element); + } + contains(element) { + return this._elements.includes(element); + } + unset(element) { + const index = this._elements.indexOf(element); + if (index > -1) { + this._elements.splice(index, 1); + } + } + get elements() { + return this._elements.slice(); + } +} //# sourceMappingURL=set.js.map \ No newline at end of file diff --git a/packages/core/dist/set.js.map b/packages/core/dist/set.js.map index 278d2a76..dc9bd8d7 100644 --- a/packages/core/dist/set.js.map +++ b/packages/core/dist/set.js.map @@ -1 +1 @@ -{"version":3,"file":"set.js","sourceRoot":"","sources":["../src/set.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,MAAM,OAAO,QAAQ;IAEZ,SAAS,CAAM;IAEvB,YAAY,WAAgB,EAAE;QAC7B,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC;IACnC,CAAC;IAED,IAAI,IAAI;QACP,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;IAC9B,CAAC;IAED,GAAG,CAAC,OAAU;QACb,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACpB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IAED,QAAQ,CAAC,OAAU;QAClB,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,OAAU;QACf,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAE9C,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;YACf,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;SAChC;IACF,CAAC;IAED,IAAI,QAAQ;QACX,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IAC/B,CAAC;CACD"} \ No newline at end of file +{"version":3,"file":"set.js","sourceRoot":"","sources":["../src/set.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,MAAM,OAAO,QAAQ;IAEZ,SAAS,CAAM;IAEvB,YAAY,WAAgB,EAAE;QAC7B,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC;IACnC,CAAC;IAED,IAAI,IAAI;QACP,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;IAC9B,CAAC;IAED,GAAG,CAAC,OAAU;QACb,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACpB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IAED,QAAQ,CAAC,OAAU;QAClB,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,OAAU;QACf,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAE9C,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC;YAChB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACjC,CAAC;IACF,CAAC;IAED,IAAI,QAAQ;QACX,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IAC/B,CAAC;CACD"} \ No newline at end of file diff --git a/packages/core/dist/stopwatch.d.ts b/packages/core/dist/stopwatch.d.ts index 875ca075..7bfc8d01 100644 --- a/packages/core/dist/stopwatch.d.ts +++ b/packages/core/dist/stopwatch.d.ts @@ -1,10 +1,10 @@ -export declare class StopWatch { - private _startTime; - private _stopTime; - private readonly _now; - static create(highResolution?: boolean): StopWatch; - constructor(highResolution?: boolean); - stop(): void; - reset(): void; - elapsed(): number; -} +export declare class StopWatch { + private _startTime; + private _stopTime; + private readonly _now; + static create(highResolution?: boolean): StopWatch; + constructor(highResolution?: boolean); + stop(): void; + reset(): void; + elapsed(): number; +} diff --git a/packages/core/dist/stopwatch.js b/packages/core/dist/stopwatch.js index 9d5adf39..c4c6441b 100644 --- a/packages/core/dist/stopwatch.js +++ b/packages/core/dist/stopwatch.js @@ -1,32 +1,32 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ -const hasPerformanceNow = (globalThis.performance && typeof globalThis.performance.now === 'function'); -export class StopWatch { - _startTime; - _stopTime; - _now; - static create(highResolution) { - return new StopWatch(highResolution); - } - constructor(highResolution) { - this._now = hasPerformanceNow && highResolution === false ? Date.now : globalThis.performance.now.bind(globalThis.performance); - this._startTime = this._now(); - this._stopTime = -1; - } - stop() { - this._stopTime = this._now(); - } - reset() { - this._startTime = this._now(); - this._stopTime = -1; - } - elapsed() { - if (this._stopTime !== -1) { - return this._stopTime - this._startTime; - } - return this._now() - this._startTime; - } -} +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +const hasPerformanceNow = (globalThis.performance && typeof globalThis.performance.now === 'function'); +export class StopWatch { + _startTime; + _stopTime; + _now; + static create(highResolution) { + return new StopWatch(highResolution); + } + constructor(highResolution) { + this._now = hasPerformanceNow && highResolution === false ? Date.now : globalThis.performance.now.bind(globalThis.performance); + this._startTime = this._now(); + this._stopTime = -1; + } + stop() { + this._stopTime = this._now(); + } + reset() { + this._startTime = this._now(); + this._stopTime = -1; + } + elapsed() { + if (this._stopTime !== -1) { + return this._stopTime - this._startTime; + } + return this._now() - this._startTime; + } +} //# sourceMappingURL=stopwatch.js.map \ No newline at end of file diff --git a/packages/core/dist/stopwatch.js.map b/packages/core/dist/stopwatch.js.map index cca4ff9c..a13418fa 100644 --- a/packages/core/dist/stopwatch.js.map +++ b/packages/core/dist/stopwatch.js.map @@ -1 +1 @@ -{"version":3,"file":"stopwatch.js","sourceRoot":"","sources":["../src/stopwatch.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAKhG,MAAM,iBAAiB,GAAG,CAAC,UAAU,CAAC,WAAW,IAAI,OAAO,UAAU,CAAC,WAAW,CAAC,GAAG,KAAK,UAAU,CAAC,CAAC;AAEvG,MAAM,OAAO,SAAS;IAEb,UAAU,CAAS;IACnB,SAAS,CAAS;IAET,IAAI,CAAe;IAE7B,MAAM,CAAC,MAAM,CAAC,cAAwB;QAC5C,OAAO,IAAI,SAAS,CAAC,cAAc,CAAC,CAAC;IACtC,CAAC;IAED,YAAY,cAAwB;QACnC,IAAI,CAAC,IAAI,GAAG,iBAAiB,IAAI,cAAc,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,WAAY,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QAChI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC9B,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;IACrB,CAAC;IAEM,IAAI;QACV,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC9B,CAAC;IAEM,KAAK;QACX,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC9B,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;IACrB,CAAC;IAEM,OAAO;QACb,IAAI,IAAI,CAAC,SAAS,KAAK,CAAC,CAAC,EAAE;YAC1B,OAAO,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC;SACxC;QACD,OAAO,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC;IACtC,CAAC;CACD"} \ No newline at end of file +{"version":3,"file":"stopwatch.js","sourceRoot":"","sources":["../src/stopwatch.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAKhG,MAAM,iBAAiB,GAAG,CAAC,UAAU,CAAC,WAAW,IAAI,OAAO,UAAU,CAAC,WAAW,CAAC,GAAG,KAAK,UAAU,CAAC,CAAC;AAEvG,MAAM,OAAO,SAAS;IAEb,UAAU,CAAS;IACnB,SAAS,CAAS;IAET,IAAI,CAAe;IAE7B,MAAM,CAAC,MAAM,CAAC,cAAwB;QAC5C,OAAO,IAAI,SAAS,CAAC,cAAc,CAAC,CAAC;IACtC,CAAC;IAED,YAAY,cAAwB;QACnC,IAAI,CAAC,IAAI,GAAG,iBAAiB,IAAI,cAAc,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,WAAY,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QAChI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC9B,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;IACrB,CAAC;IAEM,IAAI;QACV,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC9B,CAAC;IAEM,KAAK;QACX,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC9B,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;IACrB,CAAC;IAEM,OAAO;QACb,IAAI,IAAI,CAAC,SAAS,KAAK,CAAC,CAAC,EAAE,CAAC;YAC3B,OAAO,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC;QACzC,CAAC;QACD,OAAO,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC;IACtC,CAAC;CACD"} \ No newline at end of file diff --git a/packages/core/dist/strings.d.ts b/packages/core/dist/strings.d.ts index eac02178..ee54d5e5 100644 --- a/packages/core/dist/strings.d.ts +++ b/packages/core/dist/strings.d.ts @@ -1,259 +1,259 @@ -export declare const empty = ""; -export declare const substitute: (template: any, map: any) => any; -export declare const substituteAlt: (template: any, map: any) => any; -export declare function isFalsyOrWhitespace(str: string | undefined): boolean; -/** - * Helper to produce a string with a variable number of arguments. Insert variable segments - * into the string using the {n} notation where N is the index of the argument following the string. - * @param value string to which formatting is applied - * @param args replacements for {n}-entries - */ -export declare function format(value: string, ...args: any[]): string; -/** - * Helper to create a string from a template and a string record. - * Similar to `format` but with objects instead of positional arguments. - */ -export declare function format2(template: string, values: Record): string; -/** - * Encodes the given value so that it can be used as literal value in html attributes. - * - * In other words, computes `$val`, such that `attr` in `
` has the runtime value `value`. - * This prevents XSS injection. - */ -export declare function htmlAttributeEncodeValue(value: string): string; -/** - * Converts HTML characters inside the string to use entities instead. Makes the string safe from - * being used e.g. in HTMLElement.innerHTML. - */ -export declare function escape(html: string): string; -/** - * Escapes regular expression characters in a given string - */ -export declare function escapeRegExpCharacters(value: string): string; -/** - * Counts how often `substr` occurs inside `value`. - */ -export declare function count(value: string, substr: string): number; -export declare function truncate(value: string, maxLength: number, suffix?: string): string; -export declare function truncateMiddle(value: string, maxLength: number, suffix?: string): string; -/** - * Removes all occurrences of needle from the beginning and end of haystack. - * @param haystack string to trim - * @param needle the thing to trim (default is a blank) - */ -export declare function trim(haystack: string, needle?: string): string; -/** - * Removes all occurrences of needle from the beginning of haystack. - * @param haystack string to trim - * @param needle the thing to trim - */ -export declare function ltrim(haystack: string, needle: string): string; -/** - * Removes all occurrences of needle from the end of haystack. - * @param haystack string to trim - * @param needle the thing to trim - */ -export declare function rtrim(haystack: string, needle: string): string; -export declare function convertSimple2RegExpPattern(pattern: string): string; -export declare function stripWildcards(pattern: string): string; -export interface RegExpOptions { - matchCase?: boolean; - wholeWord?: boolean; - multiline?: boolean; - global?: boolean; - unicode?: boolean; -} -export declare function createRegExp(searchString: string, isRegex: boolean, options?: RegExpOptions): RegExp; -export declare function regExpLeadsToEndlessLoop(regexp: RegExp): boolean; -export declare function joinStrings(items: (string | undefined | null | false)[], separator: string): string; -export declare function splitLines(str: string): string[]; -export declare function splitLinesIncludeSeparators(str: string): string[]; -/** - * Returns first index of the string that is not whitespace. - * If string is empty or contains only whitespaces, returns -1 - */ -export declare function firstNonWhitespaceIndex(str: string): number; -/** - * Returns the leading whitespace of the string. - * If the string contains only whitespaces, returns entire string - */ -export declare function getLeadingWhitespace(str: string, start?: number, end?: number): string; -/** - * Returns last index of the string that is not whitespace. - * If string is empty or contains only whitespaces, returns -1 - */ -export declare function lastNonWhitespaceIndex(str: string, startIndex?: number): number; -export declare function getIndentationLength(str: string): number; -/** - * Function that works identically to String.prototype.replace, except, the - * replace function is allowed to be async and return a Promise. - */ -export declare function replaceAsync(str: string, search: RegExp, replacer: (match: string, ...args: any[]) => Promise): Promise; -export declare function compare(a: string, b: string): number; -export declare function compareSubstring(a: string, b: string, aStart?: number, aEnd?: number, bStart?: number, bEnd?: number): number; -export declare function compareIgnoreCase(a: string, b: string): number; -export declare function compareSubstringIgnoreCase(a: string, b: string, aStart?: number, aEnd?: number, bStart?: number, bEnd?: number): number; -export declare function isAsciiDigit(code: number): boolean; -export declare function isLowerAsciiLetter(code: number): boolean; -export declare function isUpperAsciiLetter(code: number): boolean; -export declare function equalsIgnoreCase(a: string, b: string): boolean; -export declare function startsWithIgnoreCase(str: string, candidate: string): boolean; -/** - * @returns the length of the common prefix of the two strings. - */ -export declare function commonPrefixLength(a: string, b: string): number; -/** - * @returns the length of the common suffix of the two strings. - */ -export declare function commonSuffixLength(a: string, b: string): number; -/** - * See http://en.wikipedia.org/wiki/Surrogate_pair - */ -export declare function isHighSurrogate(charCode: number): boolean; -/** - * See http://en.wikipedia.org/wiki/Surrogate_pair - */ -export declare function isLowSurrogate(charCode: number): boolean; -/** - * See http://en.wikipedia.org/wiki/Surrogate_pair - */ -export declare function computeCodePoint(highSurrogate: number, lowSurrogate: number): number; -/** - * get the code point that begins at offset `offset` - */ -export declare function getNextCodePoint(str: string, len: number, offset: number): number; -export declare class CodePointIterator { - private readonly _str; - private readonly _len; - private _offset; - get offset(): number; - constructor(str: string, offset?: number); - setOffset(offset: number): void; - prevCodePoint(): number; - nextCodePoint(): number; - eol(): boolean; -} -export declare class GraphemeIterator { - private readonly _iterator; - get offset(): number; - constructor(str: string, offset?: number); - nextGraphemeLength(): number; - prevGraphemeLength(): number; - eol(): boolean; -} -export declare function nextCharLength(str: string, initialOffset: number): number; -export declare function prevCharLength(str: string, initialOffset: number): number; -export declare function getCharContainingOffset(str: string, offset: number): [number, number]; -export declare function charCount(str: string): number; -/** - * Returns true if `str` contains any Unicode character that is classified as "R" or "AL". - */ -export declare function containsRTL(str: string): boolean; -/** - * Returns true if `str` contains only basic ASCII characters in the range 32 - 126 (including 32 and 126) or \n, \r, \t - */ -export declare function isBasicASCII(str: string): boolean; -export declare const UNUSUAL_LINE_TERMINATORS: RegExp; -/** - * Returns true if `str` contains unusual line terminators, like LS or PS - */ -export declare function containsUnusualLineTerminators(str: string): boolean; -export declare function isFullWidthCharacter(charCode: number): boolean; -/** - * A fast function (therefore imprecise) to check if code points are emojis. - * Generated using https://github.com/alexdima/unicode-utils/blob/main/emoji-test.js - */ -export declare function isEmojiImprecise(x: number): boolean; -/** - * Given a string and a max length returns a shorted version. Shorting - * happens at favorable positions - such as whitespace or punctuation characters. - * The return value can be longer than the given value of `n`. Leading whitespace is always trimmed. - */ -export declare function lcut(text: string, n: number, prefix?: string): string; -/** Iterates over parts of a string with CSI sequences */ -export declare function forAnsiStringParts(str: string): Generator<{ - isCode: boolean; - str: string; -}, void, unknown>; -/** - * Strips ANSI escape sequences from a string. - * @param str The dastringa stringo strip the ANSI escape sequences from. - * - * @example - * removeAnsiEscapeCodes('\u001b[31mHello, World!\u001b[0m'); - * // 'Hello, World!' - */ -export declare function removeAnsiEscapeCodes(str: string): string; -/** - * Strips ANSI escape sequences from a UNIX-style prompt string (eg. `$PS1`). - * @param str The string to strip the ANSI escape sequences from. - * - * @example - * removeAnsiEscapeCodesFromPrompt('\n\\[\u001b[01;34m\\]\\w\\[\u001b[00m\\]\n\\[\u001b[1;32m\\]> \\[\u001b[0m\\]'); - * // '\n\\w\n> ' - */ -export declare function removeAnsiEscapeCodesFromPrompt(str: string): string; -export declare const UTF8_BOM_CHARACTER: string; -export declare function startsWithUTF8BOM(str: string): boolean; -export declare function stripUTF8BOM(str: string): string; -/** - * Checks if the characters of the provided query string are included in the - * target string. The characters do not have to be contiguous within the string. - */ -export declare function fuzzyContains(target: string, query: string): boolean; -export declare function containsUppercaseCharacter(target: string, ignoreEscapedChars?: boolean): boolean; -export declare function uppercaseFirstLetter(str: string): string; -export declare function getNLines(str: string, n?: number): string; -/** - * Produces 'a'-'z', followed by 'A'-'Z'... followed by 'a'-'z', etc. - */ -export declare function singleLetterHash(n: number): string; -export declare function getGraphemeBreakType(codePoint: number): GraphemeBreakType; -export declare const enum GraphemeBreakType { - Other = 0, - Prepend = 1, - CR = 2, - LF = 3, - Control = 4, - Extend = 5, - Regional_Indicator = 6, - SpacingMark = 7, - L = 8, - V = 9, - T = 10, - LV = 11, - LVT = 12, - ZWJ = 13, - Extended_Pictographic = 14 -} -/** - * Computes the offset after performing a left delete on the given string, - * while considering unicode grapheme/emoji rules. -*/ -export declare function getLeftDeleteOffset(offset: number, str: string): number; -export declare const noBreakWhitespace = "\u00A0"; -export declare class AmbiguousCharacters { - private readonly confusableDictionary; - private static readonly ambiguousCharacterData; - private static readonly cache; - static getInstance(locales: Set): AmbiguousCharacters; - private static _locales; - static getLocales(): string[]; - private constructor(); - isAmbiguous(codePoint: number): boolean; - containsAmbiguousCharacter(str: string): boolean; - /** - * Returns the non basic ASCII code point that the given code point can be confused, - * or undefined if such code point does note exist. - */ - getPrimaryConfusable(codePoint: number): number | undefined; - getConfusableCodePoints(): ReadonlySet; -} -export declare class InvisibleCharacters { - private static getRawData; - private static _data; - private static getData; - static isInvisibleCharacter(codePoint: number): boolean; - static containsInvisibleCharacter(str: string): boolean; - static get codePoints(): ReadonlySet; -} +export declare const empty = ""; +export declare const substitute: (template: any, map: any) => any; +export declare const substituteAlt: (template: any, map: any) => any; +export declare function isFalsyOrWhitespace(str: string | undefined): boolean; +/** + * Helper to produce a string with a variable number of arguments. Insert variable segments + * into the string using the {n} notation where N is the index of the argument following the string. + * @param value string to which formatting is applied + * @param args replacements for {n}-entries + */ +export declare function format(value: string, ...args: any[]): string; +/** + * Helper to create a string from a template and a string record. + * Similar to `format` but with objects instead of positional arguments. + */ +export declare function format2(template: string, values: Record): string; +/** + * Encodes the given value so that it can be used as literal value in html attributes. + * + * In other words, computes `$val`, such that `attr` in `
` has the runtime value `value`. + * This prevents XSS injection. + */ +export declare function htmlAttributeEncodeValue(value: string): string; +/** + * Converts HTML characters inside the string to use entities instead. Makes the string safe from + * being used e.g. in HTMLElement.innerHTML. + */ +export declare function escape(html: string): string; +/** + * Escapes regular expression characters in a given string + */ +export declare function escapeRegExpCharacters(value: string): string; +/** + * Counts how often `substr` occurs inside `value`. + */ +export declare function count(value: string, substr: string): number; +export declare function truncate(value: string, maxLength: number, suffix?: string): string; +export declare function truncateMiddle(value: string, maxLength: number, suffix?: string): string; +/** + * Removes all occurrences of needle from the beginning and end of haystack. + * @param haystack string to trim + * @param needle the thing to trim (default is a blank) + */ +export declare function trim(haystack: string, needle?: string): string; +/** + * Removes all occurrences of needle from the beginning of haystack. + * @param haystack string to trim + * @param needle the thing to trim + */ +export declare function ltrim(haystack: string, needle: string): string; +/** + * Removes all occurrences of needle from the end of haystack. + * @param haystack string to trim + * @param needle the thing to trim + */ +export declare function rtrim(haystack: string, needle: string): string; +export declare function convertSimple2RegExpPattern(pattern: string): string; +export declare function stripWildcards(pattern: string): string; +export interface RegExpOptions { + matchCase?: boolean; + wholeWord?: boolean; + multiline?: boolean; + global?: boolean; + unicode?: boolean; +} +export declare function createRegExp(searchString: string, isRegex: boolean, options?: RegExpOptions): RegExp; +export declare function regExpLeadsToEndlessLoop(regexp: RegExp): boolean; +export declare function joinStrings(items: (string | undefined | null | false)[], separator: string): string; +export declare function splitLines(str: string): string[]; +export declare function splitLinesIncludeSeparators(str: string): string[]; +/** + * Returns first index of the string that is not whitespace. + * If string is empty or contains only whitespaces, returns -1 + */ +export declare function firstNonWhitespaceIndex(str: string): number; +/** + * Returns the leading whitespace of the string. + * If the string contains only whitespaces, returns entire string + */ +export declare function getLeadingWhitespace(str: string, start?: number, end?: number): string; +/** + * Returns last index of the string that is not whitespace. + * If string is empty or contains only whitespaces, returns -1 + */ +export declare function lastNonWhitespaceIndex(str: string, startIndex?: number): number; +export declare function getIndentationLength(str: string): number; +/** + * Function that works identically to String.prototype.replace, except, the + * replace function is allowed to be async and return a Promise. + */ +export declare function replaceAsync(str: string, search: RegExp, replacer: (match: string, ...args: any[]) => Promise): Promise; +export declare function compare(a: string, b: string): number; +export declare function compareSubstring(a: string, b: string, aStart?: number, aEnd?: number, bStart?: number, bEnd?: number): number; +export declare function compareIgnoreCase(a: string, b: string): number; +export declare function compareSubstringIgnoreCase(a: string, b: string, aStart?: number, aEnd?: number, bStart?: number, bEnd?: number): number; +export declare function isAsciiDigit(code: number): boolean; +export declare function isLowerAsciiLetter(code: number): boolean; +export declare function isUpperAsciiLetter(code: number): boolean; +export declare function equalsIgnoreCase(a: string, b: string): boolean; +export declare function startsWithIgnoreCase(str: string, candidate: string): boolean; +/** + * @returns the length of the common prefix of the two strings. + */ +export declare function commonPrefixLength(a: string, b: string): number; +/** + * @returns the length of the common suffix of the two strings. + */ +export declare function commonSuffixLength(a: string, b: string): number; +/** + * See http://en.wikipedia.org/wiki/Surrogate_pair + */ +export declare function isHighSurrogate(charCode: number): boolean; +/** + * See http://en.wikipedia.org/wiki/Surrogate_pair + */ +export declare function isLowSurrogate(charCode: number): boolean; +/** + * See http://en.wikipedia.org/wiki/Surrogate_pair + */ +export declare function computeCodePoint(highSurrogate: number, lowSurrogate: number): number; +/** + * get the code point that begins at offset `offset` + */ +export declare function getNextCodePoint(str: string, len: number, offset: number): number; +export declare class CodePointIterator { + private readonly _str; + private readonly _len; + private _offset; + get offset(): number; + constructor(str: string, offset?: number); + setOffset(offset: number): void; + prevCodePoint(): number; + nextCodePoint(): number; + eol(): boolean; +} +export declare class GraphemeIterator { + private readonly _iterator; + get offset(): number; + constructor(str: string, offset?: number); + nextGraphemeLength(): number; + prevGraphemeLength(): number; + eol(): boolean; +} +export declare function nextCharLength(str: string, initialOffset: number): number; +export declare function prevCharLength(str: string, initialOffset: number): number; +export declare function getCharContainingOffset(str: string, offset: number): [number, number]; +export declare function charCount(str: string): number; +/** + * Returns true if `str` contains any Unicode character that is classified as "R" or "AL". + */ +export declare function containsRTL(str: string): boolean; +/** + * Returns true if `str` contains only basic ASCII characters in the range 32 - 126 (including 32 and 126) or \n, \r, \t + */ +export declare function isBasicASCII(str: string): boolean; +export declare const UNUSUAL_LINE_TERMINATORS: RegExp; +/** + * Returns true if `str` contains unusual line terminators, like LS or PS + */ +export declare function containsUnusualLineTerminators(str: string): boolean; +export declare function isFullWidthCharacter(charCode: number): boolean; +/** + * A fast function (therefore imprecise) to check if code points are emojis. + * Generated using https://github.com/alexdima/unicode-utils/blob/main/emoji-test.js + */ +export declare function isEmojiImprecise(x: number): boolean; +/** + * Given a string and a max length returns a shorted version. Shorting + * happens at favorable positions - such as whitespace or punctuation characters. + * The return value can be longer than the given value of `n`. Leading whitespace is always trimmed. + */ +export declare function lcut(text: string, n: number, prefix?: string): string; +/** Iterates over parts of a string with CSI sequences */ +export declare function forAnsiStringParts(str: string): Generator<{ + isCode: boolean; + str: string; +}, void, unknown>; +/** + * Strips ANSI escape sequences from a string. + * @param str The dastringa stringo strip the ANSI escape sequences from. + * + * @example + * removeAnsiEscapeCodes('\u001b[31mHello, World!\u001b[0m'); + * // 'Hello, World!' + */ +export declare function removeAnsiEscapeCodes(str: string): string; +/** + * Strips ANSI escape sequences from a UNIX-style prompt string (eg. `$PS1`). + * @param str The string to strip the ANSI escape sequences from. + * + * @example + * removeAnsiEscapeCodesFromPrompt('\n\\[\u001b[01;34m\\]\\w\\[\u001b[00m\\]\n\\[\u001b[1;32m\\]> \\[\u001b[0m\\]'); + * // '\n\\w\n> ' + */ +export declare function removeAnsiEscapeCodesFromPrompt(str: string): string; +export declare const UTF8_BOM_CHARACTER: string; +export declare function startsWithUTF8BOM(str: string): boolean; +export declare function stripUTF8BOM(str: string): string; +/** + * Checks if the characters of the provided query string are included in the + * target string. The characters do not have to be contiguous within the string. + */ +export declare function fuzzyContains(target: string, query: string): boolean; +export declare function containsUppercaseCharacter(target: string, ignoreEscapedChars?: boolean): boolean; +export declare function uppercaseFirstLetter(str: string): string; +export declare function getNLines(str: string, n?: number): string; +/** + * Produces 'a'-'z', followed by 'A'-'Z'... followed by 'a'-'z', etc. + */ +export declare function singleLetterHash(n: number): string; +export declare function getGraphemeBreakType(codePoint: number): GraphemeBreakType; +export declare const enum GraphemeBreakType { + Other = 0, + Prepend = 1, + CR = 2, + LF = 3, + Control = 4, + Extend = 5, + Regional_Indicator = 6, + SpacingMark = 7, + L = 8, + V = 9, + T = 10, + LV = 11, + LVT = 12, + ZWJ = 13, + Extended_Pictographic = 14 +} +/** + * Computes the offset after performing a left delete on the given string, + * while considering unicode grapheme/emoji rules. +*/ +export declare function getLeftDeleteOffset(offset: number, str: string): number; +export declare const noBreakWhitespace = "\u00A0"; +export declare class AmbiguousCharacters { + private readonly confusableDictionary; + private static readonly ambiguousCharacterData; + private static readonly cache; + static getInstance(locales: Set): AmbiguousCharacters; + private static _locales; + static getLocales(): string[]; + private constructor(); + isAmbiguous(codePoint: number): boolean; + containsAmbiguousCharacter(str: string): boolean; + /** + * Returns the non basic ASCII code point that the given code point can be confused, + * or undefined if such code point does note exist. + */ + getPrimaryConfusable(codePoint: number): number | undefined; + getConfusableCodePoints(): ReadonlySet; +} +export declare class InvisibleCharacters { + private static getRawData; + private static _data; + private static getData; + static isInvisibleCharacter(codePoint: number): boolean; + static containsInvisibleCharacter(str: string): boolean; + static get codePoints(): ReadonlySet; +} diff --git a/packages/core/dist/strings.js b/packages/core/dist/strings.js index fc2819af..95861866 100644 --- a/packages/core/dist/strings.js +++ b/packages/core/dist/strings.js @@ -1,1100 +1,1100 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ -'use strict'; -export const empty = ''; -import { REGEX_VAR, REGEX_VAR_ALT } from "./constants.js"; -export const substitute = (template, map) => { - const transform = (k) => k || ''; - return template.replace(REGEX_VAR, (match, key, format) => transform(map[key]).toString()); -}; -export const substituteAlt = (template, map) => { - const transform = (k) => k || ''; - return template.replace(REGEX_VAR_ALT, (match, key, format) => transform(map[key]).toString()); -}; -import { LRUCachedFunction } from './cache.js'; -import { Lazy } from './lazy.js'; -export function isFalsyOrWhitespace(str) { - if (!str || typeof str !== 'string') { - return true; - } - return str.trim().length === 0; -} -const _formatRegexp = /{(\d+)}/g; -/** - * Helper to produce a string with a variable number of arguments. Insert variable segments - * into the string using the {n} notation where N is the index of the argument following the string. - * @param value string to which formatting is applied - * @param args replacements for {n}-entries - */ -export function format(value, ...args) { - if (args.length === 0) { - return value; - } - return value.replace(_formatRegexp, function (match, group) { - const idx = parseInt(group, 10); - return isNaN(idx) || idx < 0 || idx >= args.length ? - match : - args[idx]; - }); -} -const _format2Regexp = /{([^}]+)}/g; -/** - * Helper to create a string from a template and a string record. - * Similar to `format` but with objects instead of positional arguments. - */ -export function format2(template, values) { - if (Object.keys(values).length === 0) { - return template; - } - return template.replace(_format2Regexp, (match, group) => (values[group] ?? match)); -} -/** - * Encodes the given value so that it can be used as literal value in html attributes. - * - * In other words, computes `$val`, such that `attr` in `
` has the runtime value `value`. - * This prevents XSS injection. - */ -export function htmlAttributeEncodeValue(value) { - return value.replace(/[<>"'&]/g, ch => { - switch (ch) { - case '<': return '<'; - case '>': return '>'; - case '"': return '"'; - case '\'': return '''; - case '&': return '&'; - } - return ch; - }); -} -/** - * Converts HTML characters inside the string to use entities instead. Makes the string safe from - * being used e.g. in HTMLElement.innerHTML. - */ -export function escape(html) { - return html.replace(/[<>&]/g, function (match) { - switch (match) { - case '<': return '<'; - case '>': return '>'; - case '&': return '&'; - default: return match; - } - }); -} -/** - * Escapes regular expression characters in a given string - */ -export function escapeRegExpCharacters(value) { - return value.replace(/[\\\{\}\*\+\?\|\^\$\.\[\]\(\)]/g, '\\$&'); -} -/** - * Counts how often `substr` occurs inside `value`. - */ -export function count(value, substr) { - let result = 0; - let index = value.indexOf(substr); - while (index !== -1) { - result++; - index = value.indexOf(substr, index + substr.length); - } - return result; -} -export function truncate(value, maxLength, suffix = '…') { - if (value.length <= maxLength) { - return value; - } - return `${value.substr(0, maxLength)}${suffix}`; -} -export function truncateMiddle(value, maxLength, suffix = '…') { - if (value.length <= maxLength) { - return value; - } - const prefixLength = Math.ceil(maxLength / 2) - suffix.length / 2; - const suffixLength = Math.floor(maxLength / 2) - suffix.length / 2; - return `${value.substr(0, prefixLength)}${suffix}${value.substr(value.length - suffixLength)}`; -} -/** - * Removes all occurrences of needle from the beginning and end of haystack. - * @param haystack string to trim - * @param needle the thing to trim (default is a blank) - */ -export function trim(haystack, needle = ' ') { - const trimmed = ltrim(haystack, needle); - return rtrim(trimmed, needle); -} -/** - * Removes all occurrences of needle from the beginning of haystack. - * @param haystack string to trim - * @param needle the thing to trim - */ -export function ltrim(haystack, needle) { - if (!haystack || !needle) { - return haystack; - } - const needleLen = needle.length; - if (needleLen === 0 || haystack.length === 0) { - return haystack; - } - let offset = 0; - while (haystack.indexOf(needle, offset) === offset) { - offset = offset + needleLen; - } - return haystack.substring(offset); -} -/** - * Removes all occurrences of needle from the end of haystack. - * @param haystack string to trim - * @param needle the thing to trim - */ -export function rtrim(haystack, needle) { - if (!haystack || !needle) { - return haystack; - } - const needleLen = needle.length, haystackLen = haystack.length; - if (needleLen === 0 || haystackLen === 0) { - return haystack; - } - let offset = haystackLen, idx = -1; - while (true) { - idx = haystack.lastIndexOf(needle, offset - 1); - if (idx === -1 || idx + needleLen !== offset) { - break; - } - if (idx === 0) { - return ''; - } - offset = idx; - } - return haystack.substring(0, offset); -} -export function convertSimple2RegExpPattern(pattern) { - return pattern.replace(/[\-\\\{\}\+\?\|\^\$\.\,\[\]\(\)\#\s]/g, '\\$&').replace(/[\*]/g, '.*'); -} -export function stripWildcards(pattern) { - return pattern.replace(/\*/g, ''); -} -export function createRegExp(searchString, isRegex, options = {}) { - if (!searchString) { - throw new Error('Cannot create regex from empty string'); - } - if (!isRegex) { - searchString = escapeRegExpCharacters(searchString); - } - if (options.wholeWord) { - if (!/\B/.test(searchString.charAt(0))) { - searchString = '\\b' + searchString; - } - if (!/\B/.test(searchString.charAt(searchString.length - 1))) { - searchString = searchString + '\\b'; - } - } - let modifiers = ''; - if (options.global) { - modifiers += 'g'; - } - if (!options.matchCase) { - modifiers += 'i'; - } - if (options.multiline) { - modifiers += 'm'; - } - if (options.unicode) { - modifiers += 'u'; - } - return new RegExp(searchString, modifiers); -} -export function regExpLeadsToEndlessLoop(regexp) { - // Exit early if it's one of these special cases which are meant to match - // against an empty string - if (regexp.source === '^' || regexp.source === '^$' || regexp.source === '$' || regexp.source === '^\\s*$') { - return false; - } - // We check against an empty string. If the regular expression doesn't advance - // (e.g. ends in an endless loop) it will match an empty string. - const match = regexp.exec(''); - return !!(match && regexp.lastIndex === 0); -} -export function joinStrings(items, separator) { - return items.filter(item => item !== undefined && item !== null && item !== false).join(separator); -} -export function splitLines(str) { - return str.split(/\r\n|\r|\n/); -} -export function splitLinesIncludeSeparators(str) { - const linesWithSeparators = []; - const splitLinesAndSeparators = str.split(/(\r\n|\r|\n)/); - for (let i = 0; i < Math.ceil(splitLinesAndSeparators.length / 2); i++) { - linesWithSeparators.push(splitLinesAndSeparators[2 * i] + (splitLinesAndSeparators[2 * i + 1] ?? '')); - } - return linesWithSeparators; -} -/** - * Returns first index of the string that is not whitespace. - * If string is empty or contains only whitespaces, returns -1 - */ -export function firstNonWhitespaceIndex(str) { - for (let i = 0, len = str.length; i < len; i++) { - const chCode = str.charCodeAt(i); - if (chCode !== 32 /* CharCode.Space */ && chCode !== 9 /* CharCode.Tab */) { - return i; - } - } - return -1; -} -/** - * Returns the leading whitespace of the string. - * If the string contains only whitespaces, returns entire string - */ -export function getLeadingWhitespace(str, start = 0, end = str.length) { - for (let i = start; i < end; i++) { - const chCode = str.charCodeAt(i); - if (chCode !== 32 /* CharCode.Space */ && chCode !== 9 /* CharCode.Tab */) { - return str.substring(start, i); - } - } - return str.substring(start, end); -} -/** - * Returns last index of the string that is not whitespace. - * If string is empty or contains only whitespaces, returns -1 - */ -export function lastNonWhitespaceIndex(str, startIndex = str.length - 1) { - for (let i = startIndex; i >= 0; i--) { - const chCode = str.charCodeAt(i); - if (chCode !== 32 /* CharCode.Space */ && chCode !== 9 /* CharCode.Tab */) { - return i; - } - } - return -1; -} -export function getIndentationLength(str) { - const idx = firstNonWhitespaceIndex(str); - if (idx === -1) { - return str.length; - } - return idx; -} -/** - * Function that works identically to String.prototype.replace, except, the - * replace function is allowed to be async and return a Promise. - */ -export function replaceAsync(str, search, replacer) { - const parts = []; - let last = 0; - for (const match of str.matchAll(search)) { - parts.push(str.slice(last, match.index)); - if (match.index === undefined) { - throw new Error('match.index should be defined'); - } - last = match.index + match[0].length; - parts.push(replacer(match[0], ...match.slice(1), match.index, str, match.groups)); - } - parts.push(str.slice(last)); - return Promise.all(parts).then(p => p.join('')); -} -export function compare(a, b) { - if (a < b) { - return -1; - } - else if (a > b) { - return 1; - } - else { - return 0; - } -} -export function compareSubstring(a, b, aStart = 0, aEnd = a.length, bStart = 0, bEnd = b.length) { - for (; aStart < aEnd && bStart < bEnd; aStart++, bStart++) { - const codeA = a.charCodeAt(aStart); - const codeB = b.charCodeAt(bStart); - if (codeA < codeB) { - return -1; - } - else if (codeA > codeB) { - return 1; - } - } - const aLen = aEnd - aStart; - const bLen = bEnd - bStart; - if (aLen < bLen) { - return -1; - } - else if (aLen > bLen) { - return 1; - } - return 0; -} -export function compareIgnoreCase(a, b) { - return compareSubstringIgnoreCase(a, b, 0, a.length, 0, b.length); -} -export function compareSubstringIgnoreCase(a, b, aStart = 0, aEnd = a.length, bStart = 0, bEnd = b.length) { - for (; aStart < aEnd && bStart < bEnd; aStart++, bStart++) { - let codeA = a.charCodeAt(aStart); - let codeB = b.charCodeAt(bStart); - if (codeA === codeB) { - // equal - continue; - } - if (codeA >= 128 || codeB >= 128) { - // not ASCII letters -> fallback to lower-casing strings - return compareSubstring(a.toLowerCase(), b.toLowerCase(), aStart, aEnd, bStart, bEnd); - } - // mapper lower-case ascii letter onto upper-case varinats - // [97-122] (lower ascii) --> [65-90] (upper ascii) - if (isLowerAsciiLetter(codeA)) { - codeA -= 32; - } - if (isLowerAsciiLetter(codeB)) { - codeB -= 32; - } - // compare both code points - const diff = codeA - codeB; - if (diff === 0) { - continue; - } - return diff; - } - const aLen = aEnd - aStart; - const bLen = bEnd - bStart; - if (aLen < bLen) { - return -1; - } - else if (aLen > bLen) { - return 1; - } - return 0; -} -export function isAsciiDigit(code) { - return code >= 48 /* CharCode.Digit0 */ && code <= 57 /* CharCode.Digit9 */; -} -export function isLowerAsciiLetter(code) { - return code >= 97 /* CharCode.a */ && code <= 122 /* CharCode.z */; -} -export function isUpperAsciiLetter(code) { - return code >= 65 /* CharCode.A */ && code <= 90 /* CharCode.Z */; -} -export function equalsIgnoreCase(a, b) { - return a.length === b.length && compareSubstringIgnoreCase(a, b) === 0; -} -export function startsWithIgnoreCase(str, candidate) { - const candidateLength = candidate.length; - if (candidate.length > str.length) { - return false; - } - return compareSubstringIgnoreCase(str, candidate, 0, candidateLength) === 0; -} -/** - * @returns the length of the common prefix of the two strings. - */ -export function commonPrefixLength(a, b) { - const len = Math.min(a.length, b.length); - let i; - for (i = 0; i < len; i++) { - if (a.charCodeAt(i) !== b.charCodeAt(i)) { - return i; - } - } - return len; -} -/** - * @returns the length of the common suffix of the two strings. - */ -export function commonSuffixLength(a, b) { - const len = Math.min(a.length, b.length); - let i; - const aLastIndex = a.length - 1; - const bLastIndex = b.length - 1; - for (i = 0; i < len; i++) { - if (a.charCodeAt(aLastIndex - i) !== b.charCodeAt(bLastIndex - i)) { - return i; - } - } - return len; -} -/** - * See http://en.wikipedia.org/wiki/Surrogate_pair - */ -export function isHighSurrogate(charCode) { - return (0xD800 <= charCode && charCode <= 0xDBFF); -} -/** - * See http://en.wikipedia.org/wiki/Surrogate_pair - */ -export function isLowSurrogate(charCode) { - return (0xDC00 <= charCode && charCode <= 0xDFFF); -} -/** - * See http://en.wikipedia.org/wiki/Surrogate_pair - */ -export function computeCodePoint(highSurrogate, lowSurrogate) { - return ((highSurrogate - 0xD800) << 10) + (lowSurrogate - 0xDC00) + 0x10000; -} -/** - * get the code point that begins at offset `offset` - */ -export function getNextCodePoint(str, len, offset) { - const charCode = str.charCodeAt(offset); - if (isHighSurrogate(charCode) && offset + 1 < len) { - const nextCharCode = str.charCodeAt(offset + 1); - if (isLowSurrogate(nextCharCode)) { - return computeCodePoint(charCode, nextCharCode); - } - } - return charCode; -} -/** - * get the code point that ends right before offset `offset` - */ -function getPrevCodePoint(str, offset) { - const charCode = str.charCodeAt(offset - 1); - if (isLowSurrogate(charCode) && offset > 1) { - const prevCharCode = str.charCodeAt(offset - 2); - if (isHighSurrogate(prevCharCode)) { - return computeCodePoint(prevCharCode, charCode); - } - } - return charCode; -} -export class CodePointIterator { - _str; - _len; - _offset; - get offset() { - return this._offset; - } - constructor(str, offset = 0) { - this._str = str; - this._len = str.length; - this._offset = offset; - } - setOffset(offset) { - this._offset = offset; - } - prevCodePoint() { - const codePoint = getPrevCodePoint(this._str, this._offset); - this._offset -= (codePoint >= 65536 /* Constants.UNICODE_SUPPLEMENTARY_PLANE_BEGIN */ ? 2 : 1); - return codePoint; - } - nextCodePoint() { - const codePoint = getNextCodePoint(this._str, this._len, this._offset); - this._offset += (codePoint >= 65536 /* Constants.UNICODE_SUPPLEMENTARY_PLANE_BEGIN */ ? 2 : 1); - return codePoint; - } - eol() { - return (this._offset >= this._len); - } -} -export class GraphemeIterator { - _iterator; - get offset() { - return this._iterator.offset; - } - constructor(str, offset = 0) { - this._iterator = new CodePointIterator(str, offset); - } - nextGraphemeLength() { - const graphemeBreakTree = GraphemeBreakTree.getInstance(); - const iterator = this._iterator; - const initialOffset = iterator.offset; - let graphemeBreakType = graphemeBreakTree.getGraphemeBreakType(iterator.nextCodePoint()); - while (!iterator.eol()) { - const offset = iterator.offset; - const nextGraphemeBreakType = graphemeBreakTree.getGraphemeBreakType(iterator.nextCodePoint()); - if (breakBetweenGraphemeBreakType(graphemeBreakType, nextGraphemeBreakType)) { - // move iterator back - iterator.setOffset(offset); - break; - } - graphemeBreakType = nextGraphemeBreakType; - } - return (iterator.offset - initialOffset); - } - prevGraphemeLength() { - const graphemeBreakTree = GraphemeBreakTree.getInstance(); - const iterator = this._iterator; - const initialOffset = iterator.offset; - let graphemeBreakType = graphemeBreakTree.getGraphemeBreakType(iterator.prevCodePoint()); - while (iterator.offset > 0) { - const offset = iterator.offset; - const prevGraphemeBreakType = graphemeBreakTree.getGraphemeBreakType(iterator.prevCodePoint()); - if (breakBetweenGraphemeBreakType(prevGraphemeBreakType, graphemeBreakType)) { - // move iterator back - iterator.setOffset(offset); - break; - } - graphemeBreakType = prevGraphemeBreakType; - } - return (initialOffset - iterator.offset); - } - eol() { - return this._iterator.eol(); - } -} -export function nextCharLength(str, initialOffset) { - const iterator = new GraphemeIterator(str, initialOffset); - return iterator.nextGraphemeLength(); -} -export function prevCharLength(str, initialOffset) { - const iterator = new GraphemeIterator(str, initialOffset); - return iterator.prevGraphemeLength(); -} -export function getCharContainingOffset(str, offset) { - if (offset > 0 && isLowSurrogate(str.charCodeAt(offset))) { - offset--; - } - const endOffset = offset + nextCharLength(str, offset); - const startOffset = endOffset - prevCharLength(str, endOffset); - return [startOffset, endOffset]; -} -export function charCount(str) { - const iterator = new GraphemeIterator(str); - let length = 0; - while (!iterator.eol()) { - length++; - iterator.nextGraphemeLength(); - } - return length; -} -let CONTAINS_RTL = undefined; -function makeContainsRtl() { - // Generated using https://github.com/alexdima/unicode-utils/blob/main/rtl-test.js - return /(?:[\u05BE\u05C0\u05C3\u05C6\u05D0-\u05F4\u0608\u060B\u060D\u061B-\u064A\u066D-\u066F\u0671-\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u0710\u0712-\u072F\u074D-\u07A5\u07B1-\u07EA\u07F4\u07F5\u07FA\u07FE-\u0815\u081A\u0824\u0828\u0830-\u0858\u085E-\u088E\u08A0-\u08C9\u200F\uFB1D\uFB1F-\uFB28\uFB2A-\uFD3D\uFD50-\uFDC7\uFDF0-\uFDFC\uFE70-\uFEFC]|\uD802[\uDC00-\uDD1B\uDD20-\uDE00\uDE10-\uDE35\uDE40-\uDEE4\uDEEB-\uDF35\uDF40-\uDFFF]|\uD803[\uDC00-\uDD23\uDE80-\uDEA9\uDEAD-\uDF45\uDF51-\uDF81\uDF86-\uDFF6]|\uD83A[\uDC00-\uDCCF\uDD00-\uDD43\uDD4B-\uDFFF]|\uD83B[\uDC00-\uDEBB])/; -} -/** - * Returns true if `str` contains any Unicode character that is classified as "R" or "AL". - */ -export function containsRTL(str) { - if (!CONTAINS_RTL) { - CONTAINS_RTL = makeContainsRtl(); - } - return CONTAINS_RTL.test(str); -} -const IS_BASIC_ASCII = /^[\t\n\r\x20-\x7E]*$/; -/** - * Returns true if `str` contains only basic ASCII characters in the range 32 - 126 (including 32 and 126) or \n, \r, \t - */ -export function isBasicASCII(str) { - return IS_BASIC_ASCII.test(str); -} -export const UNUSUAL_LINE_TERMINATORS = /[\u2028\u2029]/; // LINE SEPARATOR (LS) or PARAGRAPH SEPARATOR (PS) -/** - * Returns true if `str` contains unusual line terminators, like LS or PS - */ -export function containsUnusualLineTerminators(str) { - return UNUSUAL_LINE_TERMINATORS.test(str); -} -export function isFullWidthCharacter(charCode) { - // Do a cheap trick to better support wrapping of wide characters, treat them as 2 columns - // http://jrgraphix.net/research/unicode_blocks.php - // 2E80 - 2EFF CJK Radicals Supplement - // 2F00 - 2FDF Kangxi Radicals - // 2FF0 - 2FFF Ideographic Description Characters - // 3000 - 303F CJK Symbols and Punctuation - // 3040 - 309F Hiragana - // 30A0 - 30FF Katakana - // 3100 - 312F Bopomofo - // 3130 - 318F Hangul Compatibility Jamo - // 3190 - 319F Kanbun - // 31A0 - 31BF Bopomofo Extended - // 31F0 - 31FF Katakana Phonetic Extensions - // 3200 - 32FF Enclosed CJK Letters and Months - // 3300 - 33FF CJK Compatibility - // 3400 - 4DBF CJK Unified Ideographs Extension A - // 4DC0 - 4DFF Yijing Hexagram Symbols - // 4E00 - 9FFF CJK Unified Ideographs - // A000 - A48F Yi Syllables - // A490 - A4CF Yi Radicals - // AC00 - D7AF Hangul Syllables - // [IGNORE] D800 - DB7F High Surrogates - // [IGNORE] DB80 - DBFF High Private Use Surrogates - // [IGNORE] DC00 - DFFF Low Surrogates - // [IGNORE] E000 - F8FF Private Use Area - // F900 - FAFF CJK Compatibility Ideographs - // [IGNORE] FB00 - FB4F Alphabetic Presentation Forms - // [IGNORE] FB50 - FDFF Arabic Presentation Forms-A - // [IGNORE] FE00 - FE0F Variation Selectors - // [IGNORE] FE20 - FE2F Combining Half Marks - // [IGNORE] FE30 - FE4F CJK Compatibility Forms - // [IGNORE] FE50 - FE6F Small Form Variants - // [IGNORE] FE70 - FEFF Arabic Presentation Forms-B - // FF00 - FFEF Halfwidth and Fullwidth Forms - // [https://en.wikipedia.org/wiki/Halfwidth_and_fullwidth_forms] - // of which FF01 - FF5E fullwidth ASCII of 21 to 7E - // [IGNORE] and FF65 - FFDC halfwidth of Katakana and Hangul - // [IGNORE] FFF0 - FFFF Specials - return ((charCode >= 0x2E80 && charCode <= 0xD7AF) - || (charCode >= 0xF900 && charCode <= 0xFAFF) - || (charCode >= 0xFF01 && charCode <= 0xFF5E)); -} -/** - * A fast function (therefore imprecise) to check if code points are emojis. - * Generated using https://github.com/alexdima/unicode-utils/blob/main/emoji-test.js - */ -export function isEmojiImprecise(x) { - return ((x >= 0x1F1E6 && x <= 0x1F1FF) || (x === 8986) || (x === 8987) || (x === 9200) - || (x === 9203) || (x >= 9728 && x <= 10175) || (x === 11088) || (x === 11093) - || (x >= 127744 && x <= 128591) || (x >= 128640 && x <= 128764) - || (x >= 128992 && x <= 129008) || (x >= 129280 && x <= 129535) - || (x >= 129648 && x <= 129782)); -} -/** - * Given a string and a max length returns a shorted version. Shorting - * happens at favorable positions - such as whitespace or punctuation characters. - * The return value can be longer than the given value of `n`. Leading whitespace is always trimmed. - */ -export function lcut(text, n, prefix = '') { - const trimmed = text.trimStart(); - if (trimmed.length < n) { - return trimmed; - } - const re = /\b/g; - let i = 0; - while (re.test(trimmed)) { - if (trimmed.length - re.lastIndex < n) { - break; - } - i = re.lastIndex; - re.lastIndex += 1; - } - if (i === 0) { - return trimmed; - } - return prefix + trimmed.substring(i).trimStart(); -} -// Escape codes, compiled from https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h3-Functions-using-CSI-_-ordered-by-the-final-character_s_ -// Plus additional markers for custom `\x1b]...\x07` instructions. -const CSI_SEQUENCE = /(?:(?:\x1b\[|\x9B)[=?>!]?[\d;:]*["$#'* ]?[a-zA-Z@^`{}|~])|(:?\x1b\].*?\x07)/g; -/** Iterates over parts of a string with CSI sequences */ -export function* forAnsiStringParts(str) { - let last = 0; - for (const match of str.matchAll(CSI_SEQUENCE)) { - if (last !== match.index) { - yield { isCode: false, str: str.substring(last, match.index) }; - } - yield { isCode: true, str: match[0] }; - last = match.index + match[0].length; - } - if (last !== str.length) { - yield { isCode: false, str: str.substring(last) }; - } -} -/** - * Strips ANSI escape sequences from a string. - * @param str The dastringa stringo strip the ANSI escape sequences from. - * - * @example - * removeAnsiEscapeCodes('\u001b[31mHello, World!\u001b[0m'); - * // 'Hello, World!' - */ -export function removeAnsiEscapeCodes(str) { - if (str) { - str = str.replace(CSI_SEQUENCE, ''); - } - return str; -} -const PROMPT_NON_PRINTABLE = /\\\[.*?\\\]/g; -/** - * Strips ANSI escape sequences from a UNIX-style prompt string (eg. `$PS1`). - * @param str The string to strip the ANSI escape sequences from. - * - * @example - * removeAnsiEscapeCodesFromPrompt('\n\\[\u001b[01;34m\\]\\w\\[\u001b[00m\\]\n\\[\u001b[1;32m\\]> \\[\u001b[0m\\]'); - * // '\n\\w\n> ' - */ -export function removeAnsiEscapeCodesFromPrompt(str) { - return removeAnsiEscapeCodes(str).replace(PROMPT_NON_PRINTABLE, ''); -} -// -- UTF-8 BOM -export const UTF8_BOM_CHARACTER = String.fromCharCode(65279 /* CharCode.UTF8_BOM */); -export function startsWithUTF8BOM(str) { - return !!(str && str.length > 0 && str.charCodeAt(0) === 65279 /* CharCode.UTF8_BOM */); -} -export function stripUTF8BOM(str) { - return startsWithUTF8BOM(str) ? str.substr(1) : str; -} -/** - * Checks if the characters of the provided query string are included in the - * target string. The characters do not have to be contiguous within the string. - */ -export function fuzzyContains(target, query) { - if (!target || !query) { - return false; // return early if target or query are undefined - } - if (target.length < query.length) { - return false; // impossible for query to be contained in target - } - const queryLen = query.length; - const targetLower = target.toLowerCase(); - let index = 0; - let lastIndexOf = -1; - while (index < queryLen) { - const indexOf = targetLower.indexOf(query[index], lastIndexOf + 1); - if (indexOf < 0) { - return false; - } - lastIndexOf = indexOf; - index++; - } - return true; -} -export function containsUppercaseCharacter(target, ignoreEscapedChars = false) { - if (!target) { - return false; - } - if (ignoreEscapedChars) { - target = target.replace(/\\./g, ''); - } - return target.toLowerCase() !== target; -} -export function uppercaseFirstLetter(str) { - return str.charAt(0).toUpperCase() + str.slice(1); -} -export function getNLines(str, n = 1) { - if (n === 0) { - return ''; - } - let idx = -1; - do { - idx = str.indexOf('\n', idx + 1); - n--; - } while (n > 0 && idx >= 0); - if (idx === -1) { - return str; - } - if (str[idx - 1] === '\r') { - idx--; - } - return str.substr(0, idx); -} -/** - * Produces 'a'-'z', followed by 'A'-'Z'... followed by 'a'-'z', etc. - */ -export function singleLetterHash(n) { - const LETTERS_CNT = (90 /* CharCode.Z */ - 65 /* CharCode.A */ + 1); - n = n % (2 * LETTERS_CNT); - if (n < LETTERS_CNT) { - return String.fromCharCode(97 /* CharCode.a */ + n); - } - return String.fromCharCode(65 /* CharCode.A */ + n - LETTERS_CNT); -} -//#region Unicode Grapheme Break -export function getGraphemeBreakType(codePoint) { - const graphemeBreakTree = GraphemeBreakTree.getInstance(); - return graphemeBreakTree.getGraphemeBreakType(codePoint); -} -function breakBetweenGraphemeBreakType(breakTypeA, breakTypeB) { - // http://www.unicode.org/reports/tr29/#Grapheme_Cluster_Boundary_Rules - // !!! Let's make the common case a bit faster - if (breakTypeA === 0 /* GraphemeBreakType.Other */) { - // see https://www.unicode.org/Public/13.0.0/ucd/auxiliary/GraphemeBreakTest-13.0.0d10.html#table - return (breakTypeB !== 5 /* GraphemeBreakType.Extend */ && breakTypeB !== 7 /* GraphemeBreakType.SpacingMark */); - } - // Do not break between a CR and LF. Otherwise, break before and after controls. - // GB3 CR × LF - // GB4 (Control | CR | LF) ÷ - // GB5 ÷ (Control | CR | LF) - if (breakTypeA === 2 /* GraphemeBreakType.CR */) { - if (breakTypeB === 3 /* GraphemeBreakType.LF */) { - return false; // GB3 - } - } - if (breakTypeA === 4 /* GraphemeBreakType.Control */ || breakTypeA === 2 /* GraphemeBreakType.CR */ || breakTypeA === 3 /* GraphemeBreakType.LF */) { - return true; // GB4 - } - if (breakTypeB === 4 /* GraphemeBreakType.Control */ || breakTypeB === 2 /* GraphemeBreakType.CR */ || breakTypeB === 3 /* GraphemeBreakType.LF */) { - return true; // GB5 - } - // Do not break Hangul syllable sequences. - // GB6 L × (L | V | LV | LVT) - // GB7 (LV | V) × (V | T) - // GB8 (LVT | T) × T - if (breakTypeA === 8 /* GraphemeBreakType.L */) { - if (breakTypeB === 8 /* GraphemeBreakType.L */ || breakTypeB === 9 /* GraphemeBreakType.V */ || breakTypeB === 11 /* GraphemeBreakType.LV */ || breakTypeB === 12 /* GraphemeBreakType.LVT */) { - return false; // GB6 - } - } - if (breakTypeA === 11 /* GraphemeBreakType.LV */ || breakTypeA === 9 /* GraphemeBreakType.V */) { - if (breakTypeB === 9 /* GraphemeBreakType.V */ || breakTypeB === 10 /* GraphemeBreakType.T */) { - return false; // GB7 - } - } - if (breakTypeA === 12 /* GraphemeBreakType.LVT */ || breakTypeA === 10 /* GraphemeBreakType.T */) { - if (breakTypeB === 10 /* GraphemeBreakType.T */) { - return false; // GB8 - } - } - // Do not break before extending characters or ZWJ. - // GB9 × (Extend | ZWJ) - if (breakTypeB === 5 /* GraphemeBreakType.Extend */ || breakTypeB === 13 /* GraphemeBreakType.ZWJ */) { - return false; // GB9 - } - // The GB9a and GB9b rules only apply to extended grapheme clusters: - // Do not break before SpacingMarks, or after Prepend characters. - // GB9a × SpacingMark - // GB9b Prepend × - if (breakTypeB === 7 /* GraphemeBreakType.SpacingMark */) { - return false; // GB9a - } - if (breakTypeA === 1 /* GraphemeBreakType.Prepend */) { - return false; // GB9b - } - // Do not break within emoji modifier sequences or emoji zwj sequences. - // GB11 \p{Extended_Pictographic} Extend* ZWJ × \p{Extended_Pictographic} - if (breakTypeA === 13 /* GraphemeBreakType.ZWJ */ && breakTypeB === 14 /* GraphemeBreakType.Extended_Pictographic */) { - // Note: we are not implementing the rule entirely here to avoid introducing states - return false; // GB11 - } - // GB12 sot (RI RI)* RI × RI - // GB13 [^RI] (RI RI)* RI × RI - if (breakTypeA === 6 /* GraphemeBreakType.Regional_Indicator */ && breakTypeB === 6 /* GraphemeBreakType.Regional_Indicator */) { - // Note: we are not implementing the rule entirely here to avoid introducing states - return false; // GB12 & GB13 - } - // GB999 Any ÷ Any - return true; -} -export var GraphemeBreakType; -(function (GraphemeBreakType) { - GraphemeBreakType[GraphemeBreakType["Other"] = 0] = "Other"; - GraphemeBreakType[GraphemeBreakType["Prepend"] = 1] = "Prepend"; - GraphemeBreakType[GraphemeBreakType["CR"] = 2] = "CR"; - GraphemeBreakType[GraphemeBreakType["LF"] = 3] = "LF"; - GraphemeBreakType[GraphemeBreakType["Control"] = 4] = "Control"; - GraphemeBreakType[GraphemeBreakType["Extend"] = 5] = "Extend"; - GraphemeBreakType[GraphemeBreakType["Regional_Indicator"] = 6] = "Regional_Indicator"; - GraphemeBreakType[GraphemeBreakType["SpacingMark"] = 7] = "SpacingMark"; - GraphemeBreakType[GraphemeBreakType["L"] = 8] = "L"; - GraphemeBreakType[GraphemeBreakType["V"] = 9] = "V"; - GraphemeBreakType[GraphemeBreakType["T"] = 10] = "T"; - GraphemeBreakType[GraphemeBreakType["LV"] = 11] = "LV"; - GraphemeBreakType[GraphemeBreakType["LVT"] = 12] = "LVT"; - GraphemeBreakType[GraphemeBreakType["ZWJ"] = 13] = "ZWJ"; - GraphemeBreakType[GraphemeBreakType["Extended_Pictographic"] = 14] = "Extended_Pictographic"; -})(GraphemeBreakType = GraphemeBreakType || (GraphemeBreakType = {})); -class GraphemeBreakTree { - static _INSTANCE = null; - static getInstance() { - if (!GraphemeBreakTree._INSTANCE) { - GraphemeBreakTree._INSTANCE = new GraphemeBreakTree(); - } - return GraphemeBreakTree._INSTANCE; - } - _data; - constructor() { - this._data = getGraphemeBreakRawData(); - } - getGraphemeBreakType(codePoint) { - // !!! Let's make 7bit ASCII a bit faster: 0..31 - if (codePoint < 32) { - if (codePoint === 10 /* CharCode.LineFeed */) { - return 3 /* GraphemeBreakType.LF */; - } - if (codePoint === 13 /* CharCode.CarriageReturn */) { - return 2 /* GraphemeBreakType.CR */; - } - return 4 /* GraphemeBreakType.Control */; - } - // !!! Let's make 7bit ASCII a bit faster: 32..126 - if (codePoint < 127) { - return 0 /* GraphemeBreakType.Other */; - } - const data = this._data; - const nodeCount = data.length / 3; - let nodeIndex = 1; - while (nodeIndex <= nodeCount) { - if (codePoint < data[3 * nodeIndex]) { - // go left - nodeIndex = 2 * nodeIndex; - } - else if (codePoint > data[3 * nodeIndex + 1]) { - // go right - nodeIndex = 2 * nodeIndex + 1; - } - else { - // hit - return data[3 * nodeIndex + 2]; - } - } - return 0 /* GraphemeBreakType.Other */; - } -} -function getGraphemeBreakRawData() { - // generated using https://github.com/alexdima/unicode-utils/blob/main/grapheme-break.js - return JSON.parse('[0,0,0,51229,51255,12,44061,44087,12,127462,127487,6,7083,7085,5,47645,47671,12,54813,54839,12,128678,128678,14,3270,3270,5,9919,9923,14,45853,45879,12,49437,49463,12,53021,53047,12,71216,71218,7,128398,128399,14,129360,129374,14,2519,2519,5,4448,4519,9,9742,9742,14,12336,12336,14,44957,44983,12,46749,46775,12,48541,48567,12,50333,50359,12,52125,52151,12,53917,53943,12,69888,69890,5,73018,73018,5,127990,127990,14,128558,128559,14,128759,128760,14,129653,129655,14,2027,2035,5,2891,2892,7,3761,3761,5,6683,6683,5,8293,8293,4,9825,9826,14,9999,9999,14,43452,43453,5,44509,44535,12,45405,45431,12,46301,46327,12,47197,47223,12,48093,48119,12,48989,49015,12,49885,49911,12,50781,50807,12,51677,51703,12,52573,52599,12,53469,53495,12,54365,54391,12,65279,65279,4,70471,70472,7,72145,72147,7,119173,119179,5,127799,127818,14,128240,128244,14,128512,128512,14,128652,128652,14,128721,128722,14,129292,129292,14,129445,129450,14,129734,129743,14,1476,1477,5,2366,2368,7,2750,2752,7,3076,3076,5,3415,3415,5,4141,4144,5,6109,6109,5,6964,6964,5,7394,7400,5,9197,9198,14,9770,9770,14,9877,9877,14,9968,9969,14,10084,10084,14,43052,43052,5,43713,43713,5,44285,44311,12,44733,44759,12,45181,45207,12,45629,45655,12,46077,46103,12,46525,46551,12,46973,46999,12,47421,47447,12,47869,47895,12,48317,48343,12,48765,48791,12,49213,49239,12,49661,49687,12,50109,50135,12,50557,50583,12,51005,51031,12,51453,51479,12,51901,51927,12,52349,52375,12,52797,52823,12,53245,53271,12,53693,53719,12,54141,54167,12,54589,54615,12,55037,55063,12,69506,69509,5,70191,70193,5,70841,70841,7,71463,71467,5,72330,72342,5,94031,94031,5,123628,123631,5,127763,127765,14,127941,127941,14,128043,128062,14,128302,128317,14,128465,128467,14,128539,128539,14,128640,128640,14,128662,128662,14,128703,128703,14,128745,128745,14,129004,129007,14,129329,129330,14,129402,129402,14,129483,129483,14,129686,129704,14,130048,131069,14,173,173,4,1757,1757,1,2200,2207,5,2434,2435,7,2631,2632,5,2817,2817,5,3008,3008,5,3201,3201,5,3387,3388,5,3542,3542,5,3902,3903,7,4190,4192,5,6002,6003,5,6439,6440,5,6765,6770,7,7019,7027,5,7154,7155,7,8205,8205,13,8505,8505,14,9654,9654,14,9757,9757,14,9792,9792,14,9852,9853,14,9890,9894,14,9937,9937,14,9981,9981,14,10035,10036,14,11035,11036,14,42654,42655,5,43346,43347,7,43587,43587,5,44006,44007,7,44173,44199,12,44397,44423,12,44621,44647,12,44845,44871,12,45069,45095,12,45293,45319,12,45517,45543,12,45741,45767,12,45965,45991,12,46189,46215,12,46413,46439,12,46637,46663,12,46861,46887,12,47085,47111,12,47309,47335,12,47533,47559,12,47757,47783,12,47981,48007,12,48205,48231,12,48429,48455,12,48653,48679,12,48877,48903,12,49101,49127,12,49325,49351,12,49549,49575,12,49773,49799,12,49997,50023,12,50221,50247,12,50445,50471,12,50669,50695,12,50893,50919,12,51117,51143,12,51341,51367,12,51565,51591,12,51789,51815,12,52013,52039,12,52237,52263,12,52461,52487,12,52685,52711,12,52909,52935,12,53133,53159,12,53357,53383,12,53581,53607,12,53805,53831,12,54029,54055,12,54253,54279,12,54477,54503,12,54701,54727,12,54925,54951,12,55149,55175,12,68101,68102,5,69762,69762,7,70067,70069,7,70371,70378,5,70720,70721,7,71087,71087,5,71341,71341,5,71995,71996,5,72249,72249,7,72850,72871,5,73109,73109,5,118576,118598,5,121505,121519,5,127245,127247,14,127568,127569,14,127777,127777,14,127872,127891,14,127956,127967,14,128015,128016,14,128110,128172,14,128259,128259,14,128367,128368,14,128424,128424,14,128488,128488,14,128530,128532,14,128550,128551,14,128566,128566,14,128647,128647,14,128656,128656,14,128667,128673,14,128691,128693,14,128715,128715,14,128728,128732,14,128752,128752,14,128765,128767,14,129096,129103,14,129311,129311,14,129344,129349,14,129394,129394,14,129413,129425,14,129466,129471,14,129511,129535,14,129664,129666,14,129719,129722,14,129760,129767,14,917536,917631,5,13,13,2,1160,1161,5,1564,1564,4,1807,1807,1,2085,2087,5,2307,2307,7,2382,2383,7,2497,2500,5,2563,2563,7,2677,2677,5,2763,2764,7,2879,2879,5,2914,2915,5,3021,3021,5,3142,3144,5,3263,3263,5,3285,3286,5,3398,3400,7,3530,3530,5,3633,3633,5,3864,3865,5,3974,3975,5,4155,4156,7,4229,4230,5,5909,5909,7,6078,6085,7,6277,6278,5,6451,6456,7,6744,6750,5,6846,6846,5,6972,6972,5,7074,7077,5,7146,7148,7,7222,7223,5,7416,7417,5,8234,8238,4,8417,8417,5,9000,9000,14,9203,9203,14,9730,9731,14,9748,9749,14,9762,9763,14,9776,9783,14,9800,9811,14,9831,9831,14,9872,9873,14,9882,9882,14,9900,9903,14,9929,9933,14,9941,9960,14,9974,9974,14,9989,9989,14,10006,10006,14,10062,10062,14,10160,10160,14,11647,11647,5,12953,12953,14,43019,43019,5,43232,43249,5,43443,43443,5,43567,43568,7,43696,43696,5,43765,43765,7,44013,44013,5,44117,44143,12,44229,44255,12,44341,44367,12,44453,44479,12,44565,44591,12,44677,44703,12,44789,44815,12,44901,44927,12,45013,45039,12,45125,45151,12,45237,45263,12,45349,45375,12,45461,45487,12,45573,45599,12,45685,45711,12,45797,45823,12,45909,45935,12,46021,46047,12,46133,46159,12,46245,46271,12,46357,46383,12,46469,46495,12,46581,46607,12,46693,46719,12,46805,46831,12,46917,46943,12,47029,47055,12,47141,47167,12,47253,47279,12,47365,47391,12,47477,47503,12,47589,47615,12,47701,47727,12,47813,47839,12,47925,47951,12,48037,48063,12,48149,48175,12,48261,48287,12,48373,48399,12,48485,48511,12,48597,48623,12,48709,48735,12,48821,48847,12,48933,48959,12,49045,49071,12,49157,49183,12,49269,49295,12,49381,49407,12,49493,49519,12,49605,49631,12,49717,49743,12,49829,49855,12,49941,49967,12,50053,50079,12,50165,50191,12,50277,50303,12,50389,50415,12,50501,50527,12,50613,50639,12,50725,50751,12,50837,50863,12,50949,50975,12,51061,51087,12,51173,51199,12,51285,51311,12,51397,51423,12,51509,51535,12,51621,51647,12,51733,51759,12,51845,51871,12,51957,51983,12,52069,52095,12,52181,52207,12,52293,52319,12,52405,52431,12,52517,52543,12,52629,52655,12,52741,52767,12,52853,52879,12,52965,52991,12,53077,53103,12,53189,53215,12,53301,53327,12,53413,53439,12,53525,53551,12,53637,53663,12,53749,53775,12,53861,53887,12,53973,53999,12,54085,54111,12,54197,54223,12,54309,54335,12,54421,54447,12,54533,54559,12,54645,54671,12,54757,54783,12,54869,54895,12,54981,55007,12,55093,55119,12,55243,55291,10,66045,66045,5,68325,68326,5,69688,69702,5,69817,69818,5,69957,69958,7,70089,70092,5,70198,70199,5,70462,70462,5,70502,70508,5,70750,70750,5,70846,70846,7,71100,71101,5,71230,71230,7,71351,71351,5,71737,71738,5,72000,72000,7,72160,72160,5,72273,72278,5,72752,72758,5,72882,72883,5,73031,73031,5,73461,73462,7,94192,94193,7,119149,119149,7,121403,121452,5,122915,122916,5,126980,126980,14,127358,127359,14,127535,127535,14,127759,127759,14,127771,127771,14,127792,127793,14,127825,127867,14,127897,127899,14,127945,127945,14,127985,127986,14,128000,128007,14,128021,128021,14,128066,128100,14,128184,128235,14,128249,128252,14,128266,128276,14,128335,128335,14,128379,128390,14,128407,128419,14,128444,128444,14,128481,128481,14,128499,128499,14,128526,128526,14,128536,128536,14,128543,128543,14,128556,128556,14,128564,128564,14,128577,128580,14,128643,128645,14,128649,128649,14,128654,128654,14,128660,128660,14,128664,128664,14,128675,128675,14,128686,128689,14,128695,128696,14,128705,128709,14,128717,128719,14,128725,128725,14,128736,128741,14,128747,128748,14,128755,128755,14,128762,128762,14,128981,128991,14,129009,129023,14,129160,129167,14,129296,129304,14,129320,129327,14,129340,129342,14,129356,129356,14,129388,129392,14,129399,129400,14,129404,129407,14,129432,129442,14,129454,129455,14,129473,129474,14,129485,129487,14,129648,129651,14,129659,129660,14,129671,129679,14,129709,129711,14,129728,129730,14,129751,129753,14,129776,129782,14,917505,917505,4,917760,917999,5,10,10,3,127,159,4,768,879,5,1471,1471,5,1536,1541,1,1648,1648,5,1767,1768,5,1840,1866,5,2070,2073,5,2137,2139,5,2274,2274,1,2363,2363,7,2377,2380,7,2402,2403,5,2494,2494,5,2507,2508,7,2558,2558,5,2622,2624,7,2641,2641,5,2691,2691,7,2759,2760,5,2786,2787,5,2876,2876,5,2881,2884,5,2901,2902,5,3006,3006,5,3014,3016,7,3072,3072,5,3134,3136,5,3157,3158,5,3260,3260,5,3266,3266,5,3274,3275,7,3328,3329,5,3391,3392,7,3405,3405,5,3457,3457,5,3536,3537,7,3551,3551,5,3636,3642,5,3764,3772,5,3895,3895,5,3967,3967,7,3993,4028,5,4146,4151,5,4182,4183,7,4226,4226,5,4253,4253,5,4957,4959,5,5940,5940,7,6070,6070,7,6087,6088,7,6158,6158,4,6432,6434,5,6448,6449,7,6679,6680,5,6742,6742,5,6754,6754,5,6783,6783,5,6912,6915,5,6966,6970,5,6978,6978,5,7042,7042,7,7080,7081,5,7143,7143,7,7150,7150,7,7212,7219,5,7380,7392,5,7412,7412,5,8203,8203,4,8232,8232,4,8265,8265,14,8400,8412,5,8421,8432,5,8617,8618,14,9167,9167,14,9200,9200,14,9410,9410,14,9723,9726,14,9733,9733,14,9745,9745,14,9752,9752,14,9760,9760,14,9766,9766,14,9774,9774,14,9786,9786,14,9794,9794,14,9823,9823,14,9828,9828,14,9833,9850,14,9855,9855,14,9875,9875,14,9880,9880,14,9885,9887,14,9896,9897,14,9906,9916,14,9926,9927,14,9935,9935,14,9939,9939,14,9962,9962,14,9972,9972,14,9978,9978,14,9986,9986,14,9997,9997,14,10002,10002,14,10017,10017,14,10055,10055,14,10071,10071,14,10133,10135,14,10548,10549,14,11093,11093,14,12330,12333,5,12441,12442,5,42608,42610,5,43010,43010,5,43045,43046,5,43188,43203,7,43302,43309,5,43392,43394,5,43446,43449,5,43493,43493,5,43571,43572,7,43597,43597,7,43703,43704,5,43756,43757,5,44003,44004,7,44009,44010,7,44033,44059,12,44089,44115,12,44145,44171,12,44201,44227,12,44257,44283,12,44313,44339,12,44369,44395,12,44425,44451,12,44481,44507,12,44537,44563,12,44593,44619,12,44649,44675,12,44705,44731,12,44761,44787,12,44817,44843,12,44873,44899,12,44929,44955,12,44985,45011,12,45041,45067,12,45097,45123,12,45153,45179,12,45209,45235,12,45265,45291,12,45321,45347,12,45377,45403,12,45433,45459,12,45489,45515,12,45545,45571,12,45601,45627,12,45657,45683,12,45713,45739,12,45769,45795,12,45825,45851,12,45881,45907,12,45937,45963,12,45993,46019,12,46049,46075,12,46105,46131,12,46161,46187,12,46217,46243,12,46273,46299,12,46329,46355,12,46385,46411,12,46441,46467,12,46497,46523,12,46553,46579,12,46609,46635,12,46665,46691,12,46721,46747,12,46777,46803,12,46833,46859,12,46889,46915,12,46945,46971,12,47001,47027,12,47057,47083,12,47113,47139,12,47169,47195,12,47225,47251,12,47281,47307,12,47337,47363,12,47393,47419,12,47449,47475,12,47505,47531,12,47561,47587,12,47617,47643,12,47673,47699,12,47729,47755,12,47785,47811,12,47841,47867,12,47897,47923,12,47953,47979,12,48009,48035,12,48065,48091,12,48121,48147,12,48177,48203,12,48233,48259,12,48289,48315,12,48345,48371,12,48401,48427,12,48457,48483,12,48513,48539,12,48569,48595,12,48625,48651,12,48681,48707,12,48737,48763,12,48793,48819,12,48849,48875,12,48905,48931,12,48961,48987,12,49017,49043,12,49073,49099,12,49129,49155,12,49185,49211,12,49241,49267,12,49297,49323,12,49353,49379,12,49409,49435,12,49465,49491,12,49521,49547,12,49577,49603,12,49633,49659,12,49689,49715,12,49745,49771,12,49801,49827,12,49857,49883,12,49913,49939,12,49969,49995,12,50025,50051,12,50081,50107,12,50137,50163,12,50193,50219,12,50249,50275,12,50305,50331,12,50361,50387,12,50417,50443,12,50473,50499,12,50529,50555,12,50585,50611,12,50641,50667,12,50697,50723,12,50753,50779,12,50809,50835,12,50865,50891,12,50921,50947,12,50977,51003,12,51033,51059,12,51089,51115,12,51145,51171,12,51201,51227,12,51257,51283,12,51313,51339,12,51369,51395,12,51425,51451,12,51481,51507,12,51537,51563,12,51593,51619,12,51649,51675,12,51705,51731,12,51761,51787,12,51817,51843,12,51873,51899,12,51929,51955,12,51985,52011,12,52041,52067,12,52097,52123,12,52153,52179,12,52209,52235,12,52265,52291,12,52321,52347,12,52377,52403,12,52433,52459,12,52489,52515,12,52545,52571,12,52601,52627,12,52657,52683,12,52713,52739,12,52769,52795,12,52825,52851,12,52881,52907,12,52937,52963,12,52993,53019,12,53049,53075,12,53105,53131,12,53161,53187,12,53217,53243,12,53273,53299,12,53329,53355,12,53385,53411,12,53441,53467,12,53497,53523,12,53553,53579,12,53609,53635,12,53665,53691,12,53721,53747,12,53777,53803,12,53833,53859,12,53889,53915,12,53945,53971,12,54001,54027,12,54057,54083,12,54113,54139,12,54169,54195,12,54225,54251,12,54281,54307,12,54337,54363,12,54393,54419,12,54449,54475,12,54505,54531,12,54561,54587,12,54617,54643,12,54673,54699,12,54729,54755,12,54785,54811,12,54841,54867,12,54897,54923,12,54953,54979,12,55009,55035,12,55065,55091,12,55121,55147,12,55177,55203,12,65024,65039,5,65520,65528,4,66422,66426,5,68152,68154,5,69291,69292,5,69633,69633,5,69747,69748,5,69811,69814,5,69826,69826,5,69932,69932,7,70016,70017,5,70079,70080,7,70095,70095,5,70196,70196,5,70367,70367,5,70402,70403,7,70464,70464,5,70487,70487,5,70709,70711,7,70725,70725,7,70833,70834,7,70843,70844,7,70849,70849,7,71090,71093,5,71103,71104,5,71227,71228,7,71339,71339,5,71344,71349,5,71458,71461,5,71727,71735,5,71985,71989,7,71998,71998,5,72002,72002,7,72154,72155,5,72193,72202,5,72251,72254,5,72281,72283,5,72344,72345,5,72766,72766,7,72874,72880,5,72885,72886,5,73023,73029,5,73104,73105,5,73111,73111,5,92912,92916,5,94095,94098,5,113824,113827,4,119142,119142,7,119155,119162,4,119362,119364,5,121476,121476,5,122888,122904,5,123184,123190,5,125252,125258,5,127183,127183,14,127340,127343,14,127377,127386,14,127491,127503,14,127548,127551,14,127744,127756,14,127761,127761,14,127769,127769,14,127773,127774,14,127780,127788,14,127796,127797,14,127820,127823,14,127869,127869,14,127894,127895,14,127902,127903,14,127943,127943,14,127947,127950,14,127972,127972,14,127988,127988,14,127992,127994,14,128009,128011,14,128019,128019,14,128023,128041,14,128064,128064,14,128102,128107,14,128174,128181,14,128238,128238,14,128246,128247,14,128254,128254,14,128264,128264,14,128278,128299,14,128329,128330,14,128348,128359,14,128371,128377,14,128392,128393,14,128401,128404,14,128421,128421,14,128433,128434,14,128450,128452,14,128476,128478,14,128483,128483,14,128495,128495,14,128506,128506,14,128519,128520,14,128528,128528,14,128534,128534,14,128538,128538,14,128540,128542,14,128544,128549,14,128552,128555,14,128557,128557,14,128560,128563,14,128565,128565,14,128567,128576,14,128581,128591,14,128641,128642,14,128646,128646,14,128648,128648,14,128650,128651,14,128653,128653,14,128655,128655,14,128657,128659,14,128661,128661,14,128663,128663,14,128665,128666,14,128674,128674,14,128676,128677,14,128679,128685,14,128690,128690,14,128694,128694,14,128697,128702,14,128704,128704,14,128710,128714,14,128716,128716,14,128720,128720,14,128723,128724,14,128726,128727,14,128733,128735,14,128742,128744,14,128746,128746,14,128749,128751,14,128753,128754,14,128756,128758,14,128761,128761,14,128763,128764,14,128884,128895,14,128992,129003,14,129008,129008,14,129036,129039,14,129114,129119,14,129198,129279,14,129293,129295,14,129305,129310,14,129312,129319,14,129328,129328,14,129331,129338,14,129343,129343,14,129351,129355,14,129357,129359,14,129375,129387,14,129393,129393,14,129395,129398,14,129401,129401,14,129403,129403,14,129408,129412,14,129426,129431,14,129443,129444,14,129451,129453,14,129456,129465,14,129472,129472,14,129475,129482,14,129484,129484,14,129488,129510,14,129536,129647,14,129652,129652,14,129656,129658,14,129661,129663,14,129667,129670,14,129680,129685,14,129705,129708,14,129712,129718,14,129723,129727,14,129731,129733,14,129744,129750,14,129754,129759,14,129768,129775,14,129783,129791,14,917504,917504,4,917506,917535,4,917632,917759,4,918000,921599,4,0,9,4,11,12,4,14,31,4,169,169,14,174,174,14,1155,1159,5,1425,1469,5,1473,1474,5,1479,1479,5,1552,1562,5,1611,1631,5,1750,1756,5,1759,1764,5,1770,1773,5,1809,1809,5,1958,1968,5,2045,2045,5,2075,2083,5,2089,2093,5,2192,2193,1,2250,2273,5,2275,2306,5,2362,2362,5,2364,2364,5,2369,2376,5,2381,2381,5,2385,2391,5,2433,2433,5,2492,2492,5,2495,2496,7,2503,2504,7,2509,2509,5,2530,2531,5,2561,2562,5,2620,2620,5,2625,2626,5,2635,2637,5,2672,2673,5,2689,2690,5,2748,2748,5,2753,2757,5,2761,2761,7,2765,2765,5,2810,2815,5,2818,2819,7,2878,2878,5,2880,2880,7,2887,2888,7,2893,2893,5,2903,2903,5,2946,2946,5,3007,3007,7,3009,3010,7,3018,3020,7,3031,3031,5,3073,3075,7,3132,3132,5,3137,3140,7,3146,3149,5,3170,3171,5,3202,3203,7,3262,3262,7,3264,3265,7,3267,3268,7,3271,3272,7,3276,3277,5,3298,3299,5,3330,3331,7,3390,3390,5,3393,3396,5,3402,3404,7,3406,3406,1,3426,3427,5,3458,3459,7,3535,3535,5,3538,3540,5,3544,3550,7,3570,3571,7,3635,3635,7,3655,3662,5,3763,3763,7,3784,3789,5,3893,3893,5,3897,3897,5,3953,3966,5,3968,3972,5,3981,3991,5,4038,4038,5,4145,4145,7,4153,4154,5,4157,4158,5,4184,4185,5,4209,4212,5,4228,4228,7,4237,4237,5,4352,4447,8,4520,4607,10,5906,5908,5,5938,5939,5,5970,5971,5,6068,6069,5,6071,6077,5,6086,6086,5,6089,6099,5,6155,6157,5,6159,6159,5,6313,6313,5,6435,6438,7,6441,6443,7,6450,6450,5,6457,6459,5,6681,6682,7,6741,6741,7,6743,6743,7,6752,6752,5,6757,6764,5,6771,6780,5,6832,6845,5,6847,6862,5,6916,6916,7,6965,6965,5,6971,6971,7,6973,6977,7,6979,6980,7,7040,7041,5,7073,7073,7,7078,7079,7,7082,7082,7,7142,7142,5,7144,7145,5,7149,7149,5,7151,7153,5,7204,7211,7,7220,7221,7,7376,7378,5,7393,7393,7,7405,7405,5,7415,7415,7,7616,7679,5,8204,8204,5,8206,8207,4,8233,8233,4,8252,8252,14,8288,8292,4,8294,8303,4,8413,8416,5,8418,8420,5,8482,8482,14,8596,8601,14,8986,8987,14,9096,9096,14,9193,9196,14,9199,9199,14,9201,9202,14,9208,9210,14,9642,9643,14,9664,9664,14,9728,9729,14,9732,9732,14,9735,9741,14,9743,9744,14,9746,9746,14,9750,9751,14,9753,9756,14,9758,9759,14,9761,9761,14,9764,9765,14,9767,9769,14,9771,9773,14,9775,9775,14,9784,9785,14,9787,9791,14,9793,9793,14,9795,9799,14,9812,9822,14,9824,9824,14,9827,9827,14,9829,9830,14,9832,9832,14,9851,9851,14,9854,9854,14,9856,9861,14,9874,9874,14,9876,9876,14,9878,9879,14,9881,9881,14,9883,9884,14,9888,9889,14,9895,9895,14,9898,9899,14,9904,9905,14,9917,9918,14,9924,9925,14,9928,9928,14,9934,9934,14,9936,9936,14,9938,9938,14,9940,9940,14,9961,9961,14,9963,9967,14,9970,9971,14,9973,9973,14,9975,9977,14,9979,9980,14,9982,9985,14,9987,9988,14,9992,9996,14,9998,9998,14,10000,10001,14,10004,10004,14,10013,10013,14,10024,10024,14,10052,10052,14,10060,10060,14,10067,10069,14,10083,10083,14,10085,10087,14,10145,10145,14,10175,10175,14,11013,11015,14,11088,11088,14,11503,11505,5,11744,11775,5,12334,12335,5,12349,12349,14,12951,12951,14,42607,42607,5,42612,42621,5,42736,42737,5,43014,43014,5,43043,43044,7,43047,43047,7,43136,43137,7,43204,43205,5,43263,43263,5,43335,43345,5,43360,43388,8,43395,43395,7,43444,43445,7,43450,43451,7,43454,43456,7,43561,43566,5,43569,43570,5,43573,43574,5,43596,43596,5,43644,43644,5,43698,43700,5,43710,43711,5,43755,43755,7,43758,43759,7,43766,43766,5,44005,44005,5,44008,44008,5,44012,44012,7,44032,44032,11,44060,44060,11,44088,44088,11,44116,44116,11,44144,44144,11,44172,44172,11,44200,44200,11,44228,44228,11,44256,44256,11,44284,44284,11,44312,44312,11,44340,44340,11,44368,44368,11,44396,44396,11,44424,44424,11,44452,44452,11,44480,44480,11,44508,44508,11,44536,44536,11,44564,44564,11,44592,44592,11,44620,44620,11,44648,44648,11,44676,44676,11,44704,44704,11,44732,44732,11,44760,44760,11,44788,44788,11,44816,44816,11,44844,44844,11,44872,44872,11,44900,44900,11,44928,44928,11,44956,44956,11,44984,44984,11,45012,45012,11,45040,45040,11,45068,45068,11,45096,45096,11,45124,45124,11,45152,45152,11,45180,45180,11,45208,45208,11,45236,45236,11,45264,45264,11,45292,45292,11,45320,45320,11,45348,45348,11,45376,45376,11,45404,45404,11,45432,45432,11,45460,45460,11,45488,45488,11,45516,45516,11,45544,45544,11,45572,45572,11,45600,45600,11,45628,45628,11,45656,45656,11,45684,45684,11,45712,45712,11,45740,45740,11,45768,45768,11,45796,45796,11,45824,45824,11,45852,45852,11,45880,45880,11,45908,45908,11,45936,45936,11,45964,45964,11,45992,45992,11,46020,46020,11,46048,46048,11,46076,46076,11,46104,46104,11,46132,46132,11,46160,46160,11,46188,46188,11,46216,46216,11,46244,46244,11,46272,46272,11,46300,46300,11,46328,46328,11,46356,46356,11,46384,46384,11,46412,46412,11,46440,46440,11,46468,46468,11,46496,46496,11,46524,46524,11,46552,46552,11,46580,46580,11,46608,46608,11,46636,46636,11,46664,46664,11,46692,46692,11,46720,46720,11,46748,46748,11,46776,46776,11,46804,46804,11,46832,46832,11,46860,46860,11,46888,46888,11,46916,46916,11,46944,46944,11,46972,46972,11,47000,47000,11,47028,47028,11,47056,47056,11,47084,47084,11,47112,47112,11,47140,47140,11,47168,47168,11,47196,47196,11,47224,47224,11,47252,47252,11,47280,47280,11,47308,47308,11,47336,47336,11,47364,47364,11,47392,47392,11,47420,47420,11,47448,47448,11,47476,47476,11,47504,47504,11,47532,47532,11,47560,47560,11,47588,47588,11,47616,47616,11,47644,47644,11,47672,47672,11,47700,47700,11,47728,47728,11,47756,47756,11,47784,47784,11,47812,47812,11,47840,47840,11,47868,47868,11,47896,47896,11,47924,47924,11,47952,47952,11,47980,47980,11,48008,48008,11,48036,48036,11,48064,48064,11,48092,48092,11,48120,48120,11,48148,48148,11,48176,48176,11,48204,48204,11,48232,48232,11,48260,48260,11,48288,48288,11,48316,48316,11,48344,48344,11,48372,48372,11,48400,48400,11,48428,48428,11,48456,48456,11,48484,48484,11,48512,48512,11,48540,48540,11,48568,48568,11,48596,48596,11,48624,48624,11,48652,48652,11,48680,48680,11,48708,48708,11,48736,48736,11,48764,48764,11,48792,48792,11,48820,48820,11,48848,48848,11,48876,48876,11,48904,48904,11,48932,48932,11,48960,48960,11,48988,48988,11,49016,49016,11,49044,49044,11,49072,49072,11,49100,49100,11,49128,49128,11,49156,49156,11,49184,49184,11,49212,49212,11,49240,49240,11,49268,49268,11,49296,49296,11,49324,49324,11,49352,49352,11,49380,49380,11,49408,49408,11,49436,49436,11,49464,49464,11,49492,49492,11,49520,49520,11,49548,49548,11,49576,49576,11,49604,49604,11,49632,49632,11,49660,49660,11,49688,49688,11,49716,49716,11,49744,49744,11,49772,49772,11,49800,49800,11,49828,49828,11,49856,49856,11,49884,49884,11,49912,49912,11,49940,49940,11,49968,49968,11,49996,49996,11,50024,50024,11,50052,50052,11,50080,50080,11,50108,50108,11,50136,50136,11,50164,50164,11,50192,50192,11,50220,50220,11,50248,50248,11,50276,50276,11,50304,50304,11,50332,50332,11,50360,50360,11,50388,50388,11,50416,50416,11,50444,50444,11,50472,50472,11,50500,50500,11,50528,50528,11,50556,50556,11,50584,50584,11,50612,50612,11,50640,50640,11,50668,50668,11,50696,50696,11,50724,50724,11,50752,50752,11,50780,50780,11,50808,50808,11,50836,50836,11,50864,50864,11,50892,50892,11,50920,50920,11,50948,50948,11,50976,50976,11,51004,51004,11,51032,51032,11,51060,51060,11,51088,51088,11,51116,51116,11,51144,51144,11,51172,51172,11,51200,51200,11,51228,51228,11,51256,51256,11,51284,51284,11,51312,51312,11,51340,51340,11,51368,51368,11,51396,51396,11,51424,51424,11,51452,51452,11,51480,51480,11,51508,51508,11,51536,51536,11,51564,51564,11,51592,51592,11,51620,51620,11,51648,51648,11,51676,51676,11,51704,51704,11,51732,51732,11,51760,51760,11,51788,51788,11,51816,51816,11,51844,51844,11,51872,51872,11,51900,51900,11,51928,51928,11,51956,51956,11,51984,51984,11,52012,52012,11,52040,52040,11,52068,52068,11,52096,52096,11,52124,52124,11,52152,52152,11,52180,52180,11,52208,52208,11,52236,52236,11,52264,52264,11,52292,52292,11,52320,52320,11,52348,52348,11,52376,52376,11,52404,52404,11,52432,52432,11,52460,52460,11,52488,52488,11,52516,52516,11,52544,52544,11,52572,52572,11,52600,52600,11,52628,52628,11,52656,52656,11,52684,52684,11,52712,52712,11,52740,52740,11,52768,52768,11,52796,52796,11,52824,52824,11,52852,52852,11,52880,52880,11,52908,52908,11,52936,52936,11,52964,52964,11,52992,52992,11,53020,53020,11,53048,53048,11,53076,53076,11,53104,53104,11,53132,53132,11,53160,53160,11,53188,53188,11,53216,53216,11,53244,53244,11,53272,53272,11,53300,53300,11,53328,53328,11,53356,53356,11,53384,53384,11,53412,53412,11,53440,53440,11,53468,53468,11,53496,53496,11,53524,53524,11,53552,53552,11,53580,53580,11,53608,53608,11,53636,53636,11,53664,53664,11,53692,53692,11,53720,53720,11,53748,53748,11,53776,53776,11,53804,53804,11,53832,53832,11,53860,53860,11,53888,53888,11,53916,53916,11,53944,53944,11,53972,53972,11,54000,54000,11,54028,54028,11,54056,54056,11,54084,54084,11,54112,54112,11,54140,54140,11,54168,54168,11,54196,54196,11,54224,54224,11,54252,54252,11,54280,54280,11,54308,54308,11,54336,54336,11,54364,54364,11,54392,54392,11,54420,54420,11,54448,54448,11,54476,54476,11,54504,54504,11,54532,54532,11,54560,54560,11,54588,54588,11,54616,54616,11,54644,54644,11,54672,54672,11,54700,54700,11,54728,54728,11,54756,54756,11,54784,54784,11,54812,54812,11,54840,54840,11,54868,54868,11,54896,54896,11,54924,54924,11,54952,54952,11,54980,54980,11,55008,55008,11,55036,55036,11,55064,55064,11,55092,55092,11,55120,55120,11,55148,55148,11,55176,55176,11,55216,55238,9,64286,64286,5,65056,65071,5,65438,65439,5,65529,65531,4,66272,66272,5,68097,68099,5,68108,68111,5,68159,68159,5,68900,68903,5,69446,69456,5,69632,69632,7,69634,69634,7,69744,69744,5,69759,69761,5,69808,69810,7,69815,69816,7,69821,69821,1,69837,69837,1,69927,69931,5,69933,69940,5,70003,70003,5,70018,70018,7,70070,70078,5,70082,70083,1,70094,70094,7,70188,70190,7,70194,70195,7,70197,70197,7,70206,70206,5,70368,70370,7,70400,70401,5,70459,70460,5,70463,70463,7,70465,70468,7,70475,70477,7,70498,70499,7,70512,70516,5,70712,70719,5,70722,70724,5,70726,70726,5,70832,70832,5,70835,70840,5,70842,70842,5,70845,70845,5,70847,70848,5,70850,70851,5,71088,71089,7,71096,71099,7,71102,71102,7,71132,71133,5,71219,71226,5,71229,71229,5,71231,71232,5,71340,71340,7,71342,71343,7,71350,71350,7,71453,71455,5,71462,71462,7,71724,71726,7,71736,71736,7,71984,71984,5,71991,71992,7,71997,71997,7,71999,71999,1,72001,72001,1,72003,72003,5,72148,72151,5,72156,72159,7,72164,72164,7,72243,72248,5,72250,72250,1,72263,72263,5,72279,72280,7,72324,72329,1,72343,72343,7,72751,72751,7,72760,72765,5,72767,72767,5,72873,72873,7,72881,72881,7,72884,72884,7,73009,73014,5,73020,73021,5,73030,73030,1,73098,73102,7,73107,73108,7,73110,73110,7,73459,73460,5,78896,78904,4,92976,92982,5,94033,94087,7,94180,94180,5,113821,113822,5,118528,118573,5,119141,119141,5,119143,119145,5,119150,119154,5,119163,119170,5,119210,119213,5,121344,121398,5,121461,121461,5,121499,121503,5,122880,122886,5,122907,122913,5,122918,122922,5,123566,123566,5,125136,125142,5,126976,126979,14,126981,127182,14,127184,127231,14,127279,127279,14,127344,127345,14,127374,127374,14,127405,127461,14,127489,127490,14,127514,127514,14,127538,127546,14,127561,127567,14,127570,127743,14,127757,127758,14,127760,127760,14,127762,127762,14,127766,127768,14,127770,127770,14,127772,127772,14,127775,127776,14,127778,127779,14,127789,127791,14,127794,127795,14,127798,127798,14,127819,127819,14,127824,127824,14,127868,127868,14,127870,127871,14,127892,127893,14,127896,127896,14,127900,127901,14,127904,127940,14,127942,127942,14,127944,127944,14,127946,127946,14,127951,127955,14,127968,127971,14,127973,127984,14,127987,127987,14,127989,127989,14,127991,127991,14,127995,127999,5,128008,128008,14,128012,128014,14,128017,128018,14,128020,128020,14,128022,128022,14,128042,128042,14,128063,128063,14,128065,128065,14,128101,128101,14,128108,128109,14,128173,128173,14,128182,128183,14,128236,128237,14,128239,128239,14,128245,128245,14,128248,128248,14,128253,128253,14,128255,128258,14,128260,128263,14,128265,128265,14,128277,128277,14,128300,128301,14,128326,128328,14,128331,128334,14,128336,128347,14,128360,128366,14,128369,128370,14,128378,128378,14,128391,128391,14,128394,128397,14,128400,128400,14,128405,128406,14,128420,128420,14,128422,128423,14,128425,128432,14,128435,128443,14,128445,128449,14,128453,128464,14,128468,128475,14,128479,128480,14,128482,128482,14,128484,128487,14,128489,128494,14,128496,128498,14,128500,128505,14,128507,128511,14,128513,128518,14,128521,128525,14,128527,128527,14,128529,128529,14,128533,128533,14,128535,128535,14,128537,128537,14]'); -} -//#endregion -/** - * Computes the offset after performing a left delete on the given string, - * while considering unicode grapheme/emoji rules. -*/ -export function getLeftDeleteOffset(offset, str) { - if (offset === 0) { - return 0; - } - // Try to delete emoji part. - const emojiOffset = getOffsetBeforeLastEmojiComponent(offset, str); - if (emojiOffset !== undefined) { - return emojiOffset; - } - // Otherwise, just skip a single code point. - const iterator = new CodePointIterator(str, offset); - iterator.prevCodePoint(); - return iterator.offset; -} -function getOffsetBeforeLastEmojiComponent(initialOffset, str) { - // See https://www.unicode.org/reports/tr51/tr51-14.html#EBNF_and_Regex for the - // structure of emojis. - const iterator = new CodePointIterator(str, initialOffset); - let codePoint = iterator.prevCodePoint(); - // Skip modifiers - while ((isEmojiModifier(codePoint) || codePoint === 65039 /* CodePoint.emojiVariantSelector */ || codePoint === 8419 /* CodePoint.enclosingKeyCap */)) { - if (iterator.offset === 0) { - // Cannot skip modifier, no preceding emoji base. - return undefined; - } - codePoint = iterator.prevCodePoint(); - } - // Expect base emoji - if (!isEmojiImprecise(codePoint)) { - // Unexpected code point, not a valid emoji. - return undefined; - } - let resultOffset = iterator.offset; - if (resultOffset > 0) { - // Skip optional ZWJ code points that combine multiple emojis. - // In theory, we should check if that ZWJ actually combines multiple emojis - // to prevent deleting ZWJs in situations we didn't account for. - const optionalZwjCodePoint = iterator.prevCodePoint(); - if (optionalZwjCodePoint === 8205 /* CodePoint.zwj */) { - resultOffset = iterator.offset; - } - } - return resultOffset; -} -function isEmojiModifier(codePoint) { - return 0x1F3FB <= codePoint && codePoint <= 0x1F3FF; -} -var CodePoint; -(function (CodePoint) { - CodePoint[CodePoint["zwj"] = 8205] = "zwj"; - /** - * Variation Selector-16 (VS16) - */ - CodePoint[CodePoint["emojiVariantSelector"] = 65039] = "emojiVariantSelector"; - /** - * Combining Enclosing Keycap - */ - CodePoint[CodePoint["enclosingKeyCap"] = 8419] = "enclosingKeyCap"; -})(CodePoint || (CodePoint = {})); -export const noBreakWhitespace = '\xa0'; -export class AmbiguousCharacters { - confusableDictionary; - static ambiguousCharacterData = new Lazy(() => { - // Generated using https://github.com/hediet/vscode-unicode-data - // Stored as key1, value1, key2, value2, ... - return JSON.parse('{\"_common\":[8232,32,8233,32,5760,32,8192,32,8193,32,8194,32,8195,32,8196,32,8197,32,8198,32,8200,32,8201,32,8202,32,8287,32,8199,32,8239,32,2042,95,65101,95,65102,95,65103,95,8208,45,8209,45,8210,45,65112,45,1748,45,8259,45,727,45,8722,45,10134,45,11450,45,1549,44,1643,44,8218,44,184,44,42233,44,894,59,2307,58,2691,58,1417,58,1795,58,1796,58,5868,58,65072,58,6147,58,6153,58,8282,58,1475,58,760,58,42889,58,8758,58,720,58,42237,58,451,33,11601,33,660,63,577,63,2429,63,5038,63,42731,63,119149,46,8228,46,1793,46,1794,46,42510,46,68176,46,1632,46,1776,46,42232,46,1373,96,65287,96,8219,96,8242,96,1370,96,1523,96,8175,96,65344,96,900,96,8189,96,8125,96,8127,96,8190,96,697,96,884,96,712,96,714,96,715,96,756,96,699,96,701,96,700,96,702,96,42892,96,1497,96,2036,96,2037,96,5194,96,5836,96,94033,96,94034,96,65339,91,10088,40,10098,40,12308,40,64830,40,65341,93,10089,41,10099,41,12309,41,64831,41,10100,123,119060,123,10101,125,65342,94,8270,42,1645,42,8727,42,66335,42,5941,47,8257,47,8725,47,8260,47,9585,47,10187,47,10744,47,119354,47,12755,47,12339,47,11462,47,20031,47,12035,47,65340,92,65128,92,8726,92,10189,92,10741,92,10745,92,119311,92,119355,92,12756,92,20022,92,12034,92,42872,38,708,94,710,94,5869,43,10133,43,66203,43,8249,60,10094,60,706,60,119350,60,5176,60,5810,60,5120,61,11840,61,12448,61,42239,61,8250,62,10095,62,707,62,119351,62,5171,62,94015,62,8275,126,732,126,8128,126,8764,126,65372,124,65293,45,120784,50,120794,50,120804,50,120814,50,120824,50,130034,50,42842,50,423,50,1000,50,42564,50,5311,50,42735,50,119302,51,120785,51,120795,51,120805,51,120815,51,120825,51,130035,51,42923,51,540,51,439,51,42858,51,11468,51,1248,51,94011,51,71882,51,120786,52,120796,52,120806,52,120816,52,120826,52,130036,52,5070,52,71855,52,120787,53,120797,53,120807,53,120817,53,120827,53,130037,53,444,53,71867,53,120788,54,120798,54,120808,54,120818,54,120828,54,130038,54,11474,54,5102,54,71893,54,119314,55,120789,55,120799,55,120809,55,120819,55,120829,55,130039,55,66770,55,71878,55,2819,56,2538,56,2666,56,125131,56,120790,56,120800,56,120810,56,120820,56,120830,56,130040,56,547,56,546,56,66330,56,2663,57,2920,57,2541,57,3437,57,120791,57,120801,57,120811,57,120821,57,120831,57,130041,57,42862,57,11466,57,71884,57,71852,57,71894,57,9082,97,65345,97,119834,97,119886,97,119938,97,119990,97,120042,97,120094,97,120146,97,120198,97,120250,97,120302,97,120354,97,120406,97,120458,97,593,97,945,97,120514,97,120572,97,120630,97,120688,97,120746,97,65313,65,119808,65,119860,65,119912,65,119964,65,120016,65,120068,65,120120,65,120172,65,120224,65,120276,65,120328,65,120380,65,120432,65,913,65,120488,65,120546,65,120604,65,120662,65,120720,65,5034,65,5573,65,42222,65,94016,65,66208,65,119835,98,119887,98,119939,98,119991,98,120043,98,120095,98,120147,98,120199,98,120251,98,120303,98,120355,98,120407,98,120459,98,388,98,5071,98,5234,98,5551,98,65314,66,8492,66,119809,66,119861,66,119913,66,120017,66,120069,66,120121,66,120173,66,120225,66,120277,66,120329,66,120381,66,120433,66,42932,66,914,66,120489,66,120547,66,120605,66,120663,66,120721,66,5108,66,5623,66,42192,66,66178,66,66209,66,66305,66,65347,99,8573,99,119836,99,119888,99,119940,99,119992,99,120044,99,120096,99,120148,99,120200,99,120252,99,120304,99,120356,99,120408,99,120460,99,7428,99,1010,99,11429,99,43951,99,66621,99,128844,67,71922,67,71913,67,65315,67,8557,67,8450,67,8493,67,119810,67,119862,67,119914,67,119966,67,120018,67,120174,67,120226,67,120278,67,120330,67,120382,67,120434,67,1017,67,11428,67,5087,67,42202,67,66210,67,66306,67,66581,67,66844,67,8574,100,8518,100,119837,100,119889,100,119941,100,119993,100,120045,100,120097,100,120149,100,120201,100,120253,100,120305,100,120357,100,120409,100,120461,100,1281,100,5095,100,5231,100,42194,100,8558,68,8517,68,119811,68,119863,68,119915,68,119967,68,120019,68,120071,68,120123,68,120175,68,120227,68,120279,68,120331,68,120383,68,120435,68,5024,68,5598,68,5610,68,42195,68,8494,101,65349,101,8495,101,8519,101,119838,101,119890,101,119942,101,120046,101,120098,101,120150,101,120202,101,120254,101,120306,101,120358,101,120410,101,120462,101,43826,101,1213,101,8959,69,65317,69,8496,69,119812,69,119864,69,119916,69,120020,69,120072,69,120124,69,120176,69,120228,69,120280,69,120332,69,120384,69,120436,69,917,69,120492,69,120550,69,120608,69,120666,69,120724,69,11577,69,5036,69,42224,69,71846,69,71854,69,66182,69,119839,102,119891,102,119943,102,119995,102,120047,102,120099,102,120151,102,120203,102,120255,102,120307,102,120359,102,120411,102,120463,102,43829,102,42905,102,383,102,7837,102,1412,102,119315,70,8497,70,119813,70,119865,70,119917,70,120021,70,120073,70,120125,70,120177,70,120229,70,120281,70,120333,70,120385,70,120437,70,42904,70,988,70,120778,70,5556,70,42205,70,71874,70,71842,70,66183,70,66213,70,66853,70,65351,103,8458,103,119840,103,119892,103,119944,103,120048,103,120100,103,120152,103,120204,103,120256,103,120308,103,120360,103,120412,103,120464,103,609,103,7555,103,397,103,1409,103,119814,71,119866,71,119918,71,119970,71,120022,71,120074,71,120126,71,120178,71,120230,71,120282,71,120334,71,120386,71,120438,71,1292,71,5056,71,5107,71,42198,71,65352,104,8462,104,119841,104,119945,104,119997,104,120049,104,120101,104,120153,104,120205,104,120257,104,120309,104,120361,104,120413,104,120465,104,1211,104,1392,104,5058,104,65320,72,8459,72,8460,72,8461,72,119815,72,119867,72,119919,72,120023,72,120179,72,120231,72,120283,72,120335,72,120387,72,120439,72,919,72,120494,72,120552,72,120610,72,120668,72,120726,72,11406,72,5051,72,5500,72,42215,72,66255,72,731,105,9075,105,65353,105,8560,105,8505,105,8520,105,119842,105,119894,105,119946,105,119998,105,120050,105,120102,105,120154,105,120206,105,120258,105,120310,105,120362,105,120414,105,120466,105,120484,105,618,105,617,105,953,105,8126,105,890,105,120522,105,120580,105,120638,105,120696,105,120754,105,1110,105,42567,105,1231,105,43893,105,5029,105,71875,105,65354,106,8521,106,119843,106,119895,106,119947,106,119999,106,120051,106,120103,106,120155,106,120207,106,120259,106,120311,106,120363,106,120415,106,120467,106,1011,106,1112,106,65322,74,119817,74,119869,74,119921,74,119973,74,120025,74,120077,74,120129,74,120181,74,120233,74,120285,74,120337,74,120389,74,120441,74,42930,74,895,74,1032,74,5035,74,5261,74,42201,74,119844,107,119896,107,119948,107,120000,107,120052,107,120104,107,120156,107,120208,107,120260,107,120312,107,120364,107,120416,107,120468,107,8490,75,65323,75,119818,75,119870,75,119922,75,119974,75,120026,75,120078,75,120130,75,120182,75,120234,75,120286,75,120338,75,120390,75,120442,75,922,75,120497,75,120555,75,120613,75,120671,75,120729,75,11412,75,5094,75,5845,75,42199,75,66840,75,1472,108,8739,73,9213,73,65512,73,1633,108,1777,73,66336,108,125127,108,120783,73,120793,73,120803,73,120813,73,120823,73,130033,73,65321,73,8544,73,8464,73,8465,73,119816,73,119868,73,119920,73,120024,73,120128,73,120180,73,120232,73,120284,73,120336,73,120388,73,120440,73,65356,108,8572,73,8467,108,119845,108,119897,108,119949,108,120001,108,120053,108,120105,73,120157,73,120209,73,120261,73,120313,73,120365,73,120417,73,120469,73,448,73,120496,73,120554,73,120612,73,120670,73,120728,73,11410,73,1030,73,1216,73,1493,108,1503,108,1575,108,126464,108,126592,108,65166,108,65165,108,1994,108,11599,73,5825,73,42226,73,93992,73,66186,124,66313,124,119338,76,8556,76,8466,76,119819,76,119871,76,119923,76,120027,76,120079,76,120131,76,120183,76,120235,76,120287,76,120339,76,120391,76,120443,76,11472,76,5086,76,5290,76,42209,76,93974,76,71843,76,71858,76,66587,76,66854,76,65325,77,8559,77,8499,77,119820,77,119872,77,119924,77,120028,77,120080,77,120132,77,120184,77,120236,77,120288,77,120340,77,120392,77,120444,77,924,77,120499,77,120557,77,120615,77,120673,77,120731,77,1018,77,11416,77,5047,77,5616,77,5846,77,42207,77,66224,77,66321,77,119847,110,119899,110,119951,110,120003,110,120055,110,120107,110,120159,110,120211,110,120263,110,120315,110,120367,110,120419,110,120471,110,1400,110,1404,110,65326,78,8469,78,119821,78,119873,78,119925,78,119977,78,120029,78,120081,78,120185,78,120237,78,120289,78,120341,78,120393,78,120445,78,925,78,120500,78,120558,78,120616,78,120674,78,120732,78,11418,78,42208,78,66835,78,3074,111,3202,111,3330,111,3458,111,2406,111,2662,111,2790,111,3046,111,3174,111,3302,111,3430,111,3664,111,3792,111,4160,111,1637,111,1781,111,65359,111,8500,111,119848,111,119900,111,119952,111,120056,111,120108,111,120160,111,120212,111,120264,111,120316,111,120368,111,120420,111,120472,111,7439,111,7441,111,43837,111,959,111,120528,111,120586,111,120644,111,120702,111,120760,111,963,111,120532,111,120590,111,120648,111,120706,111,120764,111,11423,111,4351,111,1413,111,1505,111,1607,111,126500,111,126564,111,126596,111,65259,111,65260,111,65258,111,65257,111,1726,111,64428,111,64429,111,64427,111,64426,111,1729,111,64424,111,64425,111,64423,111,64422,111,1749,111,3360,111,4125,111,66794,111,71880,111,71895,111,66604,111,1984,79,2534,79,2918,79,12295,79,70864,79,71904,79,120782,79,120792,79,120802,79,120812,79,120822,79,130032,79,65327,79,119822,79,119874,79,119926,79,119978,79,120030,79,120082,79,120134,79,120186,79,120238,79,120290,79,120342,79,120394,79,120446,79,927,79,120502,79,120560,79,120618,79,120676,79,120734,79,11422,79,1365,79,11604,79,4816,79,2848,79,66754,79,42227,79,71861,79,66194,79,66219,79,66564,79,66838,79,9076,112,65360,112,119849,112,119901,112,119953,112,120005,112,120057,112,120109,112,120161,112,120213,112,120265,112,120317,112,120369,112,120421,112,120473,112,961,112,120530,112,120544,112,120588,112,120602,112,120646,112,120660,112,120704,112,120718,112,120762,112,120776,112,11427,112,65328,80,8473,80,119823,80,119875,80,119927,80,119979,80,120031,80,120083,80,120187,80,120239,80,120291,80,120343,80,120395,80,120447,80,929,80,120504,80,120562,80,120620,80,120678,80,120736,80,11426,80,5090,80,5229,80,42193,80,66197,80,119850,113,119902,113,119954,113,120006,113,120058,113,120110,113,120162,113,120214,113,120266,113,120318,113,120370,113,120422,113,120474,113,1307,113,1379,113,1382,113,8474,81,119824,81,119876,81,119928,81,119980,81,120032,81,120084,81,120188,81,120240,81,120292,81,120344,81,120396,81,120448,81,11605,81,119851,114,119903,114,119955,114,120007,114,120059,114,120111,114,120163,114,120215,114,120267,114,120319,114,120371,114,120423,114,120475,114,43847,114,43848,114,7462,114,11397,114,43905,114,119318,82,8475,82,8476,82,8477,82,119825,82,119877,82,119929,82,120033,82,120189,82,120241,82,120293,82,120345,82,120397,82,120449,82,422,82,5025,82,5074,82,66740,82,5511,82,42211,82,94005,82,65363,115,119852,115,119904,115,119956,115,120008,115,120060,115,120112,115,120164,115,120216,115,120268,115,120320,115,120372,115,120424,115,120476,115,42801,115,445,115,1109,115,43946,115,71873,115,66632,115,65331,83,119826,83,119878,83,119930,83,119982,83,120034,83,120086,83,120138,83,120190,83,120242,83,120294,83,120346,83,120398,83,120450,83,1029,83,1359,83,5077,83,5082,83,42210,83,94010,83,66198,83,66592,83,119853,116,119905,116,119957,116,120009,116,120061,116,120113,116,120165,116,120217,116,120269,116,120321,116,120373,116,120425,116,120477,116,8868,84,10201,84,128872,84,65332,84,119827,84,119879,84,119931,84,119983,84,120035,84,120087,84,120139,84,120191,84,120243,84,120295,84,120347,84,120399,84,120451,84,932,84,120507,84,120565,84,120623,84,120681,84,120739,84,11430,84,5026,84,42196,84,93962,84,71868,84,66199,84,66225,84,66325,84,119854,117,119906,117,119958,117,120010,117,120062,117,120114,117,120166,117,120218,117,120270,117,120322,117,120374,117,120426,117,120478,117,42911,117,7452,117,43854,117,43858,117,651,117,965,117,120534,117,120592,117,120650,117,120708,117,120766,117,1405,117,66806,117,71896,117,8746,85,8899,85,119828,85,119880,85,119932,85,119984,85,120036,85,120088,85,120140,85,120192,85,120244,85,120296,85,120348,85,120400,85,120452,85,1357,85,4608,85,66766,85,5196,85,42228,85,94018,85,71864,85,8744,118,8897,118,65366,118,8564,118,119855,118,119907,118,119959,118,120011,118,120063,118,120115,118,120167,118,120219,118,120271,118,120323,118,120375,118,120427,118,120479,118,7456,118,957,118,120526,118,120584,118,120642,118,120700,118,120758,118,1141,118,1496,118,71430,118,43945,118,71872,118,119309,86,1639,86,1783,86,8548,86,119829,86,119881,86,119933,86,119985,86,120037,86,120089,86,120141,86,120193,86,120245,86,120297,86,120349,86,120401,86,120453,86,1140,86,11576,86,5081,86,5167,86,42719,86,42214,86,93960,86,71840,86,66845,86,623,119,119856,119,119908,119,119960,119,120012,119,120064,119,120116,119,120168,119,120220,119,120272,119,120324,119,120376,119,120428,119,120480,119,7457,119,1121,119,1309,119,1377,119,71434,119,71438,119,71439,119,43907,119,71919,87,71910,87,119830,87,119882,87,119934,87,119986,87,120038,87,120090,87,120142,87,120194,87,120246,87,120298,87,120350,87,120402,87,120454,87,1308,87,5043,87,5076,87,42218,87,5742,120,10539,120,10540,120,10799,120,65368,120,8569,120,119857,120,119909,120,119961,120,120013,120,120065,120,120117,120,120169,120,120221,120,120273,120,120325,120,120377,120,120429,120,120481,120,5441,120,5501,120,5741,88,9587,88,66338,88,71916,88,65336,88,8553,88,119831,88,119883,88,119935,88,119987,88,120039,88,120091,88,120143,88,120195,88,120247,88,120299,88,120351,88,120403,88,120455,88,42931,88,935,88,120510,88,120568,88,120626,88,120684,88,120742,88,11436,88,11613,88,5815,88,42219,88,66192,88,66228,88,66327,88,66855,88,611,121,7564,121,65369,121,119858,121,119910,121,119962,121,120014,121,120066,121,120118,121,120170,121,120222,121,120274,121,120326,121,120378,121,120430,121,120482,121,655,121,7935,121,43866,121,947,121,8509,121,120516,121,120574,121,120632,121,120690,121,120748,121,1199,121,4327,121,71900,121,65337,89,119832,89,119884,89,119936,89,119988,89,120040,89,120092,89,120144,89,120196,89,120248,89,120300,89,120352,89,120404,89,120456,89,933,89,978,89,120508,89,120566,89,120624,89,120682,89,120740,89,11432,89,1198,89,5033,89,5053,89,42220,89,94019,89,71844,89,66226,89,119859,122,119911,122,119963,122,120015,122,120067,122,120119,122,120171,122,120223,122,120275,122,120327,122,120379,122,120431,122,120483,122,7458,122,43923,122,71876,122,66293,90,71909,90,65338,90,8484,90,8488,90,119833,90,119885,90,119937,90,119989,90,120041,90,120197,90,120249,90,120301,90,120353,90,120405,90,120457,90,918,90,120493,90,120551,90,120609,90,120667,90,120725,90,5059,90,42204,90,71849,90,65282,34,65284,36,65285,37,65286,38,65290,42,65291,43,65294,46,65295,47,65296,48,65297,49,65298,50,65299,51,65300,52,65301,53,65302,54,65303,55,65304,56,65305,57,65308,60,65309,61,65310,62,65312,64,65316,68,65318,70,65319,71,65324,76,65329,81,65330,82,65333,85,65334,86,65335,87,65343,95,65346,98,65348,100,65350,102,65355,107,65357,109,65358,110,65361,113,65362,114,65364,116,65365,117,65367,119,65370,122,65371,123,65373,125,119846,109],\"_default\":[160,32,8211,45,65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],\"cs\":[65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],\"de\":[65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],\"es\":[8211,45,65374,126,65306,58,65281,33,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],\"fr\":[65374,126,65306,58,65281,33,8216,96,8245,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],\"it\":[160,32,8211,45,65374,126,65306,58,65281,33,8216,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],\"ja\":[8211,45,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65292,44,65307,59],\"ko\":[8211,45,65374,126,65306,58,65281,33,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],\"pl\":[65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],\"pt-BR\":[65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],\"qps-ploc\":[160,32,8211,45,65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],\"ru\":[65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,305,105,921,73,1009,112,215,120,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],\"tr\":[160,32,8211,45,65374,126,65306,58,65281,33,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],\"zh-hans\":[65374,126,65306,58,65281,33,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65288,40,65289,41],\"zh-hant\":[8211,45,65374,126,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65307,59]}'); - }); - static cache = new LRUCachedFunction({ getCacheKey: JSON.stringify }, (locales) => { - function arrayToMap(arr) { - const result = new Map(); - for (let i = 0; i < arr.length; i += 2) { - result.set(arr[i], arr[i + 1]); - } - return result; - } - function mergeMaps(map1, map2) { - const result = new Map(map1); - for (const [key, value] of map2) { - result.set(key, value); - } - return result; - } - function intersectMaps(map1, map2) { - if (!map1) { - return map2; - } - const result = new Map(); - for (const [key, value] of map1) { - if (map2.has(key)) { - result.set(key, value); - } - } - return result; - } - const data = this.ambiguousCharacterData.value; - let filteredLocales = locales.filter((l) => !l.startsWith('_') && l in data); - if (filteredLocales.length === 0) { - filteredLocales = ['_default']; - } - let languageSpecificMap = undefined; - for (const locale of filteredLocales) { - const map = arrayToMap(data[locale]); - languageSpecificMap = intersectMaps(languageSpecificMap, map); - } - const commonMap = arrayToMap(data['_common']); - const map = mergeMaps(commonMap, languageSpecificMap); - return new AmbiguousCharacters(map); - }); - static getInstance(locales) { - return AmbiguousCharacters.cache.get(Array.from(locales)); - } - static _locales = new Lazy(() => Object.keys(AmbiguousCharacters.ambiguousCharacterData.value).filter((k) => !k.startsWith('_'))); - static getLocales() { - return AmbiguousCharacters._locales.value; - } - constructor(confusableDictionary) { - this.confusableDictionary = confusableDictionary; - } - isAmbiguous(codePoint) { - return this.confusableDictionary.has(codePoint); - } - containsAmbiguousCharacter(str) { - for (let i = 0; i < str.length; i++) { - const codePoint = str.codePointAt(i); - if (typeof codePoint === 'number' && this.isAmbiguous(codePoint)) { - return true; - } - } - return false; - } - /** - * Returns the non basic ASCII code point that the given code point can be confused, - * or undefined if such code point does note exist. - */ - getPrimaryConfusable(codePoint) { - return this.confusableDictionary.get(codePoint); - } - getConfusableCodePoints() { - return new Set(this.confusableDictionary.keys()); - } -} -export class InvisibleCharacters { - static getRawData() { - // Generated using https://github.com/hediet/vscode-unicode-data - return JSON.parse('[9,10,11,12,13,32,127,160,173,847,1564,4447,4448,6068,6069,6155,6156,6157,6158,7355,7356,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8203,8204,8205,8206,8207,8234,8235,8236,8237,8238,8239,8287,8288,8289,8290,8291,8292,8293,8294,8295,8296,8297,8298,8299,8300,8301,8302,8303,10240,12288,12644,65024,65025,65026,65027,65028,65029,65030,65031,65032,65033,65034,65035,65036,65037,65038,65039,65279,65440,65520,65521,65522,65523,65524,65525,65526,65527,65528,65532,78844,119155,119156,119157,119158,119159,119160,119161,119162,917504,917505,917506,917507,917508,917509,917510,917511,917512,917513,917514,917515,917516,917517,917518,917519,917520,917521,917522,917523,917524,917525,917526,917527,917528,917529,917530,917531,917532,917533,917534,917535,917536,917537,917538,917539,917540,917541,917542,917543,917544,917545,917546,917547,917548,917549,917550,917551,917552,917553,917554,917555,917556,917557,917558,917559,917560,917561,917562,917563,917564,917565,917566,917567,917568,917569,917570,917571,917572,917573,917574,917575,917576,917577,917578,917579,917580,917581,917582,917583,917584,917585,917586,917587,917588,917589,917590,917591,917592,917593,917594,917595,917596,917597,917598,917599,917600,917601,917602,917603,917604,917605,917606,917607,917608,917609,917610,917611,917612,917613,917614,917615,917616,917617,917618,917619,917620,917621,917622,917623,917624,917625,917626,917627,917628,917629,917630,917631,917760,917761,917762,917763,917764,917765,917766,917767,917768,917769,917770,917771,917772,917773,917774,917775,917776,917777,917778,917779,917780,917781,917782,917783,917784,917785,917786,917787,917788,917789,917790,917791,917792,917793,917794,917795,917796,917797,917798,917799,917800,917801,917802,917803,917804,917805,917806,917807,917808,917809,917810,917811,917812,917813,917814,917815,917816,917817,917818,917819,917820,917821,917822,917823,917824,917825,917826,917827,917828,917829,917830,917831,917832,917833,917834,917835,917836,917837,917838,917839,917840,917841,917842,917843,917844,917845,917846,917847,917848,917849,917850,917851,917852,917853,917854,917855,917856,917857,917858,917859,917860,917861,917862,917863,917864,917865,917866,917867,917868,917869,917870,917871,917872,917873,917874,917875,917876,917877,917878,917879,917880,917881,917882,917883,917884,917885,917886,917887,917888,917889,917890,917891,917892,917893,917894,917895,917896,917897,917898,917899,917900,917901,917902,917903,917904,917905,917906,917907,917908,917909,917910,917911,917912,917913,917914,917915,917916,917917,917918,917919,917920,917921,917922,917923,917924,917925,917926,917927,917928,917929,917930,917931,917932,917933,917934,917935,917936,917937,917938,917939,917940,917941,917942,917943,917944,917945,917946,917947,917948,917949,917950,917951,917952,917953,917954,917955,917956,917957,917958,917959,917960,917961,917962,917963,917964,917965,917966,917967,917968,917969,917970,917971,917972,917973,917974,917975,917976,917977,917978,917979,917980,917981,917982,917983,917984,917985,917986,917987,917988,917989,917990,917991,917992,917993,917994,917995,917996,917997,917998,917999]'); - } - static _data = undefined; - static getData() { - if (!this._data) { - this._data = new Set(InvisibleCharacters.getRawData()); - } - return this._data; - } - static isInvisibleCharacter(codePoint) { - return InvisibleCharacters.getData().has(codePoint); - } - static containsInvisibleCharacter(str) { - for (let i = 0; i < str.length; i++) { - const codePoint = str.codePointAt(i); - if (typeof codePoint === 'number' && InvisibleCharacters.isInvisibleCharacter(codePoint)) { - return true; - } - } - return false; - } - static get codePoints() { - return InvisibleCharacters.getData(); - } -} +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +'use strict'; +export const empty = ''; +import { REGEX_VAR, REGEX_VAR_ALT } from "./constants.js"; +export const substitute = (template, map) => { + const transform = (k) => k || ''; + return template.replace(REGEX_VAR, (match, key, format) => transform(map[key]).toString()); +}; +export const substituteAlt = (template, map) => { + const transform = (k) => k || ''; + return template.replace(REGEX_VAR_ALT, (match, key, format) => transform(map[key]).toString()); +}; +import { LRUCachedFunction } from './cache.js'; +import { Lazy } from './lazy.js'; +export function isFalsyOrWhitespace(str) { + if (!str || typeof str !== 'string') { + return true; + } + return str.trim().length === 0; +} +const _formatRegexp = /{(\d+)}/g; +/** + * Helper to produce a string with a variable number of arguments. Insert variable segments + * into the string using the {n} notation where N is the index of the argument following the string. + * @param value string to which formatting is applied + * @param args replacements for {n}-entries + */ +export function format(value, ...args) { + if (args.length === 0) { + return value; + } + return value.replace(_formatRegexp, function (match, group) { + const idx = parseInt(group, 10); + return isNaN(idx) || idx < 0 || idx >= args.length ? + match : + args[idx]; + }); +} +const _format2Regexp = /{([^}]+)}/g; +/** + * Helper to create a string from a template and a string record. + * Similar to `format` but with objects instead of positional arguments. + */ +export function format2(template, values) { + if (Object.keys(values).length === 0) { + return template; + } + return template.replace(_format2Regexp, (match, group) => (values[group] ?? match)); +} +/** + * Encodes the given value so that it can be used as literal value in html attributes. + * + * In other words, computes `$val`, such that `attr` in `
` has the runtime value `value`. + * This prevents XSS injection. + */ +export function htmlAttributeEncodeValue(value) { + return value.replace(/[<>"'&]/g, ch => { + switch (ch) { + case '<': return '<'; + case '>': return '>'; + case '"': return '"'; + case '\'': return '''; + case '&': return '&'; + } + return ch; + }); +} +/** + * Converts HTML characters inside the string to use entities instead. Makes the string safe from + * being used e.g. in HTMLElement.innerHTML. + */ +export function escape(html) { + return html.replace(/[<>&]/g, function (match) { + switch (match) { + case '<': return '<'; + case '>': return '>'; + case '&': return '&'; + default: return match; + } + }); +} +/** + * Escapes regular expression characters in a given string + */ +export function escapeRegExpCharacters(value) { + return value.replace(/[\\\{\}\*\+\?\|\^\$\.\[\]\(\)]/g, '\\$&'); +} +/** + * Counts how often `substr` occurs inside `value`. + */ +export function count(value, substr) { + let result = 0; + let index = value.indexOf(substr); + while (index !== -1) { + result++; + index = value.indexOf(substr, index + substr.length); + } + return result; +} +export function truncate(value, maxLength, suffix = '…') { + if (value.length <= maxLength) { + return value; + } + return `${value.substr(0, maxLength)}${suffix}`; +} +export function truncateMiddle(value, maxLength, suffix = '…') { + if (value.length <= maxLength) { + return value; + } + const prefixLength = Math.ceil(maxLength / 2) - suffix.length / 2; + const suffixLength = Math.floor(maxLength / 2) - suffix.length / 2; + return `${value.substr(0, prefixLength)}${suffix}${value.substr(value.length - suffixLength)}`; +} +/** + * Removes all occurrences of needle from the beginning and end of haystack. + * @param haystack string to trim + * @param needle the thing to trim (default is a blank) + */ +export function trim(haystack, needle = ' ') { + const trimmed = ltrim(haystack, needle); + return rtrim(trimmed, needle); +} +/** + * Removes all occurrences of needle from the beginning of haystack. + * @param haystack string to trim + * @param needle the thing to trim + */ +export function ltrim(haystack, needle) { + if (!haystack || !needle) { + return haystack; + } + const needleLen = needle.length; + if (needleLen === 0 || haystack.length === 0) { + return haystack; + } + let offset = 0; + while (haystack.indexOf(needle, offset) === offset) { + offset = offset + needleLen; + } + return haystack.substring(offset); +} +/** + * Removes all occurrences of needle from the end of haystack. + * @param haystack string to trim + * @param needle the thing to trim + */ +export function rtrim(haystack, needle) { + if (!haystack || !needle) { + return haystack; + } + const needleLen = needle.length, haystackLen = haystack.length; + if (needleLen === 0 || haystackLen === 0) { + return haystack; + } + let offset = haystackLen, idx = -1; + while (true) { + idx = haystack.lastIndexOf(needle, offset - 1); + if (idx === -1 || idx + needleLen !== offset) { + break; + } + if (idx === 0) { + return ''; + } + offset = idx; + } + return haystack.substring(0, offset); +} +export function convertSimple2RegExpPattern(pattern) { + return pattern.replace(/[\-\\\{\}\+\?\|\^\$\.\,\[\]\(\)\#\s]/g, '\\$&').replace(/[\*]/g, '.*'); +} +export function stripWildcards(pattern) { + return pattern.replace(/\*/g, ''); +} +export function createRegExp(searchString, isRegex, options = {}) { + if (!searchString) { + throw new Error('Cannot create regex from empty string'); + } + if (!isRegex) { + searchString = escapeRegExpCharacters(searchString); + } + if (options.wholeWord) { + if (!/\B/.test(searchString.charAt(0))) { + searchString = '\\b' + searchString; + } + if (!/\B/.test(searchString.charAt(searchString.length - 1))) { + searchString = searchString + '\\b'; + } + } + let modifiers = ''; + if (options.global) { + modifiers += 'g'; + } + if (!options.matchCase) { + modifiers += 'i'; + } + if (options.multiline) { + modifiers += 'm'; + } + if (options.unicode) { + modifiers += 'u'; + } + return new RegExp(searchString, modifiers); +} +export function regExpLeadsToEndlessLoop(regexp) { + // Exit early if it's one of these special cases which are meant to match + // against an empty string + if (regexp.source === '^' || regexp.source === '^$' || regexp.source === '$' || regexp.source === '^\\s*$') { + return false; + } + // We check against an empty string. If the regular expression doesn't advance + // (e.g. ends in an endless loop) it will match an empty string. + const match = regexp.exec(''); + return !!(match && regexp.lastIndex === 0); +} +export function joinStrings(items, separator) { + return items.filter(item => item !== undefined && item !== null && item !== false).join(separator); +} +export function splitLines(str) { + return str.split(/\r\n|\r|\n/); +} +export function splitLinesIncludeSeparators(str) { + const linesWithSeparators = []; + const splitLinesAndSeparators = str.split(/(\r\n|\r|\n)/); + for (let i = 0; i < Math.ceil(splitLinesAndSeparators.length / 2); i++) { + linesWithSeparators.push(splitLinesAndSeparators[2 * i] + (splitLinesAndSeparators[2 * i + 1] ?? '')); + } + return linesWithSeparators; +} +/** + * Returns first index of the string that is not whitespace. + * If string is empty or contains only whitespaces, returns -1 + */ +export function firstNonWhitespaceIndex(str) { + for (let i = 0, len = str.length; i < len; i++) { + const chCode = str.charCodeAt(i); + if (chCode !== 32 /* CharCode.Space */ && chCode !== 9 /* CharCode.Tab */) { + return i; + } + } + return -1; +} +/** + * Returns the leading whitespace of the string. + * If the string contains only whitespaces, returns entire string + */ +export function getLeadingWhitespace(str, start = 0, end = str.length) { + for (let i = start; i < end; i++) { + const chCode = str.charCodeAt(i); + if (chCode !== 32 /* CharCode.Space */ && chCode !== 9 /* CharCode.Tab */) { + return str.substring(start, i); + } + } + return str.substring(start, end); +} +/** + * Returns last index of the string that is not whitespace. + * If string is empty or contains only whitespaces, returns -1 + */ +export function lastNonWhitespaceIndex(str, startIndex = str.length - 1) { + for (let i = startIndex; i >= 0; i--) { + const chCode = str.charCodeAt(i); + if (chCode !== 32 /* CharCode.Space */ && chCode !== 9 /* CharCode.Tab */) { + return i; + } + } + return -1; +} +export function getIndentationLength(str) { + const idx = firstNonWhitespaceIndex(str); + if (idx === -1) { + return str.length; + } + return idx; +} +/** + * Function that works identically to String.prototype.replace, except, the + * replace function is allowed to be async and return a Promise. + */ +export function replaceAsync(str, search, replacer) { + const parts = []; + let last = 0; + for (const match of str.matchAll(search)) { + parts.push(str.slice(last, match.index)); + if (match.index === undefined) { + throw new Error('match.index should be defined'); + } + last = match.index + match[0].length; + parts.push(replacer(match[0], ...match.slice(1), match.index, str, match.groups)); + } + parts.push(str.slice(last)); + return Promise.all(parts).then(p => p.join('')); +} +export function compare(a, b) { + if (a < b) { + return -1; + } + else if (a > b) { + return 1; + } + else { + return 0; + } +} +export function compareSubstring(a, b, aStart = 0, aEnd = a.length, bStart = 0, bEnd = b.length) { + for (; aStart < aEnd && bStart < bEnd; aStart++, bStart++) { + const codeA = a.charCodeAt(aStart); + const codeB = b.charCodeAt(bStart); + if (codeA < codeB) { + return -1; + } + else if (codeA > codeB) { + return 1; + } + } + const aLen = aEnd - aStart; + const bLen = bEnd - bStart; + if (aLen < bLen) { + return -1; + } + else if (aLen > bLen) { + return 1; + } + return 0; +} +export function compareIgnoreCase(a, b) { + return compareSubstringIgnoreCase(a, b, 0, a.length, 0, b.length); +} +export function compareSubstringIgnoreCase(a, b, aStart = 0, aEnd = a.length, bStart = 0, bEnd = b.length) { + for (; aStart < aEnd && bStart < bEnd; aStart++, bStart++) { + let codeA = a.charCodeAt(aStart); + let codeB = b.charCodeAt(bStart); + if (codeA === codeB) { + // equal + continue; + } + if (codeA >= 128 || codeB >= 128) { + // not ASCII letters -> fallback to lower-casing strings + return compareSubstring(a.toLowerCase(), b.toLowerCase(), aStart, aEnd, bStart, bEnd); + } + // mapper lower-case ascii letter onto upper-case varinats + // [97-122] (lower ascii) --> [65-90] (upper ascii) + if (isLowerAsciiLetter(codeA)) { + codeA -= 32; + } + if (isLowerAsciiLetter(codeB)) { + codeB -= 32; + } + // compare both code points + const diff = codeA - codeB; + if (diff === 0) { + continue; + } + return diff; + } + const aLen = aEnd - aStart; + const bLen = bEnd - bStart; + if (aLen < bLen) { + return -1; + } + else if (aLen > bLen) { + return 1; + } + return 0; +} +export function isAsciiDigit(code) { + return code >= 48 /* CharCode.Digit0 */ && code <= 57 /* CharCode.Digit9 */; +} +export function isLowerAsciiLetter(code) { + return code >= 97 /* CharCode.a */ && code <= 122 /* CharCode.z */; +} +export function isUpperAsciiLetter(code) { + return code >= 65 /* CharCode.A */ && code <= 90 /* CharCode.Z */; +} +export function equalsIgnoreCase(a, b) { + return a.length === b.length && compareSubstringIgnoreCase(a, b) === 0; +} +export function startsWithIgnoreCase(str, candidate) { + const candidateLength = candidate.length; + if (candidate.length > str.length) { + return false; + } + return compareSubstringIgnoreCase(str, candidate, 0, candidateLength) === 0; +} +/** + * @returns the length of the common prefix of the two strings. + */ +export function commonPrefixLength(a, b) { + const len = Math.min(a.length, b.length); + let i; + for (i = 0; i < len; i++) { + if (a.charCodeAt(i) !== b.charCodeAt(i)) { + return i; + } + } + return len; +} +/** + * @returns the length of the common suffix of the two strings. + */ +export function commonSuffixLength(a, b) { + const len = Math.min(a.length, b.length); + let i; + const aLastIndex = a.length - 1; + const bLastIndex = b.length - 1; + for (i = 0; i < len; i++) { + if (a.charCodeAt(aLastIndex - i) !== b.charCodeAt(bLastIndex - i)) { + return i; + } + } + return len; +} +/** + * See http://en.wikipedia.org/wiki/Surrogate_pair + */ +export function isHighSurrogate(charCode) { + return (0xD800 <= charCode && charCode <= 0xDBFF); +} +/** + * See http://en.wikipedia.org/wiki/Surrogate_pair + */ +export function isLowSurrogate(charCode) { + return (0xDC00 <= charCode && charCode <= 0xDFFF); +} +/** + * See http://en.wikipedia.org/wiki/Surrogate_pair + */ +export function computeCodePoint(highSurrogate, lowSurrogate) { + return ((highSurrogate - 0xD800) << 10) + (lowSurrogate - 0xDC00) + 0x10000; +} +/** + * get the code point that begins at offset `offset` + */ +export function getNextCodePoint(str, len, offset) { + const charCode = str.charCodeAt(offset); + if (isHighSurrogate(charCode) && offset + 1 < len) { + const nextCharCode = str.charCodeAt(offset + 1); + if (isLowSurrogate(nextCharCode)) { + return computeCodePoint(charCode, nextCharCode); + } + } + return charCode; +} +/** + * get the code point that ends right before offset `offset` + */ +function getPrevCodePoint(str, offset) { + const charCode = str.charCodeAt(offset - 1); + if (isLowSurrogate(charCode) && offset > 1) { + const prevCharCode = str.charCodeAt(offset - 2); + if (isHighSurrogate(prevCharCode)) { + return computeCodePoint(prevCharCode, charCode); + } + } + return charCode; +} +export class CodePointIterator { + _str; + _len; + _offset; + get offset() { + return this._offset; + } + constructor(str, offset = 0) { + this._str = str; + this._len = str.length; + this._offset = offset; + } + setOffset(offset) { + this._offset = offset; + } + prevCodePoint() { + const codePoint = getPrevCodePoint(this._str, this._offset); + this._offset -= (codePoint >= 65536 /* Constants.UNICODE_SUPPLEMENTARY_PLANE_BEGIN */ ? 2 : 1); + return codePoint; + } + nextCodePoint() { + const codePoint = getNextCodePoint(this._str, this._len, this._offset); + this._offset += (codePoint >= 65536 /* Constants.UNICODE_SUPPLEMENTARY_PLANE_BEGIN */ ? 2 : 1); + return codePoint; + } + eol() { + return (this._offset >= this._len); + } +} +export class GraphemeIterator { + _iterator; + get offset() { + return this._iterator.offset; + } + constructor(str, offset = 0) { + this._iterator = new CodePointIterator(str, offset); + } + nextGraphemeLength() { + const graphemeBreakTree = GraphemeBreakTree.getInstance(); + const iterator = this._iterator; + const initialOffset = iterator.offset; + let graphemeBreakType = graphemeBreakTree.getGraphemeBreakType(iterator.nextCodePoint()); + while (!iterator.eol()) { + const offset = iterator.offset; + const nextGraphemeBreakType = graphemeBreakTree.getGraphemeBreakType(iterator.nextCodePoint()); + if (breakBetweenGraphemeBreakType(graphemeBreakType, nextGraphemeBreakType)) { + // move iterator back + iterator.setOffset(offset); + break; + } + graphemeBreakType = nextGraphemeBreakType; + } + return (iterator.offset - initialOffset); + } + prevGraphemeLength() { + const graphemeBreakTree = GraphemeBreakTree.getInstance(); + const iterator = this._iterator; + const initialOffset = iterator.offset; + let graphemeBreakType = graphemeBreakTree.getGraphemeBreakType(iterator.prevCodePoint()); + while (iterator.offset > 0) { + const offset = iterator.offset; + const prevGraphemeBreakType = graphemeBreakTree.getGraphemeBreakType(iterator.prevCodePoint()); + if (breakBetweenGraphemeBreakType(prevGraphemeBreakType, graphemeBreakType)) { + // move iterator back + iterator.setOffset(offset); + break; + } + graphemeBreakType = prevGraphemeBreakType; + } + return (initialOffset - iterator.offset); + } + eol() { + return this._iterator.eol(); + } +} +export function nextCharLength(str, initialOffset) { + const iterator = new GraphemeIterator(str, initialOffset); + return iterator.nextGraphemeLength(); +} +export function prevCharLength(str, initialOffset) { + const iterator = new GraphemeIterator(str, initialOffset); + return iterator.prevGraphemeLength(); +} +export function getCharContainingOffset(str, offset) { + if (offset > 0 && isLowSurrogate(str.charCodeAt(offset))) { + offset--; + } + const endOffset = offset + nextCharLength(str, offset); + const startOffset = endOffset - prevCharLength(str, endOffset); + return [startOffset, endOffset]; +} +export function charCount(str) { + const iterator = new GraphemeIterator(str); + let length = 0; + while (!iterator.eol()) { + length++; + iterator.nextGraphemeLength(); + } + return length; +} +let CONTAINS_RTL = undefined; +function makeContainsRtl() { + // Generated using https://github.com/alexdima/unicode-utils/blob/main/rtl-test.js + return /(?:[\u05BE\u05C0\u05C3\u05C6\u05D0-\u05F4\u0608\u060B\u060D\u061B-\u064A\u066D-\u066F\u0671-\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u0710\u0712-\u072F\u074D-\u07A5\u07B1-\u07EA\u07F4\u07F5\u07FA\u07FE-\u0815\u081A\u0824\u0828\u0830-\u0858\u085E-\u088E\u08A0-\u08C9\u200F\uFB1D\uFB1F-\uFB28\uFB2A-\uFD3D\uFD50-\uFDC7\uFDF0-\uFDFC\uFE70-\uFEFC]|\uD802[\uDC00-\uDD1B\uDD20-\uDE00\uDE10-\uDE35\uDE40-\uDEE4\uDEEB-\uDF35\uDF40-\uDFFF]|\uD803[\uDC00-\uDD23\uDE80-\uDEA9\uDEAD-\uDF45\uDF51-\uDF81\uDF86-\uDFF6]|\uD83A[\uDC00-\uDCCF\uDD00-\uDD43\uDD4B-\uDFFF]|\uD83B[\uDC00-\uDEBB])/; +} +/** + * Returns true if `str` contains any Unicode character that is classified as "R" or "AL". + */ +export function containsRTL(str) { + if (!CONTAINS_RTL) { + CONTAINS_RTL = makeContainsRtl(); + } + return CONTAINS_RTL.test(str); +} +const IS_BASIC_ASCII = /^[\t\n\r\x20-\x7E]*$/; +/** + * Returns true if `str` contains only basic ASCII characters in the range 32 - 126 (including 32 and 126) or \n, \r, \t + */ +export function isBasicASCII(str) { + return IS_BASIC_ASCII.test(str); +} +export const UNUSUAL_LINE_TERMINATORS = /[\u2028\u2029]/; // LINE SEPARATOR (LS) or PARAGRAPH SEPARATOR (PS) +/** + * Returns true if `str` contains unusual line terminators, like LS or PS + */ +export function containsUnusualLineTerminators(str) { + return UNUSUAL_LINE_TERMINATORS.test(str); +} +export function isFullWidthCharacter(charCode) { + // Do a cheap trick to better support wrapping of wide characters, treat them as 2 columns + // http://jrgraphix.net/research/unicode_blocks.php + // 2E80 - 2EFF CJK Radicals Supplement + // 2F00 - 2FDF Kangxi Radicals + // 2FF0 - 2FFF Ideographic Description Characters + // 3000 - 303F CJK Symbols and Punctuation + // 3040 - 309F Hiragana + // 30A0 - 30FF Katakana + // 3100 - 312F Bopomofo + // 3130 - 318F Hangul Compatibility Jamo + // 3190 - 319F Kanbun + // 31A0 - 31BF Bopomofo Extended + // 31F0 - 31FF Katakana Phonetic Extensions + // 3200 - 32FF Enclosed CJK Letters and Months + // 3300 - 33FF CJK Compatibility + // 3400 - 4DBF CJK Unified Ideographs Extension A + // 4DC0 - 4DFF Yijing Hexagram Symbols + // 4E00 - 9FFF CJK Unified Ideographs + // A000 - A48F Yi Syllables + // A490 - A4CF Yi Radicals + // AC00 - D7AF Hangul Syllables + // [IGNORE] D800 - DB7F High Surrogates + // [IGNORE] DB80 - DBFF High Private Use Surrogates + // [IGNORE] DC00 - DFFF Low Surrogates + // [IGNORE] E000 - F8FF Private Use Area + // F900 - FAFF CJK Compatibility Ideographs + // [IGNORE] FB00 - FB4F Alphabetic Presentation Forms + // [IGNORE] FB50 - FDFF Arabic Presentation Forms-A + // [IGNORE] FE00 - FE0F Variation Selectors + // [IGNORE] FE20 - FE2F Combining Half Marks + // [IGNORE] FE30 - FE4F CJK Compatibility Forms + // [IGNORE] FE50 - FE6F Small Form Variants + // [IGNORE] FE70 - FEFF Arabic Presentation Forms-B + // FF00 - FFEF Halfwidth and Fullwidth Forms + // [https://en.wikipedia.org/wiki/Halfwidth_and_fullwidth_forms] + // of which FF01 - FF5E fullwidth ASCII of 21 to 7E + // [IGNORE] and FF65 - FFDC halfwidth of Katakana and Hangul + // [IGNORE] FFF0 - FFFF Specials + return ((charCode >= 0x2E80 && charCode <= 0xD7AF) + || (charCode >= 0xF900 && charCode <= 0xFAFF) + || (charCode >= 0xFF01 && charCode <= 0xFF5E)); +} +/** + * A fast function (therefore imprecise) to check if code points are emojis. + * Generated using https://github.com/alexdima/unicode-utils/blob/main/emoji-test.js + */ +export function isEmojiImprecise(x) { + return ((x >= 0x1F1E6 && x <= 0x1F1FF) || (x === 8986) || (x === 8987) || (x === 9200) + || (x === 9203) || (x >= 9728 && x <= 10175) || (x === 11088) || (x === 11093) + || (x >= 127744 && x <= 128591) || (x >= 128640 && x <= 128764) + || (x >= 128992 && x <= 129008) || (x >= 129280 && x <= 129535) + || (x >= 129648 && x <= 129782)); +} +/** + * Given a string and a max length returns a shorted version. Shorting + * happens at favorable positions - such as whitespace or punctuation characters. + * The return value can be longer than the given value of `n`. Leading whitespace is always trimmed. + */ +export function lcut(text, n, prefix = '') { + const trimmed = text.trimStart(); + if (trimmed.length < n) { + return trimmed; + } + const re = /\b/g; + let i = 0; + while (re.test(trimmed)) { + if (trimmed.length - re.lastIndex < n) { + break; + } + i = re.lastIndex; + re.lastIndex += 1; + } + if (i === 0) { + return trimmed; + } + return prefix + trimmed.substring(i).trimStart(); +} +// Escape codes, compiled from https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h3-Functions-using-CSI-_-ordered-by-the-final-character_s_ +// Plus additional markers for custom `\x1b]...\x07` instructions. +const CSI_SEQUENCE = /(?:(?:\x1b\[|\x9B)[=?>!]?[\d;:]*["$#'* ]?[a-zA-Z@^`{}|~])|(:?\x1b\].*?\x07)/g; +/** Iterates over parts of a string with CSI sequences */ +export function* forAnsiStringParts(str) { + let last = 0; + for (const match of str.matchAll(CSI_SEQUENCE)) { + if (last !== match.index) { + yield { isCode: false, str: str.substring(last, match.index) }; + } + yield { isCode: true, str: match[0] }; + last = match.index + match[0].length; + } + if (last !== str.length) { + yield { isCode: false, str: str.substring(last) }; + } +} +/** + * Strips ANSI escape sequences from a string. + * @param str The dastringa stringo strip the ANSI escape sequences from. + * + * @example + * removeAnsiEscapeCodes('\u001b[31mHello, World!\u001b[0m'); + * // 'Hello, World!' + */ +export function removeAnsiEscapeCodes(str) { + if (str) { + str = str.replace(CSI_SEQUENCE, ''); + } + return str; +} +const PROMPT_NON_PRINTABLE = /\\\[.*?\\\]/g; +/** + * Strips ANSI escape sequences from a UNIX-style prompt string (eg. `$PS1`). + * @param str The string to strip the ANSI escape sequences from. + * + * @example + * removeAnsiEscapeCodesFromPrompt('\n\\[\u001b[01;34m\\]\\w\\[\u001b[00m\\]\n\\[\u001b[1;32m\\]> \\[\u001b[0m\\]'); + * // '\n\\w\n> ' + */ +export function removeAnsiEscapeCodesFromPrompt(str) { + return removeAnsiEscapeCodes(str).replace(PROMPT_NON_PRINTABLE, ''); +} +// -- UTF-8 BOM +export const UTF8_BOM_CHARACTER = String.fromCharCode(65279 /* CharCode.UTF8_BOM */); +export function startsWithUTF8BOM(str) { + return !!(str && str.length > 0 && str.charCodeAt(0) === 65279 /* CharCode.UTF8_BOM */); +} +export function stripUTF8BOM(str) { + return startsWithUTF8BOM(str) ? str.substr(1) : str; +} +/** + * Checks if the characters of the provided query string are included in the + * target string. The characters do not have to be contiguous within the string. + */ +export function fuzzyContains(target, query) { + if (!target || !query) { + return false; // return early if target or query are undefined + } + if (target.length < query.length) { + return false; // impossible for query to be contained in target + } + const queryLen = query.length; + const targetLower = target.toLowerCase(); + let index = 0; + let lastIndexOf = -1; + while (index < queryLen) { + const indexOf = targetLower.indexOf(query[index], lastIndexOf + 1); + if (indexOf < 0) { + return false; + } + lastIndexOf = indexOf; + index++; + } + return true; +} +export function containsUppercaseCharacter(target, ignoreEscapedChars = false) { + if (!target) { + return false; + } + if (ignoreEscapedChars) { + target = target.replace(/\\./g, ''); + } + return target.toLowerCase() !== target; +} +export function uppercaseFirstLetter(str) { + return str.charAt(0).toUpperCase() + str.slice(1); +} +export function getNLines(str, n = 1) { + if (n === 0) { + return ''; + } + let idx = -1; + do { + idx = str.indexOf('\n', idx + 1); + n--; + } while (n > 0 && idx >= 0); + if (idx === -1) { + return str; + } + if (str[idx - 1] === '\r') { + idx--; + } + return str.substr(0, idx); +} +/** + * Produces 'a'-'z', followed by 'A'-'Z'... followed by 'a'-'z', etc. + */ +export function singleLetterHash(n) { + const LETTERS_CNT = (90 /* CharCode.Z */ - 65 /* CharCode.A */ + 1); + n = n % (2 * LETTERS_CNT); + if (n < LETTERS_CNT) { + return String.fromCharCode(97 /* CharCode.a */ + n); + } + return String.fromCharCode(65 /* CharCode.A */ + n - LETTERS_CNT); +} +//#region Unicode Grapheme Break +export function getGraphemeBreakType(codePoint) { + const graphemeBreakTree = GraphemeBreakTree.getInstance(); + return graphemeBreakTree.getGraphemeBreakType(codePoint); +} +function breakBetweenGraphemeBreakType(breakTypeA, breakTypeB) { + // http://www.unicode.org/reports/tr29/#Grapheme_Cluster_Boundary_Rules + // !!! Let's make the common case a bit faster + if (breakTypeA === 0 /* GraphemeBreakType.Other */) { + // see https://www.unicode.org/Public/13.0.0/ucd/auxiliary/GraphemeBreakTest-13.0.0d10.html#table + return (breakTypeB !== 5 /* GraphemeBreakType.Extend */ && breakTypeB !== 7 /* GraphemeBreakType.SpacingMark */); + } + // Do not break between a CR and LF. Otherwise, break before and after controls. + // GB3 CR × LF + // GB4 (Control | CR | LF) ÷ + // GB5 ÷ (Control | CR | LF) + if (breakTypeA === 2 /* GraphemeBreakType.CR */) { + if (breakTypeB === 3 /* GraphemeBreakType.LF */) { + return false; // GB3 + } + } + if (breakTypeA === 4 /* GraphemeBreakType.Control */ || breakTypeA === 2 /* GraphemeBreakType.CR */ || breakTypeA === 3 /* GraphemeBreakType.LF */) { + return true; // GB4 + } + if (breakTypeB === 4 /* GraphemeBreakType.Control */ || breakTypeB === 2 /* GraphemeBreakType.CR */ || breakTypeB === 3 /* GraphemeBreakType.LF */) { + return true; // GB5 + } + // Do not break Hangul syllable sequences. + // GB6 L × (L | V | LV | LVT) + // GB7 (LV | V) × (V | T) + // GB8 (LVT | T) × T + if (breakTypeA === 8 /* GraphemeBreakType.L */) { + if (breakTypeB === 8 /* GraphemeBreakType.L */ || breakTypeB === 9 /* GraphemeBreakType.V */ || breakTypeB === 11 /* GraphemeBreakType.LV */ || breakTypeB === 12 /* GraphemeBreakType.LVT */) { + return false; // GB6 + } + } + if (breakTypeA === 11 /* GraphemeBreakType.LV */ || breakTypeA === 9 /* GraphemeBreakType.V */) { + if (breakTypeB === 9 /* GraphemeBreakType.V */ || breakTypeB === 10 /* GraphemeBreakType.T */) { + return false; // GB7 + } + } + if (breakTypeA === 12 /* GraphemeBreakType.LVT */ || breakTypeA === 10 /* GraphemeBreakType.T */) { + if (breakTypeB === 10 /* GraphemeBreakType.T */) { + return false; // GB8 + } + } + // Do not break before extending characters or ZWJ. + // GB9 × (Extend | ZWJ) + if (breakTypeB === 5 /* GraphemeBreakType.Extend */ || breakTypeB === 13 /* GraphemeBreakType.ZWJ */) { + return false; // GB9 + } + // The GB9a and GB9b rules only apply to extended grapheme clusters: + // Do not break before SpacingMarks, or after Prepend characters. + // GB9a × SpacingMark + // GB9b Prepend × + if (breakTypeB === 7 /* GraphemeBreakType.SpacingMark */) { + return false; // GB9a + } + if (breakTypeA === 1 /* GraphemeBreakType.Prepend */) { + return false; // GB9b + } + // Do not break within emoji modifier sequences or emoji zwj sequences. + // GB11 \p{Extended_Pictographic} Extend* ZWJ × \p{Extended_Pictographic} + if (breakTypeA === 13 /* GraphemeBreakType.ZWJ */ && breakTypeB === 14 /* GraphemeBreakType.Extended_Pictographic */) { + // Note: we are not implementing the rule entirely here to avoid introducing states + return false; // GB11 + } + // GB12 sot (RI RI)* RI × RI + // GB13 [^RI] (RI RI)* RI × RI + if (breakTypeA === 6 /* GraphemeBreakType.Regional_Indicator */ && breakTypeB === 6 /* GraphemeBreakType.Regional_Indicator */) { + // Note: we are not implementing the rule entirely here to avoid introducing states + return false; // GB12 & GB13 + } + // GB999 Any ÷ Any + return true; +} +export var GraphemeBreakType; +(function (GraphemeBreakType) { + GraphemeBreakType[GraphemeBreakType["Other"] = 0] = "Other"; + GraphemeBreakType[GraphemeBreakType["Prepend"] = 1] = "Prepend"; + GraphemeBreakType[GraphemeBreakType["CR"] = 2] = "CR"; + GraphemeBreakType[GraphemeBreakType["LF"] = 3] = "LF"; + GraphemeBreakType[GraphemeBreakType["Control"] = 4] = "Control"; + GraphemeBreakType[GraphemeBreakType["Extend"] = 5] = "Extend"; + GraphemeBreakType[GraphemeBreakType["Regional_Indicator"] = 6] = "Regional_Indicator"; + GraphemeBreakType[GraphemeBreakType["SpacingMark"] = 7] = "SpacingMark"; + GraphemeBreakType[GraphemeBreakType["L"] = 8] = "L"; + GraphemeBreakType[GraphemeBreakType["V"] = 9] = "V"; + GraphemeBreakType[GraphemeBreakType["T"] = 10] = "T"; + GraphemeBreakType[GraphemeBreakType["LV"] = 11] = "LV"; + GraphemeBreakType[GraphemeBreakType["LVT"] = 12] = "LVT"; + GraphemeBreakType[GraphemeBreakType["ZWJ"] = 13] = "ZWJ"; + GraphemeBreakType[GraphemeBreakType["Extended_Pictographic"] = 14] = "Extended_Pictographic"; +})(GraphemeBreakType || (GraphemeBreakType = {})); +class GraphemeBreakTree { + static _INSTANCE = null; + static getInstance() { + if (!GraphemeBreakTree._INSTANCE) { + GraphemeBreakTree._INSTANCE = new GraphemeBreakTree(); + } + return GraphemeBreakTree._INSTANCE; + } + _data; + constructor() { + this._data = getGraphemeBreakRawData(); + } + getGraphemeBreakType(codePoint) { + // !!! Let's make 7bit ASCII a bit faster: 0..31 + if (codePoint < 32) { + if (codePoint === 10 /* CharCode.LineFeed */) { + return 3 /* GraphemeBreakType.LF */; + } + if (codePoint === 13 /* CharCode.CarriageReturn */) { + return 2 /* GraphemeBreakType.CR */; + } + return 4 /* GraphemeBreakType.Control */; + } + // !!! Let's make 7bit ASCII a bit faster: 32..126 + if (codePoint < 127) { + return 0 /* GraphemeBreakType.Other */; + } + const data = this._data; + const nodeCount = data.length / 3; + let nodeIndex = 1; + while (nodeIndex <= nodeCount) { + if (codePoint < data[3 * nodeIndex]) { + // go left + nodeIndex = 2 * nodeIndex; + } + else if (codePoint > data[3 * nodeIndex + 1]) { + // go right + nodeIndex = 2 * nodeIndex + 1; + } + else { + // hit + return data[3 * nodeIndex + 2]; + } + } + return 0 /* GraphemeBreakType.Other */; + } +} +function getGraphemeBreakRawData() { + // generated using https://github.com/alexdima/unicode-utils/blob/main/grapheme-break.js + return JSON.parse('[0,0,0,51229,51255,12,44061,44087,12,127462,127487,6,7083,7085,5,47645,47671,12,54813,54839,12,128678,128678,14,3270,3270,5,9919,9923,14,45853,45879,12,49437,49463,12,53021,53047,12,71216,71218,7,128398,128399,14,129360,129374,14,2519,2519,5,4448,4519,9,9742,9742,14,12336,12336,14,44957,44983,12,46749,46775,12,48541,48567,12,50333,50359,12,52125,52151,12,53917,53943,12,69888,69890,5,73018,73018,5,127990,127990,14,128558,128559,14,128759,128760,14,129653,129655,14,2027,2035,5,2891,2892,7,3761,3761,5,6683,6683,5,8293,8293,4,9825,9826,14,9999,9999,14,43452,43453,5,44509,44535,12,45405,45431,12,46301,46327,12,47197,47223,12,48093,48119,12,48989,49015,12,49885,49911,12,50781,50807,12,51677,51703,12,52573,52599,12,53469,53495,12,54365,54391,12,65279,65279,4,70471,70472,7,72145,72147,7,119173,119179,5,127799,127818,14,128240,128244,14,128512,128512,14,128652,128652,14,128721,128722,14,129292,129292,14,129445,129450,14,129734,129743,14,1476,1477,5,2366,2368,7,2750,2752,7,3076,3076,5,3415,3415,5,4141,4144,5,6109,6109,5,6964,6964,5,7394,7400,5,9197,9198,14,9770,9770,14,9877,9877,14,9968,9969,14,10084,10084,14,43052,43052,5,43713,43713,5,44285,44311,12,44733,44759,12,45181,45207,12,45629,45655,12,46077,46103,12,46525,46551,12,46973,46999,12,47421,47447,12,47869,47895,12,48317,48343,12,48765,48791,12,49213,49239,12,49661,49687,12,50109,50135,12,50557,50583,12,51005,51031,12,51453,51479,12,51901,51927,12,52349,52375,12,52797,52823,12,53245,53271,12,53693,53719,12,54141,54167,12,54589,54615,12,55037,55063,12,69506,69509,5,70191,70193,5,70841,70841,7,71463,71467,5,72330,72342,5,94031,94031,5,123628,123631,5,127763,127765,14,127941,127941,14,128043,128062,14,128302,128317,14,128465,128467,14,128539,128539,14,128640,128640,14,128662,128662,14,128703,128703,14,128745,128745,14,129004,129007,14,129329,129330,14,129402,129402,14,129483,129483,14,129686,129704,14,130048,131069,14,173,173,4,1757,1757,1,2200,2207,5,2434,2435,7,2631,2632,5,2817,2817,5,3008,3008,5,3201,3201,5,3387,3388,5,3542,3542,5,3902,3903,7,4190,4192,5,6002,6003,5,6439,6440,5,6765,6770,7,7019,7027,5,7154,7155,7,8205,8205,13,8505,8505,14,9654,9654,14,9757,9757,14,9792,9792,14,9852,9853,14,9890,9894,14,9937,9937,14,9981,9981,14,10035,10036,14,11035,11036,14,42654,42655,5,43346,43347,7,43587,43587,5,44006,44007,7,44173,44199,12,44397,44423,12,44621,44647,12,44845,44871,12,45069,45095,12,45293,45319,12,45517,45543,12,45741,45767,12,45965,45991,12,46189,46215,12,46413,46439,12,46637,46663,12,46861,46887,12,47085,47111,12,47309,47335,12,47533,47559,12,47757,47783,12,47981,48007,12,48205,48231,12,48429,48455,12,48653,48679,12,48877,48903,12,49101,49127,12,49325,49351,12,49549,49575,12,49773,49799,12,49997,50023,12,50221,50247,12,50445,50471,12,50669,50695,12,50893,50919,12,51117,51143,12,51341,51367,12,51565,51591,12,51789,51815,12,52013,52039,12,52237,52263,12,52461,52487,12,52685,52711,12,52909,52935,12,53133,53159,12,53357,53383,12,53581,53607,12,53805,53831,12,54029,54055,12,54253,54279,12,54477,54503,12,54701,54727,12,54925,54951,12,55149,55175,12,68101,68102,5,69762,69762,7,70067,70069,7,70371,70378,5,70720,70721,7,71087,71087,5,71341,71341,5,71995,71996,5,72249,72249,7,72850,72871,5,73109,73109,5,118576,118598,5,121505,121519,5,127245,127247,14,127568,127569,14,127777,127777,14,127872,127891,14,127956,127967,14,128015,128016,14,128110,128172,14,128259,128259,14,128367,128368,14,128424,128424,14,128488,128488,14,128530,128532,14,128550,128551,14,128566,128566,14,128647,128647,14,128656,128656,14,128667,128673,14,128691,128693,14,128715,128715,14,128728,128732,14,128752,128752,14,128765,128767,14,129096,129103,14,129311,129311,14,129344,129349,14,129394,129394,14,129413,129425,14,129466,129471,14,129511,129535,14,129664,129666,14,129719,129722,14,129760,129767,14,917536,917631,5,13,13,2,1160,1161,5,1564,1564,4,1807,1807,1,2085,2087,5,2307,2307,7,2382,2383,7,2497,2500,5,2563,2563,7,2677,2677,5,2763,2764,7,2879,2879,5,2914,2915,5,3021,3021,5,3142,3144,5,3263,3263,5,3285,3286,5,3398,3400,7,3530,3530,5,3633,3633,5,3864,3865,5,3974,3975,5,4155,4156,7,4229,4230,5,5909,5909,7,6078,6085,7,6277,6278,5,6451,6456,7,6744,6750,5,6846,6846,5,6972,6972,5,7074,7077,5,7146,7148,7,7222,7223,5,7416,7417,5,8234,8238,4,8417,8417,5,9000,9000,14,9203,9203,14,9730,9731,14,9748,9749,14,9762,9763,14,9776,9783,14,9800,9811,14,9831,9831,14,9872,9873,14,9882,9882,14,9900,9903,14,9929,9933,14,9941,9960,14,9974,9974,14,9989,9989,14,10006,10006,14,10062,10062,14,10160,10160,14,11647,11647,5,12953,12953,14,43019,43019,5,43232,43249,5,43443,43443,5,43567,43568,7,43696,43696,5,43765,43765,7,44013,44013,5,44117,44143,12,44229,44255,12,44341,44367,12,44453,44479,12,44565,44591,12,44677,44703,12,44789,44815,12,44901,44927,12,45013,45039,12,45125,45151,12,45237,45263,12,45349,45375,12,45461,45487,12,45573,45599,12,45685,45711,12,45797,45823,12,45909,45935,12,46021,46047,12,46133,46159,12,46245,46271,12,46357,46383,12,46469,46495,12,46581,46607,12,46693,46719,12,46805,46831,12,46917,46943,12,47029,47055,12,47141,47167,12,47253,47279,12,47365,47391,12,47477,47503,12,47589,47615,12,47701,47727,12,47813,47839,12,47925,47951,12,48037,48063,12,48149,48175,12,48261,48287,12,48373,48399,12,48485,48511,12,48597,48623,12,48709,48735,12,48821,48847,12,48933,48959,12,49045,49071,12,49157,49183,12,49269,49295,12,49381,49407,12,49493,49519,12,49605,49631,12,49717,49743,12,49829,49855,12,49941,49967,12,50053,50079,12,50165,50191,12,50277,50303,12,50389,50415,12,50501,50527,12,50613,50639,12,50725,50751,12,50837,50863,12,50949,50975,12,51061,51087,12,51173,51199,12,51285,51311,12,51397,51423,12,51509,51535,12,51621,51647,12,51733,51759,12,51845,51871,12,51957,51983,12,52069,52095,12,52181,52207,12,52293,52319,12,52405,52431,12,52517,52543,12,52629,52655,12,52741,52767,12,52853,52879,12,52965,52991,12,53077,53103,12,53189,53215,12,53301,53327,12,53413,53439,12,53525,53551,12,53637,53663,12,53749,53775,12,53861,53887,12,53973,53999,12,54085,54111,12,54197,54223,12,54309,54335,12,54421,54447,12,54533,54559,12,54645,54671,12,54757,54783,12,54869,54895,12,54981,55007,12,55093,55119,12,55243,55291,10,66045,66045,5,68325,68326,5,69688,69702,5,69817,69818,5,69957,69958,7,70089,70092,5,70198,70199,5,70462,70462,5,70502,70508,5,70750,70750,5,70846,70846,7,71100,71101,5,71230,71230,7,71351,71351,5,71737,71738,5,72000,72000,7,72160,72160,5,72273,72278,5,72752,72758,5,72882,72883,5,73031,73031,5,73461,73462,7,94192,94193,7,119149,119149,7,121403,121452,5,122915,122916,5,126980,126980,14,127358,127359,14,127535,127535,14,127759,127759,14,127771,127771,14,127792,127793,14,127825,127867,14,127897,127899,14,127945,127945,14,127985,127986,14,128000,128007,14,128021,128021,14,128066,128100,14,128184,128235,14,128249,128252,14,128266,128276,14,128335,128335,14,128379,128390,14,128407,128419,14,128444,128444,14,128481,128481,14,128499,128499,14,128526,128526,14,128536,128536,14,128543,128543,14,128556,128556,14,128564,128564,14,128577,128580,14,128643,128645,14,128649,128649,14,128654,128654,14,128660,128660,14,128664,128664,14,128675,128675,14,128686,128689,14,128695,128696,14,128705,128709,14,128717,128719,14,128725,128725,14,128736,128741,14,128747,128748,14,128755,128755,14,128762,128762,14,128981,128991,14,129009,129023,14,129160,129167,14,129296,129304,14,129320,129327,14,129340,129342,14,129356,129356,14,129388,129392,14,129399,129400,14,129404,129407,14,129432,129442,14,129454,129455,14,129473,129474,14,129485,129487,14,129648,129651,14,129659,129660,14,129671,129679,14,129709,129711,14,129728,129730,14,129751,129753,14,129776,129782,14,917505,917505,4,917760,917999,5,10,10,3,127,159,4,768,879,5,1471,1471,5,1536,1541,1,1648,1648,5,1767,1768,5,1840,1866,5,2070,2073,5,2137,2139,5,2274,2274,1,2363,2363,7,2377,2380,7,2402,2403,5,2494,2494,5,2507,2508,7,2558,2558,5,2622,2624,7,2641,2641,5,2691,2691,7,2759,2760,5,2786,2787,5,2876,2876,5,2881,2884,5,2901,2902,5,3006,3006,5,3014,3016,7,3072,3072,5,3134,3136,5,3157,3158,5,3260,3260,5,3266,3266,5,3274,3275,7,3328,3329,5,3391,3392,7,3405,3405,5,3457,3457,5,3536,3537,7,3551,3551,5,3636,3642,5,3764,3772,5,3895,3895,5,3967,3967,7,3993,4028,5,4146,4151,5,4182,4183,7,4226,4226,5,4253,4253,5,4957,4959,5,5940,5940,7,6070,6070,7,6087,6088,7,6158,6158,4,6432,6434,5,6448,6449,7,6679,6680,5,6742,6742,5,6754,6754,5,6783,6783,5,6912,6915,5,6966,6970,5,6978,6978,5,7042,7042,7,7080,7081,5,7143,7143,7,7150,7150,7,7212,7219,5,7380,7392,5,7412,7412,5,8203,8203,4,8232,8232,4,8265,8265,14,8400,8412,5,8421,8432,5,8617,8618,14,9167,9167,14,9200,9200,14,9410,9410,14,9723,9726,14,9733,9733,14,9745,9745,14,9752,9752,14,9760,9760,14,9766,9766,14,9774,9774,14,9786,9786,14,9794,9794,14,9823,9823,14,9828,9828,14,9833,9850,14,9855,9855,14,9875,9875,14,9880,9880,14,9885,9887,14,9896,9897,14,9906,9916,14,9926,9927,14,9935,9935,14,9939,9939,14,9962,9962,14,9972,9972,14,9978,9978,14,9986,9986,14,9997,9997,14,10002,10002,14,10017,10017,14,10055,10055,14,10071,10071,14,10133,10135,14,10548,10549,14,11093,11093,14,12330,12333,5,12441,12442,5,42608,42610,5,43010,43010,5,43045,43046,5,43188,43203,7,43302,43309,5,43392,43394,5,43446,43449,5,43493,43493,5,43571,43572,7,43597,43597,7,43703,43704,5,43756,43757,5,44003,44004,7,44009,44010,7,44033,44059,12,44089,44115,12,44145,44171,12,44201,44227,12,44257,44283,12,44313,44339,12,44369,44395,12,44425,44451,12,44481,44507,12,44537,44563,12,44593,44619,12,44649,44675,12,44705,44731,12,44761,44787,12,44817,44843,12,44873,44899,12,44929,44955,12,44985,45011,12,45041,45067,12,45097,45123,12,45153,45179,12,45209,45235,12,45265,45291,12,45321,45347,12,45377,45403,12,45433,45459,12,45489,45515,12,45545,45571,12,45601,45627,12,45657,45683,12,45713,45739,12,45769,45795,12,45825,45851,12,45881,45907,12,45937,45963,12,45993,46019,12,46049,46075,12,46105,46131,12,46161,46187,12,46217,46243,12,46273,46299,12,46329,46355,12,46385,46411,12,46441,46467,12,46497,46523,12,46553,46579,12,46609,46635,12,46665,46691,12,46721,46747,12,46777,46803,12,46833,46859,12,46889,46915,12,46945,46971,12,47001,47027,12,47057,47083,12,47113,47139,12,47169,47195,12,47225,47251,12,47281,47307,12,47337,47363,12,47393,47419,12,47449,47475,12,47505,47531,12,47561,47587,12,47617,47643,12,47673,47699,12,47729,47755,12,47785,47811,12,47841,47867,12,47897,47923,12,47953,47979,12,48009,48035,12,48065,48091,12,48121,48147,12,48177,48203,12,48233,48259,12,48289,48315,12,48345,48371,12,48401,48427,12,48457,48483,12,48513,48539,12,48569,48595,12,48625,48651,12,48681,48707,12,48737,48763,12,48793,48819,12,48849,48875,12,48905,48931,12,48961,48987,12,49017,49043,12,49073,49099,12,49129,49155,12,49185,49211,12,49241,49267,12,49297,49323,12,49353,49379,12,49409,49435,12,49465,49491,12,49521,49547,12,49577,49603,12,49633,49659,12,49689,49715,12,49745,49771,12,49801,49827,12,49857,49883,12,49913,49939,12,49969,49995,12,50025,50051,12,50081,50107,12,50137,50163,12,50193,50219,12,50249,50275,12,50305,50331,12,50361,50387,12,50417,50443,12,50473,50499,12,50529,50555,12,50585,50611,12,50641,50667,12,50697,50723,12,50753,50779,12,50809,50835,12,50865,50891,12,50921,50947,12,50977,51003,12,51033,51059,12,51089,51115,12,51145,51171,12,51201,51227,12,51257,51283,12,51313,51339,12,51369,51395,12,51425,51451,12,51481,51507,12,51537,51563,12,51593,51619,12,51649,51675,12,51705,51731,12,51761,51787,12,51817,51843,12,51873,51899,12,51929,51955,12,51985,52011,12,52041,52067,12,52097,52123,12,52153,52179,12,52209,52235,12,52265,52291,12,52321,52347,12,52377,52403,12,52433,52459,12,52489,52515,12,52545,52571,12,52601,52627,12,52657,52683,12,52713,52739,12,52769,52795,12,52825,52851,12,52881,52907,12,52937,52963,12,52993,53019,12,53049,53075,12,53105,53131,12,53161,53187,12,53217,53243,12,53273,53299,12,53329,53355,12,53385,53411,12,53441,53467,12,53497,53523,12,53553,53579,12,53609,53635,12,53665,53691,12,53721,53747,12,53777,53803,12,53833,53859,12,53889,53915,12,53945,53971,12,54001,54027,12,54057,54083,12,54113,54139,12,54169,54195,12,54225,54251,12,54281,54307,12,54337,54363,12,54393,54419,12,54449,54475,12,54505,54531,12,54561,54587,12,54617,54643,12,54673,54699,12,54729,54755,12,54785,54811,12,54841,54867,12,54897,54923,12,54953,54979,12,55009,55035,12,55065,55091,12,55121,55147,12,55177,55203,12,65024,65039,5,65520,65528,4,66422,66426,5,68152,68154,5,69291,69292,5,69633,69633,5,69747,69748,5,69811,69814,5,69826,69826,5,69932,69932,7,70016,70017,5,70079,70080,7,70095,70095,5,70196,70196,5,70367,70367,5,70402,70403,7,70464,70464,5,70487,70487,5,70709,70711,7,70725,70725,7,70833,70834,7,70843,70844,7,70849,70849,7,71090,71093,5,71103,71104,5,71227,71228,7,71339,71339,5,71344,71349,5,71458,71461,5,71727,71735,5,71985,71989,7,71998,71998,5,72002,72002,7,72154,72155,5,72193,72202,5,72251,72254,5,72281,72283,5,72344,72345,5,72766,72766,7,72874,72880,5,72885,72886,5,73023,73029,5,73104,73105,5,73111,73111,5,92912,92916,5,94095,94098,5,113824,113827,4,119142,119142,7,119155,119162,4,119362,119364,5,121476,121476,5,122888,122904,5,123184,123190,5,125252,125258,5,127183,127183,14,127340,127343,14,127377,127386,14,127491,127503,14,127548,127551,14,127744,127756,14,127761,127761,14,127769,127769,14,127773,127774,14,127780,127788,14,127796,127797,14,127820,127823,14,127869,127869,14,127894,127895,14,127902,127903,14,127943,127943,14,127947,127950,14,127972,127972,14,127988,127988,14,127992,127994,14,128009,128011,14,128019,128019,14,128023,128041,14,128064,128064,14,128102,128107,14,128174,128181,14,128238,128238,14,128246,128247,14,128254,128254,14,128264,128264,14,128278,128299,14,128329,128330,14,128348,128359,14,128371,128377,14,128392,128393,14,128401,128404,14,128421,128421,14,128433,128434,14,128450,128452,14,128476,128478,14,128483,128483,14,128495,128495,14,128506,128506,14,128519,128520,14,128528,128528,14,128534,128534,14,128538,128538,14,128540,128542,14,128544,128549,14,128552,128555,14,128557,128557,14,128560,128563,14,128565,128565,14,128567,128576,14,128581,128591,14,128641,128642,14,128646,128646,14,128648,128648,14,128650,128651,14,128653,128653,14,128655,128655,14,128657,128659,14,128661,128661,14,128663,128663,14,128665,128666,14,128674,128674,14,128676,128677,14,128679,128685,14,128690,128690,14,128694,128694,14,128697,128702,14,128704,128704,14,128710,128714,14,128716,128716,14,128720,128720,14,128723,128724,14,128726,128727,14,128733,128735,14,128742,128744,14,128746,128746,14,128749,128751,14,128753,128754,14,128756,128758,14,128761,128761,14,128763,128764,14,128884,128895,14,128992,129003,14,129008,129008,14,129036,129039,14,129114,129119,14,129198,129279,14,129293,129295,14,129305,129310,14,129312,129319,14,129328,129328,14,129331,129338,14,129343,129343,14,129351,129355,14,129357,129359,14,129375,129387,14,129393,129393,14,129395,129398,14,129401,129401,14,129403,129403,14,129408,129412,14,129426,129431,14,129443,129444,14,129451,129453,14,129456,129465,14,129472,129472,14,129475,129482,14,129484,129484,14,129488,129510,14,129536,129647,14,129652,129652,14,129656,129658,14,129661,129663,14,129667,129670,14,129680,129685,14,129705,129708,14,129712,129718,14,129723,129727,14,129731,129733,14,129744,129750,14,129754,129759,14,129768,129775,14,129783,129791,14,917504,917504,4,917506,917535,4,917632,917759,4,918000,921599,4,0,9,4,11,12,4,14,31,4,169,169,14,174,174,14,1155,1159,5,1425,1469,5,1473,1474,5,1479,1479,5,1552,1562,5,1611,1631,5,1750,1756,5,1759,1764,5,1770,1773,5,1809,1809,5,1958,1968,5,2045,2045,5,2075,2083,5,2089,2093,5,2192,2193,1,2250,2273,5,2275,2306,5,2362,2362,5,2364,2364,5,2369,2376,5,2381,2381,5,2385,2391,5,2433,2433,5,2492,2492,5,2495,2496,7,2503,2504,7,2509,2509,5,2530,2531,5,2561,2562,5,2620,2620,5,2625,2626,5,2635,2637,5,2672,2673,5,2689,2690,5,2748,2748,5,2753,2757,5,2761,2761,7,2765,2765,5,2810,2815,5,2818,2819,7,2878,2878,5,2880,2880,7,2887,2888,7,2893,2893,5,2903,2903,5,2946,2946,5,3007,3007,7,3009,3010,7,3018,3020,7,3031,3031,5,3073,3075,7,3132,3132,5,3137,3140,7,3146,3149,5,3170,3171,5,3202,3203,7,3262,3262,7,3264,3265,7,3267,3268,7,3271,3272,7,3276,3277,5,3298,3299,5,3330,3331,7,3390,3390,5,3393,3396,5,3402,3404,7,3406,3406,1,3426,3427,5,3458,3459,7,3535,3535,5,3538,3540,5,3544,3550,7,3570,3571,7,3635,3635,7,3655,3662,5,3763,3763,7,3784,3789,5,3893,3893,5,3897,3897,5,3953,3966,5,3968,3972,5,3981,3991,5,4038,4038,5,4145,4145,7,4153,4154,5,4157,4158,5,4184,4185,5,4209,4212,5,4228,4228,7,4237,4237,5,4352,4447,8,4520,4607,10,5906,5908,5,5938,5939,5,5970,5971,5,6068,6069,5,6071,6077,5,6086,6086,5,6089,6099,5,6155,6157,5,6159,6159,5,6313,6313,5,6435,6438,7,6441,6443,7,6450,6450,5,6457,6459,5,6681,6682,7,6741,6741,7,6743,6743,7,6752,6752,5,6757,6764,5,6771,6780,5,6832,6845,5,6847,6862,5,6916,6916,7,6965,6965,5,6971,6971,7,6973,6977,7,6979,6980,7,7040,7041,5,7073,7073,7,7078,7079,7,7082,7082,7,7142,7142,5,7144,7145,5,7149,7149,5,7151,7153,5,7204,7211,7,7220,7221,7,7376,7378,5,7393,7393,7,7405,7405,5,7415,7415,7,7616,7679,5,8204,8204,5,8206,8207,4,8233,8233,4,8252,8252,14,8288,8292,4,8294,8303,4,8413,8416,5,8418,8420,5,8482,8482,14,8596,8601,14,8986,8987,14,9096,9096,14,9193,9196,14,9199,9199,14,9201,9202,14,9208,9210,14,9642,9643,14,9664,9664,14,9728,9729,14,9732,9732,14,9735,9741,14,9743,9744,14,9746,9746,14,9750,9751,14,9753,9756,14,9758,9759,14,9761,9761,14,9764,9765,14,9767,9769,14,9771,9773,14,9775,9775,14,9784,9785,14,9787,9791,14,9793,9793,14,9795,9799,14,9812,9822,14,9824,9824,14,9827,9827,14,9829,9830,14,9832,9832,14,9851,9851,14,9854,9854,14,9856,9861,14,9874,9874,14,9876,9876,14,9878,9879,14,9881,9881,14,9883,9884,14,9888,9889,14,9895,9895,14,9898,9899,14,9904,9905,14,9917,9918,14,9924,9925,14,9928,9928,14,9934,9934,14,9936,9936,14,9938,9938,14,9940,9940,14,9961,9961,14,9963,9967,14,9970,9971,14,9973,9973,14,9975,9977,14,9979,9980,14,9982,9985,14,9987,9988,14,9992,9996,14,9998,9998,14,10000,10001,14,10004,10004,14,10013,10013,14,10024,10024,14,10052,10052,14,10060,10060,14,10067,10069,14,10083,10083,14,10085,10087,14,10145,10145,14,10175,10175,14,11013,11015,14,11088,11088,14,11503,11505,5,11744,11775,5,12334,12335,5,12349,12349,14,12951,12951,14,42607,42607,5,42612,42621,5,42736,42737,5,43014,43014,5,43043,43044,7,43047,43047,7,43136,43137,7,43204,43205,5,43263,43263,5,43335,43345,5,43360,43388,8,43395,43395,7,43444,43445,7,43450,43451,7,43454,43456,7,43561,43566,5,43569,43570,5,43573,43574,5,43596,43596,5,43644,43644,5,43698,43700,5,43710,43711,5,43755,43755,7,43758,43759,7,43766,43766,5,44005,44005,5,44008,44008,5,44012,44012,7,44032,44032,11,44060,44060,11,44088,44088,11,44116,44116,11,44144,44144,11,44172,44172,11,44200,44200,11,44228,44228,11,44256,44256,11,44284,44284,11,44312,44312,11,44340,44340,11,44368,44368,11,44396,44396,11,44424,44424,11,44452,44452,11,44480,44480,11,44508,44508,11,44536,44536,11,44564,44564,11,44592,44592,11,44620,44620,11,44648,44648,11,44676,44676,11,44704,44704,11,44732,44732,11,44760,44760,11,44788,44788,11,44816,44816,11,44844,44844,11,44872,44872,11,44900,44900,11,44928,44928,11,44956,44956,11,44984,44984,11,45012,45012,11,45040,45040,11,45068,45068,11,45096,45096,11,45124,45124,11,45152,45152,11,45180,45180,11,45208,45208,11,45236,45236,11,45264,45264,11,45292,45292,11,45320,45320,11,45348,45348,11,45376,45376,11,45404,45404,11,45432,45432,11,45460,45460,11,45488,45488,11,45516,45516,11,45544,45544,11,45572,45572,11,45600,45600,11,45628,45628,11,45656,45656,11,45684,45684,11,45712,45712,11,45740,45740,11,45768,45768,11,45796,45796,11,45824,45824,11,45852,45852,11,45880,45880,11,45908,45908,11,45936,45936,11,45964,45964,11,45992,45992,11,46020,46020,11,46048,46048,11,46076,46076,11,46104,46104,11,46132,46132,11,46160,46160,11,46188,46188,11,46216,46216,11,46244,46244,11,46272,46272,11,46300,46300,11,46328,46328,11,46356,46356,11,46384,46384,11,46412,46412,11,46440,46440,11,46468,46468,11,46496,46496,11,46524,46524,11,46552,46552,11,46580,46580,11,46608,46608,11,46636,46636,11,46664,46664,11,46692,46692,11,46720,46720,11,46748,46748,11,46776,46776,11,46804,46804,11,46832,46832,11,46860,46860,11,46888,46888,11,46916,46916,11,46944,46944,11,46972,46972,11,47000,47000,11,47028,47028,11,47056,47056,11,47084,47084,11,47112,47112,11,47140,47140,11,47168,47168,11,47196,47196,11,47224,47224,11,47252,47252,11,47280,47280,11,47308,47308,11,47336,47336,11,47364,47364,11,47392,47392,11,47420,47420,11,47448,47448,11,47476,47476,11,47504,47504,11,47532,47532,11,47560,47560,11,47588,47588,11,47616,47616,11,47644,47644,11,47672,47672,11,47700,47700,11,47728,47728,11,47756,47756,11,47784,47784,11,47812,47812,11,47840,47840,11,47868,47868,11,47896,47896,11,47924,47924,11,47952,47952,11,47980,47980,11,48008,48008,11,48036,48036,11,48064,48064,11,48092,48092,11,48120,48120,11,48148,48148,11,48176,48176,11,48204,48204,11,48232,48232,11,48260,48260,11,48288,48288,11,48316,48316,11,48344,48344,11,48372,48372,11,48400,48400,11,48428,48428,11,48456,48456,11,48484,48484,11,48512,48512,11,48540,48540,11,48568,48568,11,48596,48596,11,48624,48624,11,48652,48652,11,48680,48680,11,48708,48708,11,48736,48736,11,48764,48764,11,48792,48792,11,48820,48820,11,48848,48848,11,48876,48876,11,48904,48904,11,48932,48932,11,48960,48960,11,48988,48988,11,49016,49016,11,49044,49044,11,49072,49072,11,49100,49100,11,49128,49128,11,49156,49156,11,49184,49184,11,49212,49212,11,49240,49240,11,49268,49268,11,49296,49296,11,49324,49324,11,49352,49352,11,49380,49380,11,49408,49408,11,49436,49436,11,49464,49464,11,49492,49492,11,49520,49520,11,49548,49548,11,49576,49576,11,49604,49604,11,49632,49632,11,49660,49660,11,49688,49688,11,49716,49716,11,49744,49744,11,49772,49772,11,49800,49800,11,49828,49828,11,49856,49856,11,49884,49884,11,49912,49912,11,49940,49940,11,49968,49968,11,49996,49996,11,50024,50024,11,50052,50052,11,50080,50080,11,50108,50108,11,50136,50136,11,50164,50164,11,50192,50192,11,50220,50220,11,50248,50248,11,50276,50276,11,50304,50304,11,50332,50332,11,50360,50360,11,50388,50388,11,50416,50416,11,50444,50444,11,50472,50472,11,50500,50500,11,50528,50528,11,50556,50556,11,50584,50584,11,50612,50612,11,50640,50640,11,50668,50668,11,50696,50696,11,50724,50724,11,50752,50752,11,50780,50780,11,50808,50808,11,50836,50836,11,50864,50864,11,50892,50892,11,50920,50920,11,50948,50948,11,50976,50976,11,51004,51004,11,51032,51032,11,51060,51060,11,51088,51088,11,51116,51116,11,51144,51144,11,51172,51172,11,51200,51200,11,51228,51228,11,51256,51256,11,51284,51284,11,51312,51312,11,51340,51340,11,51368,51368,11,51396,51396,11,51424,51424,11,51452,51452,11,51480,51480,11,51508,51508,11,51536,51536,11,51564,51564,11,51592,51592,11,51620,51620,11,51648,51648,11,51676,51676,11,51704,51704,11,51732,51732,11,51760,51760,11,51788,51788,11,51816,51816,11,51844,51844,11,51872,51872,11,51900,51900,11,51928,51928,11,51956,51956,11,51984,51984,11,52012,52012,11,52040,52040,11,52068,52068,11,52096,52096,11,52124,52124,11,52152,52152,11,52180,52180,11,52208,52208,11,52236,52236,11,52264,52264,11,52292,52292,11,52320,52320,11,52348,52348,11,52376,52376,11,52404,52404,11,52432,52432,11,52460,52460,11,52488,52488,11,52516,52516,11,52544,52544,11,52572,52572,11,52600,52600,11,52628,52628,11,52656,52656,11,52684,52684,11,52712,52712,11,52740,52740,11,52768,52768,11,52796,52796,11,52824,52824,11,52852,52852,11,52880,52880,11,52908,52908,11,52936,52936,11,52964,52964,11,52992,52992,11,53020,53020,11,53048,53048,11,53076,53076,11,53104,53104,11,53132,53132,11,53160,53160,11,53188,53188,11,53216,53216,11,53244,53244,11,53272,53272,11,53300,53300,11,53328,53328,11,53356,53356,11,53384,53384,11,53412,53412,11,53440,53440,11,53468,53468,11,53496,53496,11,53524,53524,11,53552,53552,11,53580,53580,11,53608,53608,11,53636,53636,11,53664,53664,11,53692,53692,11,53720,53720,11,53748,53748,11,53776,53776,11,53804,53804,11,53832,53832,11,53860,53860,11,53888,53888,11,53916,53916,11,53944,53944,11,53972,53972,11,54000,54000,11,54028,54028,11,54056,54056,11,54084,54084,11,54112,54112,11,54140,54140,11,54168,54168,11,54196,54196,11,54224,54224,11,54252,54252,11,54280,54280,11,54308,54308,11,54336,54336,11,54364,54364,11,54392,54392,11,54420,54420,11,54448,54448,11,54476,54476,11,54504,54504,11,54532,54532,11,54560,54560,11,54588,54588,11,54616,54616,11,54644,54644,11,54672,54672,11,54700,54700,11,54728,54728,11,54756,54756,11,54784,54784,11,54812,54812,11,54840,54840,11,54868,54868,11,54896,54896,11,54924,54924,11,54952,54952,11,54980,54980,11,55008,55008,11,55036,55036,11,55064,55064,11,55092,55092,11,55120,55120,11,55148,55148,11,55176,55176,11,55216,55238,9,64286,64286,5,65056,65071,5,65438,65439,5,65529,65531,4,66272,66272,5,68097,68099,5,68108,68111,5,68159,68159,5,68900,68903,5,69446,69456,5,69632,69632,7,69634,69634,7,69744,69744,5,69759,69761,5,69808,69810,7,69815,69816,7,69821,69821,1,69837,69837,1,69927,69931,5,69933,69940,5,70003,70003,5,70018,70018,7,70070,70078,5,70082,70083,1,70094,70094,7,70188,70190,7,70194,70195,7,70197,70197,7,70206,70206,5,70368,70370,7,70400,70401,5,70459,70460,5,70463,70463,7,70465,70468,7,70475,70477,7,70498,70499,7,70512,70516,5,70712,70719,5,70722,70724,5,70726,70726,5,70832,70832,5,70835,70840,5,70842,70842,5,70845,70845,5,70847,70848,5,70850,70851,5,71088,71089,7,71096,71099,7,71102,71102,7,71132,71133,5,71219,71226,5,71229,71229,5,71231,71232,5,71340,71340,7,71342,71343,7,71350,71350,7,71453,71455,5,71462,71462,7,71724,71726,7,71736,71736,7,71984,71984,5,71991,71992,7,71997,71997,7,71999,71999,1,72001,72001,1,72003,72003,5,72148,72151,5,72156,72159,7,72164,72164,7,72243,72248,5,72250,72250,1,72263,72263,5,72279,72280,7,72324,72329,1,72343,72343,7,72751,72751,7,72760,72765,5,72767,72767,5,72873,72873,7,72881,72881,7,72884,72884,7,73009,73014,5,73020,73021,5,73030,73030,1,73098,73102,7,73107,73108,7,73110,73110,7,73459,73460,5,78896,78904,4,92976,92982,5,94033,94087,7,94180,94180,5,113821,113822,5,118528,118573,5,119141,119141,5,119143,119145,5,119150,119154,5,119163,119170,5,119210,119213,5,121344,121398,5,121461,121461,5,121499,121503,5,122880,122886,5,122907,122913,5,122918,122922,5,123566,123566,5,125136,125142,5,126976,126979,14,126981,127182,14,127184,127231,14,127279,127279,14,127344,127345,14,127374,127374,14,127405,127461,14,127489,127490,14,127514,127514,14,127538,127546,14,127561,127567,14,127570,127743,14,127757,127758,14,127760,127760,14,127762,127762,14,127766,127768,14,127770,127770,14,127772,127772,14,127775,127776,14,127778,127779,14,127789,127791,14,127794,127795,14,127798,127798,14,127819,127819,14,127824,127824,14,127868,127868,14,127870,127871,14,127892,127893,14,127896,127896,14,127900,127901,14,127904,127940,14,127942,127942,14,127944,127944,14,127946,127946,14,127951,127955,14,127968,127971,14,127973,127984,14,127987,127987,14,127989,127989,14,127991,127991,14,127995,127999,5,128008,128008,14,128012,128014,14,128017,128018,14,128020,128020,14,128022,128022,14,128042,128042,14,128063,128063,14,128065,128065,14,128101,128101,14,128108,128109,14,128173,128173,14,128182,128183,14,128236,128237,14,128239,128239,14,128245,128245,14,128248,128248,14,128253,128253,14,128255,128258,14,128260,128263,14,128265,128265,14,128277,128277,14,128300,128301,14,128326,128328,14,128331,128334,14,128336,128347,14,128360,128366,14,128369,128370,14,128378,128378,14,128391,128391,14,128394,128397,14,128400,128400,14,128405,128406,14,128420,128420,14,128422,128423,14,128425,128432,14,128435,128443,14,128445,128449,14,128453,128464,14,128468,128475,14,128479,128480,14,128482,128482,14,128484,128487,14,128489,128494,14,128496,128498,14,128500,128505,14,128507,128511,14,128513,128518,14,128521,128525,14,128527,128527,14,128529,128529,14,128533,128533,14,128535,128535,14,128537,128537,14]'); +} +//#endregion +/** + * Computes the offset after performing a left delete on the given string, + * while considering unicode grapheme/emoji rules. +*/ +export function getLeftDeleteOffset(offset, str) { + if (offset === 0) { + return 0; + } + // Try to delete emoji part. + const emojiOffset = getOffsetBeforeLastEmojiComponent(offset, str); + if (emojiOffset !== undefined) { + return emojiOffset; + } + // Otherwise, just skip a single code point. + const iterator = new CodePointIterator(str, offset); + iterator.prevCodePoint(); + return iterator.offset; +} +function getOffsetBeforeLastEmojiComponent(initialOffset, str) { + // See https://www.unicode.org/reports/tr51/tr51-14.html#EBNF_and_Regex for the + // structure of emojis. + const iterator = new CodePointIterator(str, initialOffset); + let codePoint = iterator.prevCodePoint(); + // Skip modifiers + while ((isEmojiModifier(codePoint) || codePoint === 65039 /* CodePoint.emojiVariantSelector */ || codePoint === 8419 /* CodePoint.enclosingKeyCap */)) { + if (iterator.offset === 0) { + // Cannot skip modifier, no preceding emoji base. + return undefined; + } + codePoint = iterator.prevCodePoint(); + } + // Expect base emoji + if (!isEmojiImprecise(codePoint)) { + // Unexpected code point, not a valid emoji. + return undefined; + } + let resultOffset = iterator.offset; + if (resultOffset > 0) { + // Skip optional ZWJ code points that combine multiple emojis. + // In theory, we should check if that ZWJ actually combines multiple emojis + // to prevent deleting ZWJs in situations we didn't account for. + const optionalZwjCodePoint = iterator.prevCodePoint(); + if (optionalZwjCodePoint === 8205 /* CodePoint.zwj */) { + resultOffset = iterator.offset; + } + } + return resultOffset; +} +function isEmojiModifier(codePoint) { + return 0x1F3FB <= codePoint && codePoint <= 0x1F3FF; +} +var CodePoint; +(function (CodePoint) { + CodePoint[CodePoint["zwj"] = 8205] = "zwj"; + /** + * Variation Selector-16 (VS16) + */ + CodePoint[CodePoint["emojiVariantSelector"] = 65039] = "emojiVariantSelector"; + /** + * Combining Enclosing Keycap + */ + CodePoint[CodePoint["enclosingKeyCap"] = 8419] = "enclosingKeyCap"; +})(CodePoint || (CodePoint = {})); +export const noBreakWhitespace = '\xa0'; +export class AmbiguousCharacters { + confusableDictionary; + static ambiguousCharacterData = new Lazy(() => { + // Generated using https://github.com/hediet/vscode-unicode-data + // Stored as key1, value1, key2, value2, ... + return JSON.parse('{\"_common\":[8232,32,8233,32,5760,32,8192,32,8193,32,8194,32,8195,32,8196,32,8197,32,8198,32,8200,32,8201,32,8202,32,8287,32,8199,32,8239,32,2042,95,65101,95,65102,95,65103,95,8208,45,8209,45,8210,45,65112,45,1748,45,8259,45,727,45,8722,45,10134,45,11450,45,1549,44,1643,44,8218,44,184,44,42233,44,894,59,2307,58,2691,58,1417,58,1795,58,1796,58,5868,58,65072,58,6147,58,6153,58,8282,58,1475,58,760,58,42889,58,8758,58,720,58,42237,58,451,33,11601,33,660,63,577,63,2429,63,5038,63,42731,63,119149,46,8228,46,1793,46,1794,46,42510,46,68176,46,1632,46,1776,46,42232,46,1373,96,65287,96,8219,96,8242,96,1370,96,1523,96,8175,96,65344,96,900,96,8189,96,8125,96,8127,96,8190,96,697,96,884,96,712,96,714,96,715,96,756,96,699,96,701,96,700,96,702,96,42892,96,1497,96,2036,96,2037,96,5194,96,5836,96,94033,96,94034,96,65339,91,10088,40,10098,40,12308,40,64830,40,65341,93,10089,41,10099,41,12309,41,64831,41,10100,123,119060,123,10101,125,65342,94,8270,42,1645,42,8727,42,66335,42,5941,47,8257,47,8725,47,8260,47,9585,47,10187,47,10744,47,119354,47,12755,47,12339,47,11462,47,20031,47,12035,47,65340,92,65128,92,8726,92,10189,92,10741,92,10745,92,119311,92,119355,92,12756,92,20022,92,12034,92,42872,38,708,94,710,94,5869,43,10133,43,66203,43,8249,60,10094,60,706,60,119350,60,5176,60,5810,60,5120,61,11840,61,12448,61,42239,61,8250,62,10095,62,707,62,119351,62,5171,62,94015,62,8275,126,732,126,8128,126,8764,126,65372,124,65293,45,120784,50,120794,50,120804,50,120814,50,120824,50,130034,50,42842,50,423,50,1000,50,42564,50,5311,50,42735,50,119302,51,120785,51,120795,51,120805,51,120815,51,120825,51,130035,51,42923,51,540,51,439,51,42858,51,11468,51,1248,51,94011,51,71882,51,120786,52,120796,52,120806,52,120816,52,120826,52,130036,52,5070,52,71855,52,120787,53,120797,53,120807,53,120817,53,120827,53,130037,53,444,53,71867,53,120788,54,120798,54,120808,54,120818,54,120828,54,130038,54,11474,54,5102,54,71893,54,119314,55,120789,55,120799,55,120809,55,120819,55,120829,55,130039,55,66770,55,71878,55,2819,56,2538,56,2666,56,125131,56,120790,56,120800,56,120810,56,120820,56,120830,56,130040,56,547,56,546,56,66330,56,2663,57,2920,57,2541,57,3437,57,120791,57,120801,57,120811,57,120821,57,120831,57,130041,57,42862,57,11466,57,71884,57,71852,57,71894,57,9082,97,65345,97,119834,97,119886,97,119938,97,119990,97,120042,97,120094,97,120146,97,120198,97,120250,97,120302,97,120354,97,120406,97,120458,97,593,97,945,97,120514,97,120572,97,120630,97,120688,97,120746,97,65313,65,119808,65,119860,65,119912,65,119964,65,120016,65,120068,65,120120,65,120172,65,120224,65,120276,65,120328,65,120380,65,120432,65,913,65,120488,65,120546,65,120604,65,120662,65,120720,65,5034,65,5573,65,42222,65,94016,65,66208,65,119835,98,119887,98,119939,98,119991,98,120043,98,120095,98,120147,98,120199,98,120251,98,120303,98,120355,98,120407,98,120459,98,388,98,5071,98,5234,98,5551,98,65314,66,8492,66,119809,66,119861,66,119913,66,120017,66,120069,66,120121,66,120173,66,120225,66,120277,66,120329,66,120381,66,120433,66,42932,66,914,66,120489,66,120547,66,120605,66,120663,66,120721,66,5108,66,5623,66,42192,66,66178,66,66209,66,66305,66,65347,99,8573,99,119836,99,119888,99,119940,99,119992,99,120044,99,120096,99,120148,99,120200,99,120252,99,120304,99,120356,99,120408,99,120460,99,7428,99,1010,99,11429,99,43951,99,66621,99,128844,67,71922,67,71913,67,65315,67,8557,67,8450,67,8493,67,119810,67,119862,67,119914,67,119966,67,120018,67,120174,67,120226,67,120278,67,120330,67,120382,67,120434,67,1017,67,11428,67,5087,67,42202,67,66210,67,66306,67,66581,67,66844,67,8574,100,8518,100,119837,100,119889,100,119941,100,119993,100,120045,100,120097,100,120149,100,120201,100,120253,100,120305,100,120357,100,120409,100,120461,100,1281,100,5095,100,5231,100,42194,100,8558,68,8517,68,119811,68,119863,68,119915,68,119967,68,120019,68,120071,68,120123,68,120175,68,120227,68,120279,68,120331,68,120383,68,120435,68,5024,68,5598,68,5610,68,42195,68,8494,101,65349,101,8495,101,8519,101,119838,101,119890,101,119942,101,120046,101,120098,101,120150,101,120202,101,120254,101,120306,101,120358,101,120410,101,120462,101,43826,101,1213,101,8959,69,65317,69,8496,69,119812,69,119864,69,119916,69,120020,69,120072,69,120124,69,120176,69,120228,69,120280,69,120332,69,120384,69,120436,69,917,69,120492,69,120550,69,120608,69,120666,69,120724,69,11577,69,5036,69,42224,69,71846,69,71854,69,66182,69,119839,102,119891,102,119943,102,119995,102,120047,102,120099,102,120151,102,120203,102,120255,102,120307,102,120359,102,120411,102,120463,102,43829,102,42905,102,383,102,7837,102,1412,102,119315,70,8497,70,119813,70,119865,70,119917,70,120021,70,120073,70,120125,70,120177,70,120229,70,120281,70,120333,70,120385,70,120437,70,42904,70,988,70,120778,70,5556,70,42205,70,71874,70,71842,70,66183,70,66213,70,66853,70,65351,103,8458,103,119840,103,119892,103,119944,103,120048,103,120100,103,120152,103,120204,103,120256,103,120308,103,120360,103,120412,103,120464,103,609,103,7555,103,397,103,1409,103,119814,71,119866,71,119918,71,119970,71,120022,71,120074,71,120126,71,120178,71,120230,71,120282,71,120334,71,120386,71,120438,71,1292,71,5056,71,5107,71,42198,71,65352,104,8462,104,119841,104,119945,104,119997,104,120049,104,120101,104,120153,104,120205,104,120257,104,120309,104,120361,104,120413,104,120465,104,1211,104,1392,104,5058,104,65320,72,8459,72,8460,72,8461,72,119815,72,119867,72,119919,72,120023,72,120179,72,120231,72,120283,72,120335,72,120387,72,120439,72,919,72,120494,72,120552,72,120610,72,120668,72,120726,72,11406,72,5051,72,5500,72,42215,72,66255,72,731,105,9075,105,65353,105,8560,105,8505,105,8520,105,119842,105,119894,105,119946,105,119998,105,120050,105,120102,105,120154,105,120206,105,120258,105,120310,105,120362,105,120414,105,120466,105,120484,105,618,105,617,105,953,105,8126,105,890,105,120522,105,120580,105,120638,105,120696,105,120754,105,1110,105,42567,105,1231,105,43893,105,5029,105,71875,105,65354,106,8521,106,119843,106,119895,106,119947,106,119999,106,120051,106,120103,106,120155,106,120207,106,120259,106,120311,106,120363,106,120415,106,120467,106,1011,106,1112,106,65322,74,119817,74,119869,74,119921,74,119973,74,120025,74,120077,74,120129,74,120181,74,120233,74,120285,74,120337,74,120389,74,120441,74,42930,74,895,74,1032,74,5035,74,5261,74,42201,74,119844,107,119896,107,119948,107,120000,107,120052,107,120104,107,120156,107,120208,107,120260,107,120312,107,120364,107,120416,107,120468,107,8490,75,65323,75,119818,75,119870,75,119922,75,119974,75,120026,75,120078,75,120130,75,120182,75,120234,75,120286,75,120338,75,120390,75,120442,75,922,75,120497,75,120555,75,120613,75,120671,75,120729,75,11412,75,5094,75,5845,75,42199,75,66840,75,1472,108,8739,73,9213,73,65512,73,1633,108,1777,73,66336,108,125127,108,120783,73,120793,73,120803,73,120813,73,120823,73,130033,73,65321,73,8544,73,8464,73,8465,73,119816,73,119868,73,119920,73,120024,73,120128,73,120180,73,120232,73,120284,73,120336,73,120388,73,120440,73,65356,108,8572,73,8467,108,119845,108,119897,108,119949,108,120001,108,120053,108,120105,73,120157,73,120209,73,120261,73,120313,73,120365,73,120417,73,120469,73,448,73,120496,73,120554,73,120612,73,120670,73,120728,73,11410,73,1030,73,1216,73,1493,108,1503,108,1575,108,126464,108,126592,108,65166,108,65165,108,1994,108,11599,73,5825,73,42226,73,93992,73,66186,124,66313,124,119338,76,8556,76,8466,76,119819,76,119871,76,119923,76,120027,76,120079,76,120131,76,120183,76,120235,76,120287,76,120339,76,120391,76,120443,76,11472,76,5086,76,5290,76,42209,76,93974,76,71843,76,71858,76,66587,76,66854,76,65325,77,8559,77,8499,77,119820,77,119872,77,119924,77,120028,77,120080,77,120132,77,120184,77,120236,77,120288,77,120340,77,120392,77,120444,77,924,77,120499,77,120557,77,120615,77,120673,77,120731,77,1018,77,11416,77,5047,77,5616,77,5846,77,42207,77,66224,77,66321,77,119847,110,119899,110,119951,110,120003,110,120055,110,120107,110,120159,110,120211,110,120263,110,120315,110,120367,110,120419,110,120471,110,1400,110,1404,110,65326,78,8469,78,119821,78,119873,78,119925,78,119977,78,120029,78,120081,78,120185,78,120237,78,120289,78,120341,78,120393,78,120445,78,925,78,120500,78,120558,78,120616,78,120674,78,120732,78,11418,78,42208,78,66835,78,3074,111,3202,111,3330,111,3458,111,2406,111,2662,111,2790,111,3046,111,3174,111,3302,111,3430,111,3664,111,3792,111,4160,111,1637,111,1781,111,65359,111,8500,111,119848,111,119900,111,119952,111,120056,111,120108,111,120160,111,120212,111,120264,111,120316,111,120368,111,120420,111,120472,111,7439,111,7441,111,43837,111,959,111,120528,111,120586,111,120644,111,120702,111,120760,111,963,111,120532,111,120590,111,120648,111,120706,111,120764,111,11423,111,4351,111,1413,111,1505,111,1607,111,126500,111,126564,111,126596,111,65259,111,65260,111,65258,111,65257,111,1726,111,64428,111,64429,111,64427,111,64426,111,1729,111,64424,111,64425,111,64423,111,64422,111,1749,111,3360,111,4125,111,66794,111,71880,111,71895,111,66604,111,1984,79,2534,79,2918,79,12295,79,70864,79,71904,79,120782,79,120792,79,120802,79,120812,79,120822,79,130032,79,65327,79,119822,79,119874,79,119926,79,119978,79,120030,79,120082,79,120134,79,120186,79,120238,79,120290,79,120342,79,120394,79,120446,79,927,79,120502,79,120560,79,120618,79,120676,79,120734,79,11422,79,1365,79,11604,79,4816,79,2848,79,66754,79,42227,79,71861,79,66194,79,66219,79,66564,79,66838,79,9076,112,65360,112,119849,112,119901,112,119953,112,120005,112,120057,112,120109,112,120161,112,120213,112,120265,112,120317,112,120369,112,120421,112,120473,112,961,112,120530,112,120544,112,120588,112,120602,112,120646,112,120660,112,120704,112,120718,112,120762,112,120776,112,11427,112,65328,80,8473,80,119823,80,119875,80,119927,80,119979,80,120031,80,120083,80,120187,80,120239,80,120291,80,120343,80,120395,80,120447,80,929,80,120504,80,120562,80,120620,80,120678,80,120736,80,11426,80,5090,80,5229,80,42193,80,66197,80,119850,113,119902,113,119954,113,120006,113,120058,113,120110,113,120162,113,120214,113,120266,113,120318,113,120370,113,120422,113,120474,113,1307,113,1379,113,1382,113,8474,81,119824,81,119876,81,119928,81,119980,81,120032,81,120084,81,120188,81,120240,81,120292,81,120344,81,120396,81,120448,81,11605,81,119851,114,119903,114,119955,114,120007,114,120059,114,120111,114,120163,114,120215,114,120267,114,120319,114,120371,114,120423,114,120475,114,43847,114,43848,114,7462,114,11397,114,43905,114,119318,82,8475,82,8476,82,8477,82,119825,82,119877,82,119929,82,120033,82,120189,82,120241,82,120293,82,120345,82,120397,82,120449,82,422,82,5025,82,5074,82,66740,82,5511,82,42211,82,94005,82,65363,115,119852,115,119904,115,119956,115,120008,115,120060,115,120112,115,120164,115,120216,115,120268,115,120320,115,120372,115,120424,115,120476,115,42801,115,445,115,1109,115,43946,115,71873,115,66632,115,65331,83,119826,83,119878,83,119930,83,119982,83,120034,83,120086,83,120138,83,120190,83,120242,83,120294,83,120346,83,120398,83,120450,83,1029,83,1359,83,5077,83,5082,83,42210,83,94010,83,66198,83,66592,83,119853,116,119905,116,119957,116,120009,116,120061,116,120113,116,120165,116,120217,116,120269,116,120321,116,120373,116,120425,116,120477,116,8868,84,10201,84,128872,84,65332,84,119827,84,119879,84,119931,84,119983,84,120035,84,120087,84,120139,84,120191,84,120243,84,120295,84,120347,84,120399,84,120451,84,932,84,120507,84,120565,84,120623,84,120681,84,120739,84,11430,84,5026,84,42196,84,93962,84,71868,84,66199,84,66225,84,66325,84,119854,117,119906,117,119958,117,120010,117,120062,117,120114,117,120166,117,120218,117,120270,117,120322,117,120374,117,120426,117,120478,117,42911,117,7452,117,43854,117,43858,117,651,117,965,117,120534,117,120592,117,120650,117,120708,117,120766,117,1405,117,66806,117,71896,117,8746,85,8899,85,119828,85,119880,85,119932,85,119984,85,120036,85,120088,85,120140,85,120192,85,120244,85,120296,85,120348,85,120400,85,120452,85,1357,85,4608,85,66766,85,5196,85,42228,85,94018,85,71864,85,8744,118,8897,118,65366,118,8564,118,119855,118,119907,118,119959,118,120011,118,120063,118,120115,118,120167,118,120219,118,120271,118,120323,118,120375,118,120427,118,120479,118,7456,118,957,118,120526,118,120584,118,120642,118,120700,118,120758,118,1141,118,1496,118,71430,118,43945,118,71872,118,119309,86,1639,86,1783,86,8548,86,119829,86,119881,86,119933,86,119985,86,120037,86,120089,86,120141,86,120193,86,120245,86,120297,86,120349,86,120401,86,120453,86,1140,86,11576,86,5081,86,5167,86,42719,86,42214,86,93960,86,71840,86,66845,86,623,119,119856,119,119908,119,119960,119,120012,119,120064,119,120116,119,120168,119,120220,119,120272,119,120324,119,120376,119,120428,119,120480,119,7457,119,1121,119,1309,119,1377,119,71434,119,71438,119,71439,119,43907,119,71919,87,71910,87,119830,87,119882,87,119934,87,119986,87,120038,87,120090,87,120142,87,120194,87,120246,87,120298,87,120350,87,120402,87,120454,87,1308,87,5043,87,5076,87,42218,87,5742,120,10539,120,10540,120,10799,120,65368,120,8569,120,119857,120,119909,120,119961,120,120013,120,120065,120,120117,120,120169,120,120221,120,120273,120,120325,120,120377,120,120429,120,120481,120,5441,120,5501,120,5741,88,9587,88,66338,88,71916,88,65336,88,8553,88,119831,88,119883,88,119935,88,119987,88,120039,88,120091,88,120143,88,120195,88,120247,88,120299,88,120351,88,120403,88,120455,88,42931,88,935,88,120510,88,120568,88,120626,88,120684,88,120742,88,11436,88,11613,88,5815,88,42219,88,66192,88,66228,88,66327,88,66855,88,611,121,7564,121,65369,121,119858,121,119910,121,119962,121,120014,121,120066,121,120118,121,120170,121,120222,121,120274,121,120326,121,120378,121,120430,121,120482,121,655,121,7935,121,43866,121,947,121,8509,121,120516,121,120574,121,120632,121,120690,121,120748,121,1199,121,4327,121,71900,121,65337,89,119832,89,119884,89,119936,89,119988,89,120040,89,120092,89,120144,89,120196,89,120248,89,120300,89,120352,89,120404,89,120456,89,933,89,978,89,120508,89,120566,89,120624,89,120682,89,120740,89,11432,89,1198,89,5033,89,5053,89,42220,89,94019,89,71844,89,66226,89,119859,122,119911,122,119963,122,120015,122,120067,122,120119,122,120171,122,120223,122,120275,122,120327,122,120379,122,120431,122,120483,122,7458,122,43923,122,71876,122,66293,90,71909,90,65338,90,8484,90,8488,90,119833,90,119885,90,119937,90,119989,90,120041,90,120197,90,120249,90,120301,90,120353,90,120405,90,120457,90,918,90,120493,90,120551,90,120609,90,120667,90,120725,90,5059,90,42204,90,71849,90,65282,34,65284,36,65285,37,65286,38,65290,42,65291,43,65294,46,65295,47,65296,48,65297,49,65298,50,65299,51,65300,52,65301,53,65302,54,65303,55,65304,56,65305,57,65308,60,65309,61,65310,62,65312,64,65316,68,65318,70,65319,71,65324,76,65329,81,65330,82,65333,85,65334,86,65335,87,65343,95,65346,98,65348,100,65350,102,65355,107,65357,109,65358,110,65361,113,65362,114,65364,116,65365,117,65367,119,65370,122,65371,123,65373,125,119846,109],\"_default\":[160,32,8211,45,65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],\"cs\":[65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],\"de\":[65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],\"es\":[8211,45,65374,126,65306,58,65281,33,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],\"fr\":[65374,126,65306,58,65281,33,8216,96,8245,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],\"it\":[160,32,8211,45,65374,126,65306,58,65281,33,8216,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],\"ja\":[8211,45,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65292,44,65307,59],\"ko\":[8211,45,65374,126,65306,58,65281,33,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],\"pl\":[65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],\"pt-BR\":[65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],\"qps-ploc\":[160,32,8211,45,65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],\"ru\":[65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,305,105,921,73,1009,112,215,120,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],\"tr\":[160,32,8211,45,65374,126,65306,58,65281,33,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],\"zh-hans\":[65374,126,65306,58,65281,33,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65288,40,65289,41],\"zh-hant\":[8211,45,65374,126,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65307,59]}'); + }); + static cache = new LRUCachedFunction({ getCacheKey: JSON.stringify }, (locales) => { + function arrayToMap(arr) { + const result = new Map(); + for (let i = 0; i < arr.length; i += 2) { + result.set(arr[i], arr[i + 1]); + } + return result; + } + function mergeMaps(map1, map2) { + const result = new Map(map1); + for (const [key, value] of map2) { + result.set(key, value); + } + return result; + } + function intersectMaps(map1, map2) { + if (!map1) { + return map2; + } + const result = new Map(); + for (const [key, value] of map1) { + if (map2.has(key)) { + result.set(key, value); + } + } + return result; + } + const data = this.ambiguousCharacterData.value; + let filteredLocales = locales.filter((l) => !l.startsWith('_') && l in data); + if (filteredLocales.length === 0) { + filteredLocales = ['_default']; + } + let languageSpecificMap = undefined; + for (const locale of filteredLocales) { + const map = arrayToMap(data[locale]); + languageSpecificMap = intersectMaps(languageSpecificMap, map); + } + const commonMap = arrayToMap(data['_common']); + const map = mergeMaps(commonMap, languageSpecificMap); + return new AmbiguousCharacters(map); + }); + static getInstance(locales) { + return AmbiguousCharacters.cache.get(Array.from(locales)); + } + static _locales = new Lazy(() => Object.keys(AmbiguousCharacters.ambiguousCharacterData.value).filter((k) => !k.startsWith('_'))); + static getLocales() { + return AmbiguousCharacters._locales.value; + } + constructor(confusableDictionary) { + this.confusableDictionary = confusableDictionary; + } + isAmbiguous(codePoint) { + return this.confusableDictionary.has(codePoint); + } + containsAmbiguousCharacter(str) { + for (let i = 0; i < str.length; i++) { + const codePoint = str.codePointAt(i); + if (typeof codePoint === 'number' && this.isAmbiguous(codePoint)) { + return true; + } + } + return false; + } + /** + * Returns the non basic ASCII code point that the given code point can be confused, + * or undefined if such code point does note exist. + */ + getPrimaryConfusable(codePoint) { + return this.confusableDictionary.get(codePoint); + } + getConfusableCodePoints() { + return new Set(this.confusableDictionary.keys()); + } +} +export class InvisibleCharacters { + static getRawData() { + // Generated using https://github.com/hediet/vscode-unicode-data + return JSON.parse('[9,10,11,12,13,32,127,160,173,847,1564,4447,4448,6068,6069,6155,6156,6157,6158,7355,7356,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8203,8204,8205,8206,8207,8234,8235,8236,8237,8238,8239,8287,8288,8289,8290,8291,8292,8293,8294,8295,8296,8297,8298,8299,8300,8301,8302,8303,10240,12288,12644,65024,65025,65026,65027,65028,65029,65030,65031,65032,65033,65034,65035,65036,65037,65038,65039,65279,65440,65520,65521,65522,65523,65524,65525,65526,65527,65528,65532,78844,119155,119156,119157,119158,119159,119160,119161,119162,917504,917505,917506,917507,917508,917509,917510,917511,917512,917513,917514,917515,917516,917517,917518,917519,917520,917521,917522,917523,917524,917525,917526,917527,917528,917529,917530,917531,917532,917533,917534,917535,917536,917537,917538,917539,917540,917541,917542,917543,917544,917545,917546,917547,917548,917549,917550,917551,917552,917553,917554,917555,917556,917557,917558,917559,917560,917561,917562,917563,917564,917565,917566,917567,917568,917569,917570,917571,917572,917573,917574,917575,917576,917577,917578,917579,917580,917581,917582,917583,917584,917585,917586,917587,917588,917589,917590,917591,917592,917593,917594,917595,917596,917597,917598,917599,917600,917601,917602,917603,917604,917605,917606,917607,917608,917609,917610,917611,917612,917613,917614,917615,917616,917617,917618,917619,917620,917621,917622,917623,917624,917625,917626,917627,917628,917629,917630,917631,917760,917761,917762,917763,917764,917765,917766,917767,917768,917769,917770,917771,917772,917773,917774,917775,917776,917777,917778,917779,917780,917781,917782,917783,917784,917785,917786,917787,917788,917789,917790,917791,917792,917793,917794,917795,917796,917797,917798,917799,917800,917801,917802,917803,917804,917805,917806,917807,917808,917809,917810,917811,917812,917813,917814,917815,917816,917817,917818,917819,917820,917821,917822,917823,917824,917825,917826,917827,917828,917829,917830,917831,917832,917833,917834,917835,917836,917837,917838,917839,917840,917841,917842,917843,917844,917845,917846,917847,917848,917849,917850,917851,917852,917853,917854,917855,917856,917857,917858,917859,917860,917861,917862,917863,917864,917865,917866,917867,917868,917869,917870,917871,917872,917873,917874,917875,917876,917877,917878,917879,917880,917881,917882,917883,917884,917885,917886,917887,917888,917889,917890,917891,917892,917893,917894,917895,917896,917897,917898,917899,917900,917901,917902,917903,917904,917905,917906,917907,917908,917909,917910,917911,917912,917913,917914,917915,917916,917917,917918,917919,917920,917921,917922,917923,917924,917925,917926,917927,917928,917929,917930,917931,917932,917933,917934,917935,917936,917937,917938,917939,917940,917941,917942,917943,917944,917945,917946,917947,917948,917949,917950,917951,917952,917953,917954,917955,917956,917957,917958,917959,917960,917961,917962,917963,917964,917965,917966,917967,917968,917969,917970,917971,917972,917973,917974,917975,917976,917977,917978,917979,917980,917981,917982,917983,917984,917985,917986,917987,917988,917989,917990,917991,917992,917993,917994,917995,917996,917997,917998,917999]'); + } + static _data = undefined; + static getData() { + if (!this._data) { + this._data = new Set(InvisibleCharacters.getRawData()); + } + return this._data; + } + static isInvisibleCharacter(codePoint) { + return InvisibleCharacters.getData().has(codePoint); + } + static containsInvisibleCharacter(str) { + for (let i = 0; i < str.length; i++) { + const codePoint = str.codePointAt(i); + if (typeof codePoint === 'number' && InvisibleCharacters.isInvisibleCharacter(codePoint)) { + return true; + } + } + return false; + } + static get codePoints() { + return InvisibleCharacters.getData(); + } +} //# sourceMappingURL=strings.js.map \ No newline at end of file diff --git a/packages/core/dist/strings.js.map b/packages/core/dist/strings.js.map index 3eb36641..99e2ceb6 100644 --- a/packages/core/dist/strings.js.map +++ b/packages/core/dist/strings.js.map @@ -1 +1 @@ -{"version":3,"file":"strings.js","sourceRoot":"","sources":["../src/strings.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"strings.js","sourceRoot":"","sources":["../src/strings.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/dist/symbols.d.ts b/packages/core/dist/symbols.d.ts index aeeaea8a..840461a3 100644 --- a/packages/core/dist/symbols.d.ts +++ b/packages/core/dist/symbols.d.ts @@ -1,4 +1,4 @@ -/** - * Can be passed into the Delayed to defer using a microtask - * */ -export declare const MicrotaskDelay: unique symbol; +/** + * Can be passed into the Delayed to defer using a microtask + * */ +export declare const MicrotaskDelay: unique symbol; diff --git a/packages/core/dist/symbols.js b/packages/core/dist/symbols.js index de38e21b..01f3e024 100644 --- a/packages/core/dist/symbols.js +++ b/packages/core/dist/symbols.js @@ -1,9 +1,9 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ -/** - * Can be passed into the Delayed to defer using a microtask - * */ -export const MicrotaskDelay = Symbol('MicrotaskDelay'); +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +/** + * Can be passed into the Delayed to defer using a microtask + * */ +export const MicrotaskDelay = Symbol('MicrotaskDelay'); //# sourceMappingURL=symbols.js.map \ No newline at end of file diff --git a/packages/core/dist/types.d.ts b/packages/core/dist/types.d.ts index f0616449..f7cf5831 100644 --- a/packages/core/dist/types.d.ts +++ b/packages/core/dist/types.d.ts @@ -1,151 +1,151 @@ -/** - * @returns whether the provided parameter is a JavaScript String or not. - */ -export declare function isString(str: unknown): str is string; -/** - * @returns whether the provided parameter is a JavaScript Array and each element in the array is a string. - */ -export declare function isStringArray(value: unknown): value is string[]; -/** - * @returns whether the provided parameter is of type `object` but **not** - * `null`, an `array`, a `regexp`, nor a `date`. - */ -export declare function isObject(obj: unknown): obj is Object; -/** - * @returns whether the provided parameter is of type `Buffer` or Uint8Array dervived type - */ -export declare function isTypedArray(obj: unknown): obj is Object; -/** - * In **contrast** to just checking `typeof` this will return `false` for `NaN`. - * @returns whether the provided parameter is a JavaScript Number or not. - */ -export declare function isNumber(obj: unknown): obj is number; -/** - * @returns whether the provided parameter is an Iterable, casting to the given generic - */ -export declare function isIterable(obj: unknown): obj is Iterable; -/** - * @returns whether the provided parameter is a JavaScript Boolean or not. - */ -export declare function isBoolean(obj: unknown): obj is boolean; -/** - * @returns whether the provided parameter is undefined. - */ -export declare function isUndefined(obj: unknown): obj is undefined; -/** - * @returns whether the provided parameter is defined. - */ -export declare function isDefined(arg: T | null | undefined): arg is T; -/** - * @returns whether the provided parameter is undefined or null. - */ -export declare function isUndefinedOrNull(obj: unknown): obj is undefined | null; -export declare function assertType(condition: unknown, type?: string): asserts condition; -/** - * Asserts that the argument passed in is neither undefined nor null. - * - * @see {@link assertDefined} for a similar utility that leverages TS assertion functions to narrow down the type of `arg` to be non-nullable. - */ -export declare function assertIsDefined(arg: T | null | undefined): NonNullable; -/** - * Asserts that a provided `value` is `defined` - not `null` or `undefined`, - * throwing an error with the provided error or error message, while also - * narrowing down the type of the `value` to be `NonNullable` using TS - * assertion functions. - * - * @throws if the provided `value` is `null` or `undefined`. - * - * ## Examples - * - * ```typescript - * // an assert with an error message - * assertDefined('some value', 'String constant is not defined o_O.'); - * - * // `throws!` the provided error - * assertDefined(null, new Error('Should throw this error.')); - * - * // narrows down the type of `someValue` to be non-nullable - * const someValue: string | undefined | null = blackbox(); - * assertDefined(someValue, 'Some value must be defined.'); - * console.log(someValue.length); // now type of `someValue` is `string` - * ``` - * - * @see {@link assertIsDefined} for a similar utility but without assertion. - * @see {@link https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-7.html#assertion-functions typescript-3-7.html#assertion-functions} - */ -export declare function assertDefined(value: T, error: string | NonNullable): asserts value is NonNullable; -/** - * Asserts that each argument passed in is neither undefined nor null. - */ -export declare function assertAllDefined(t1: T1 | null | undefined, t2: T2 | null | undefined): [T1, T2]; -export declare function assertAllDefined(t1: T1 | null | undefined, t2: T2 | null | undefined, t3: T3 | null | undefined): [T1, T2, T3]; -export declare function assertAllDefined(t1: T1 | null | undefined, t2: T2 | null | undefined, t3: T3 | null | undefined, t4: T4 | null | undefined): [T1, T2, T3, T4]; -/** - * @returns whether the provided parameter is an empty JavaScript Object or not. - */ -export declare function isEmptyObject(obj: unknown): obj is object; -/** - * @returns whether the provided parameter is a JavaScript Function or not. - */ -export declare function isFunction(obj: unknown): obj is Function; -/** - * @returns whether the provided parameters is are JavaScript Function or not. - */ -export declare function areFunctions(...objects: unknown[]): boolean; -export type TypeConstraint = string | Function; -export declare function validateConstraints(args: unknown[], constraints: Array): void; -export declare function validateConstraint(arg: unknown, constraint: TypeConstraint | undefined): void; -/** - * Helper type assertion that safely upcasts a type to a supertype. - * - * This can be used to make sure the argument correctly conforms to the subtype while still being able to pass it - * to contexts that expects the supertype. - */ -export declare function upcast(x: Sub): Base; -type AddFirstParameterToFunction = T extends (...args: any[]) => TargetFunctionsReturnType ? (firstArg: FirstParameter, ...args: Parameters) => ReturnType : T; -/** - * Allows to add a first parameter to functions of a type. - */ -export type AddFirstParameterToFunctions = { - [K in keyof Target]: AddFirstParameterToFunction; -}; -/** - * Given an object with all optional properties, requires at least one to be defined. - * i.e. AtLeastOne; - */ -export type AtLeastOne; -}> = Partial & U[keyof U]; -/** - * Only picks the non-optional properties of a type. - */ -export type OmitOptional = { - [K in keyof T as T[K] extends Required[K] ? K : never]: T[K]; -}; -/** - * A type that removed readonly-less from all properties of `T` - */ -export type Mutable = { - -readonly [P in keyof T]: T[P]; -}; -/** - * A single object or an array of the objects. - */ -export type SingleOrMany = T | T[]; -/** - * A type that recursively makes all properties of `T` required - */ -export type DeepRequiredNonNullable = { - [P in keyof T]-?: T[P] extends object ? DeepRequiredNonNullable : Required>; -}; -/** - * Represents a type that is a partial version of a given type `T`, where all properties are optional and can be deeply nested. - */ -export type DeepPartial = { - [P in keyof T]?: T[P] extends object ? DeepPartial : Partial; -}; -/** - * Represents a type that is a partial version of a given type `T`, except a subset. - */ -export type PartialExcept = Partial> & Pick; -export {}; +/** + * @returns whether the provided parameter is a JavaScript String or not. + */ +export declare function isString(str: unknown): str is string; +/** + * @returns whether the provided parameter is a JavaScript Array and each element in the array is a string. + */ +export declare function isStringArray(value: unknown): value is string[]; +/** + * @returns whether the provided parameter is of type `object` but **not** + * `null`, an `array`, a `regexp`, nor a `date`. + */ +export declare function isObject(obj: unknown): obj is Object; +/** + * @returns whether the provided parameter is of type `Buffer` or Uint8Array dervived type + */ +export declare function isTypedArray(obj: unknown): obj is Object; +/** + * In **contrast** to just checking `typeof` this will return `false` for `NaN`. + * @returns whether the provided parameter is a JavaScript Number or not. + */ +export declare function isNumber(obj: unknown): obj is number; +/** + * @returns whether the provided parameter is an Iterable, casting to the given generic + */ +export declare function isIterable(obj: unknown): obj is Iterable; +/** + * @returns whether the provided parameter is a JavaScript Boolean or not. + */ +export declare function isBoolean(obj: unknown): obj is boolean; +/** + * @returns whether the provided parameter is undefined. + */ +export declare function isUndefined(obj: unknown): obj is undefined; +/** + * @returns whether the provided parameter is defined. + */ +export declare function isDefined(arg: T | null | undefined): arg is T; +/** + * @returns whether the provided parameter is undefined or null. + */ +export declare function isUndefinedOrNull(obj: unknown): obj is undefined | null; +export declare function assertType(condition: unknown, type?: string): asserts condition; +/** + * Asserts that the argument passed in is neither undefined nor null. + * + * @see {@link assertDefined} for a similar utility that leverages TS assertion functions to narrow down the type of `arg` to be non-nullable. + */ +export declare function assertIsDefined(arg: T | null | undefined): NonNullable; +/** + * Asserts that a provided `value` is `defined` - not `null` or `undefined`, + * throwing an error with the provided error or error message, while also + * narrowing down the type of the `value` to be `NonNullable` using TS + * assertion functions. + * + * @throws if the provided `value` is `null` or `undefined`. + * + * ## Examples + * + * ```typescript + * // an assert with an error message + * assertDefined('some value', 'String constant is not defined o_O.'); + * + * // `throws!` the provided error + * assertDefined(null, new Error('Should throw this error.')); + * + * // narrows down the type of `someValue` to be non-nullable + * const someValue: string | undefined | null = blackbox(); + * assertDefined(someValue, 'Some value must be defined.'); + * console.log(someValue.length); // now type of `someValue` is `string` + * ``` + * + * @see {@link assertIsDefined} for a similar utility but without assertion. + * @see {@link https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-7.html#assertion-functions typescript-3-7.html#assertion-functions} + */ +export declare function assertDefined(value: T, error: string | NonNullable): asserts value is NonNullable; +/** + * Asserts that each argument passed in is neither undefined nor null. + */ +export declare function assertAllDefined(t1: T1 | null | undefined, t2: T2 | null | undefined): [T1, T2]; +export declare function assertAllDefined(t1: T1 | null | undefined, t2: T2 | null | undefined, t3: T3 | null | undefined): [T1, T2, T3]; +export declare function assertAllDefined(t1: T1 | null | undefined, t2: T2 | null | undefined, t3: T3 | null | undefined, t4: T4 | null | undefined): [T1, T2, T3, T4]; +/** + * @returns whether the provided parameter is an empty JavaScript Object or not. + */ +export declare function isEmptyObject(obj: unknown): obj is object; +/** + * @returns whether the provided parameter is a JavaScript Function or not. + */ +export declare function isFunction(obj: unknown): obj is Function; +/** + * @returns whether the provided parameters is are JavaScript Function or not. + */ +export declare function areFunctions(...objects: unknown[]): boolean; +export type TypeConstraint = string | Function; +export declare function validateConstraints(args: unknown[], constraints: Array): void; +export declare function validateConstraint(arg: unknown, constraint: TypeConstraint | undefined): void; +/** + * Helper type assertion that safely upcasts a type to a supertype. + * + * This can be used to make sure the argument correctly conforms to the subtype while still being able to pass it + * to contexts that expects the supertype. + */ +export declare function upcast(x: Sub): Base; +type AddFirstParameterToFunction = T extends (...args: any[]) => TargetFunctionsReturnType ? (firstArg: FirstParameter, ...args: Parameters) => ReturnType : T; +/** + * Allows to add a first parameter to functions of a type. + */ +export type AddFirstParameterToFunctions = { + [K in keyof Target]: AddFirstParameterToFunction; +}; +/** + * Given an object with all optional properties, requires at least one to be defined. + * i.e. AtLeastOne; + */ +export type AtLeastOne; +}> = Partial & U[keyof U]; +/** + * Only picks the non-optional properties of a type. + */ +export type OmitOptional = { + [K in keyof T as T[K] extends Required[K] ? K : never]: T[K]; +}; +/** + * A type that removed readonly-less from all properties of `T` + */ +export type Mutable = { + -readonly [P in keyof T]: T[P]; +}; +/** + * A single object or an array of the objects. + */ +export type SingleOrMany = T | T[]; +/** + * A type that recursively makes all properties of `T` required + */ +export type DeepRequiredNonNullable = { + [P in keyof T]-?: T[P] extends object ? DeepRequiredNonNullable : Required>; +}; +/** + * Represents a type that is a partial version of a given type `T`, where all properties are optional and can be deeply nested. + */ +export type DeepPartial = { + [P in keyof T]?: T[P] extends object ? DeepPartial : Partial; +}; +/** + * Represents a type that is a partial version of a given type `T`, except a subset. + */ +export type PartialExcept = Partial> & Pick; +export {}; diff --git a/packages/core/dist/types.js b/packages/core/dist/types.js index 0d16edfd..60ca4fcb 100644 --- a/packages/core/dist/types.js +++ b/packages/core/dist/types.js @@ -1,200 +1,200 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ -import { assert } from './assert.js'; -/** - * @returns whether the provided parameter is a JavaScript String or not. - */ -export function isString(str) { - return (typeof str === 'string'); -} -/** - * @returns whether the provided parameter is a JavaScript Array and each element in the array is a string. - */ -export function isStringArray(value) { - return Array.isArray(value) && value.every(elem => isString(elem)); -} -/** - * @returns whether the provided parameter is of type `object` but **not** - * `null`, an `array`, a `regexp`, nor a `date`. - */ -export function isObject(obj) { - // The method can't do a type cast since there are type (like strings) which - // are subclasses of any put not positvely matched by the function. Hence type - // narrowing results in wrong results. - return typeof obj === 'object' - && obj !== null - && !Array.isArray(obj) - && !(obj instanceof RegExp) - && !(obj instanceof Date); -} -/** - * @returns whether the provided parameter is of type `Buffer` or Uint8Array dervived type - */ -export function isTypedArray(obj) { - const TypedArray = Object.getPrototypeOf(Uint8Array); - return typeof obj === 'object' - && obj instanceof TypedArray; -} -/** - * In **contrast** to just checking `typeof` this will return `false` for `NaN`. - * @returns whether the provided parameter is a JavaScript Number or not. - */ -export function isNumber(obj) { - return (typeof obj === 'number' && !isNaN(obj)); -} -/** - * @returns whether the provided parameter is an Iterable, casting to the given generic - */ -export function isIterable(obj) { - return !!obj && typeof obj[Symbol.iterator] === 'function'; -} -/** - * @returns whether the provided parameter is a JavaScript Boolean or not. - */ -export function isBoolean(obj) { - return (obj === true || obj === false); -} -/** - * @returns whether the provided parameter is undefined. - */ -export function isUndefined(obj) { - return (typeof obj === 'undefined'); -} -/** - * @returns whether the provided parameter is defined. - */ -export function isDefined(arg) { - return !isUndefinedOrNull(arg); -} -/** - * @returns whether the provided parameter is undefined or null. - */ -export function isUndefinedOrNull(obj) { - return (isUndefined(obj) || obj === null); -} -export function assertType(condition, type) { - if (!condition) { - throw new Error(type ? `Unexpected type, expected '${type}'` : 'Unexpected type'); - } -} -/** - * Asserts that the argument passed in is neither undefined nor null. - * - * @see {@link assertDefined} for a similar utility that leverages TS assertion functions to narrow down the type of `arg` to be non-nullable. - */ -export function assertIsDefined(arg) { - assert(arg !== null && arg !== undefined, 'Argument is `undefined` or `null`.'); - return arg; -} -/** - * Asserts that a provided `value` is `defined` - not `null` or `undefined`, - * throwing an error with the provided error or error message, while also - * narrowing down the type of the `value` to be `NonNullable` using TS - * assertion functions. - * - * @throws if the provided `value` is `null` or `undefined`. - * - * ## Examples - * - * ```typescript - * // an assert with an error message - * assertDefined('some value', 'String constant is not defined o_O.'); - * - * // `throws!` the provided error - * assertDefined(null, new Error('Should throw this error.')); - * - * // narrows down the type of `someValue` to be non-nullable - * const someValue: string | undefined | null = blackbox(); - * assertDefined(someValue, 'Some value must be defined.'); - * console.log(someValue.length); // now type of `someValue` is `string` - * ``` - * - * @see {@link assertIsDefined} for a similar utility but without assertion. - * @see {@link https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-7.html#assertion-functions typescript-3-7.html#assertion-functions} - */ -export function assertDefined(value, error) { - if (value === null || value === undefined) { - const errorToThrow = typeof error === 'string' ? new Error(error) : error; - throw errorToThrow; - } -} -export function assertAllDefined(...args) { - const result = []; - for (let i = 0; i < args.length; i++) { - const arg = args[i]; - if (isUndefinedOrNull(arg)) { - throw new Error(`Assertion Failed: argument at index ${i} is undefined or null`); - } - result.push(arg); - } - return result; -} -const hasOwnProperty = Object.prototype.hasOwnProperty; -/** - * @returns whether the provided parameter is an empty JavaScript Object or not. - */ -export function isEmptyObject(obj) { - if (!isObject(obj)) { - return false; - } - for (const key in obj) { - if (hasOwnProperty.call(obj, key)) { - return false; - } - } - return true; -} -/** - * @returns whether the provided parameter is a JavaScript Function or not. - */ -export function isFunction(obj) { - return (typeof obj === 'function'); -} -/** - * @returns whether the provided parameters is are JavaScript Function or not. - */ -export function areFunctions(...objects) { - return objects.length > 0 && objects.every(isFunction); -} -export function validateConstraints(args, constraints) { - const len = Math.min(args.length, constraints.length); - for (let i = 0; i < len; i++) { - validateConstraint(args[i], constraints[i]); - } -} -export function validateConstraint(arg, constraint) { - if (isString(constraint)) { - if (typeof arg !== constraint) { - throw new Error(`argument does not match constraint: typeof ${constraint}`); - } - } - else if (isFunction(constraint)) { - try { - if (arg instanceof constraint) { - return; - } - } - catch { - // ignore - } - if (!isUndefinedOrNull(arg) && arg.constructor === constraint) { - return; - } - if (constraint.length === 1 && constraint.call(undefined, arg) === true) { - return; - } - throw new Error(`argument does not match one of these constraints: arg instanceof constraint, arg.constructor === constraint, nor constraint(arg) === true`); - } -} -/** - * Helper type assertion that safely upcasts a type to a supertype. - * - * This can be used to make sure the argument correctly conforms to the subtype while still being able to pass it - * to contexts that expects the supertype. - */ -export function upcast(x) { - return x; -} +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +import { assert } from './assert.js'; +/** + * @returns whether the provided parameter is a JavaScript String or not. + */ +export function isString(str) { + return (typeof str === 'string'); +} +/** + * @returns whether the provided parameter is a JavaScript Array and each element in the array is a string. + */ +export function isStringArray(value) { + return Array.isArray(value) && value.every(elem => isString(elem)); +} +/** + * @returns whether the provided parameter is of type `object` but **not** + * `null`, an `array`, a `regexp`, nor a `date`. + */ +export function isObject(obj) { + // The method can't do a type cast since there are type (like strings) which + // are subclasses of any put not positvely matched by the function. Hence type + // narrowing results in wrong results. + return typeof obj === 'object' + && obj !== null + && !Array.isArray(obj) + && !(obj instanceof RegExp) + && !(obj instanceof Date); +} +/** + * @returns whether the provided parameter is of type `Buffer` or Uint8Array dervived type + */ +export function isTypedArray(obj) { + const TypedArray = Object.getPrototypeOf(Uint8Array); + return typeof obj === 'object' + && obj instanceof TypedArray; +} +/** + * In **contrast** to just checking `typeof` this will return `false` for `NaN`. + * @returns whether the provided parameter is a JavaScript Number or not. + */ +export function isNumber(obj) { + return (typeof obj === 'number' && !isNaN(obj)); +} +/** + * @returns whether the provided parameter is an Iterable, casting to the given generic + */ +export function isIterable(obj) { + return !!obj && typeof obj[Symbol.iterator] === 'function'; +} +/** + * @returns whether the provided parameter is a JavaScript Boolean or not. + */ +export function isBoolean(obj) { + return (obj === true || obj === false); +} +/** + * @returns whether the provided parameter is undefined. + */ +export function isUndefined(obj) { + return (typeof obj === 'undefined'); +} +/** + * @returns whether the provided parameter is defined. + */ +export function isDefined(arg) { + return !isUndefinedOrNull(arg); +} +/** + * @returns whether the provided parameter is undefined or null. + */ +export function isUndefinedOrNull(obj) { + return (isUndefined(obj) || obj === null); +} +export function assertType(condition, type) { + if (!condition) { + throw new Error(type ? `Unexpected type, expected '${type}'` : 'Unexpected type'); + } +} +/** + * Asserts that the argument passed in is neither undefined nor null. + * + * @see {@link assertDefined} for a similar utility that leverages TS assertion functions to narrow down the type of `arg` to be non-nullable. + */ +export function assertIsDefined(arg) { + assert(arg !== null && arg !== undefined, 'Argument is `undefined` or `null`.'); + return arg; +} +/** + * Asserts that a provided `value` is `defined` - not `null` or `undefined`, + * throwing an error with the provided error or error message, while also + * narrowing down the type of the `value` to be `NonNullable` using TS + * assertion functions. + * + * @throws if the provided `value` is `null` or `undefined`. + * + * ## Examples + * + * ```typescript + * // an assert with an error message + * assertDefined('some value', 'String constant is not defined o_O.'); + * + * // `throws!` the provided error + * assertDefined(null, new Error('Should throw this error.')); + * + * // narrows down the type of `someValue` to be non-nullable + * const someValue: string | undefined | null = blackbox(); + * assertDefined(someValue, 'Some value must be defined.'); + * console.log(someValue.length); // now type of `someValue` is `string` + * ``` + * + * @see {@link assertIsDefined} for a similar utility but without assertion. + * @see {@link https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-7.html#assertion-functions typescript-3-7.html#assertion-functions} + */ +export function assertDefined(value, error) { + if (value === null || value === undefined) { + const errorToThrow = typeof error === 'string' ? new Error(error) : error; + throw errorToThrow; + } +} +export function assertAllDefined(...args) { + const result = []; + for (let i = 0; i < args.length; i++) { + const arg = args[i]; + if (isUndefinedOrNull(arg)) { + throw new Error(`Assertion Failed: argument at index ${i} is undefined or null`); + } + result.push(arg); + } + return result; +} +const hasOwnProperty = Object.prototype.hasOwnProperty; +/** + * @returns whether the provided parameter is an empty JavaScript Object or not. + */ +export function isEmptyObject(obj) { + if (!isObject(obj)) { + return false; + } + for (const key in obj) { + if (hasOwnProperty.call(obj, key)) { + return false; + } + } + return true; +} +/** + * @returns whether the provided parameter is a JavaScript Function or not. + */ +export function isFunction(obj) { + return (typeof obj === 'function'); +} +/** + * @returns whether the provided parameters is are JavaScript Function or not. + */ +export function areFunctions(...objects) { + return objects.length > 0 && objects.every(isFunction); +} +export function validateConstraints(args, constraints) { + const len = Math.min(args.length, constraints.length); + for (let i = 0; i < len; i++) { + validateConstraint(args[i], constraints[i]); + } +} +export function validateConstraint(arg, constraint) { + if (isString(constraint)) { + if (typeof arg !== constraint) { + throw new Error(`argument does not match constraint: typeof ${constraint}`); + } + } + else if (isFunction(constraint)) { + try { + if (arg instanceof constraint) { + return; + } + } + catch { + // ignore + } + if (!isUndefinedOrNull(arg) && arg.constructor === constraint) { + return; + } + if (constraint.length === 1 && constraint.call(undefined, arg) === true) { + return; + } + throw new Error(`argument does not match one of these constraints: arg instanceof constraint, arg.constructor === constraint, nor constraint(arg) === true`); + } +} +/** + * Helper type assertion that safely upcasts a type to a supertype. + * + * This can be used to make sure the argument correctly conforms to the subtype while still being able to pass it + * to contexts that expects the supertype. + */ +export function upcast(x) { + return x; +} //# sourceMappingURL=types.js.map \ No newline at end of file diff --git a/packages/core/dist/types.js.map b/packages/core/dist/types.js.map index 46c2be48..4b39415c 100644 --- a/packages/core/dist/types.js.map +++ b/packages/core/dist/types.js.map @@ -1 +1 @@ -{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/dist/uint.d.ts b/packages/core/dist/uint.d.ts index f7c03e2d..60a9f7dd 100644 --- a/packages/core/dist/uint.d.ts +++ b/packages/core/dist/uint.d.ts @@ -1,31 +1,31 @@ -export declare const enum Constants { - /** - * MAX SMI (SMall Integer) as defined in v8. - * one bit is lost for boxing/unboxing flag. - * one bit is lost for sign flag. - * See https://thibaultlaurens.github.io/javascript/2013/04/29/how-the-v8-engine-works/#tagged-values - */ - MAX_SAFE_SMALL_INTEGER = 1073741824, - /** - * MIN SMI (SMall Integer) as defined in v8. - * one bit is lost for boxing/unboxing flag. - * one bit is lost for sign flag. - * See https://thibaultlaurens.github.io/javascript/2013/04/29/how-the-v8-engine-works/#tagged-values - */ - MIN_SAFE_SMALL_INTEGER = -1073741824, - /** - * Max unsigned integer that fits on 8 bits. - */ - MAX_UINT_8 = 255, - /** - * Max unsigned integer that fits on 16 bits. - */ - MAX_UINT_16 = 65535, - /** - * Max unsigned integer that fits on 32 bits. - */ - MAX_UINT_32 = 4294967295, - UNICODE_SUPPLEMENTARY_PLANE_BEGIN = 65536 -} -export declare function toUint8(v: number): number; -export declare function toUint32(v: number): number; +export declare const enum Constants { + /** + * MAX SMI (SMall Integer) as defined in v8. + * one bit is lost for boxing/unboxing flag. + * one bit is lost for sign flag. + * See https://thibaultlaurens.github.io/javascript/2013/04/29/how-the-v8-engine-works/#tagged-values + */ + MAX_SAFE_SMALL_INTEGER = 1073741824, + /** + * MIN SMI (SMall Integer) as defined in v8. + * one bit is lost for boxing/unboxing flag. + * one bit is lost for sign flag. + * See https://thibaultlaurens.github.io/javascript/2013/04/29/how-the-v8-engine-works/#tagged-values + */ + MIN_SAFE_SMALL_INTEGER = -1073741824, + /** + * Max unsigned integer that fits on 8 bits. + */ + MAX_UINT_8 = 255,// 2^8 - 1 + /** + * Max unsigned integer that fits on 16 bits. + */ + MAX_UINT_16 = 65535,// 2^16 - 1 + /** + * Max unsigned integer that fits on 32 bits. + */ + MAX_UINT_32 = 4294967295,// 2^32 - 1 + UNICODE_SUPPLEMENTARY_PLANE_BEGIN = 65536 +} +export declare function toUint8(v: number): number; +export declare function toUint32(v: number): number; diff --git a/packages/core/dist/uint.js b/packages/core/dist/uint.js index 66040bce..74487c9a 100644 --- a/packages/core/dist/uint.js +++ b/packages/core/dist/uint.js @@ -1,53 +1,53 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ -export var Constants; -(function (Constants) { - /** - * MAX SMI (SMall Integer) as defined in v8. - * one bit is lost for boxing/unboxing flag. - * one bit is lost for sign flag. - * See https://thibaultlaurens.github.io/javascript/2013/04/29/how-the-v8-engine-works/#tagged-values - */ - Constants[Constants["MAX_SAFE_SMALL_INTEGER"] = 1073741824] = "MAX_SAFE_SMALL_INTEGER"; - /** - * MIN SMI (SMall Integer) as defined in v8. - * one bit is lost for boxing/unboxing flag. - * one bit is lost for sign flag. - * See https://thibaultlaurens.github.io/javascript/2013/04/29/how-the-v8-engine-works/#tagged-values - */ - Constants[Constants["MIN_SAFE_SMALL_INTEGER"] = -1073741824] = "MIN_SAFE_SMALL_INTEGER"; - /** - * Max unsigned integer that fits on 8 bits. - */ - Constants[Constants["MAX_UINT_8"] = 255] = "MAX_UINT_8"; - /** - * Max unsigned integer that fits on 16 bits. - */ - Constants[Constants["MAX_UINT_16"] = 65535] = "MAX_UINT_16"; - /** - * Max unsigned integer that fits on 32 bits. - */ - Constants[Constants["MAX_UINT_32"] = 4294967295] = "MAX_UINT_32"; - Constants[Constants["UNICODE_SUPPLEMENTARY_PLANE_BEGIN"] = 65536] = "UNICODE_SUPPLEMENTARY_PLANE_BEGIN"; -})(Constants = Constants || (Constants = {})); -export function toUint8(v) { - if (v < 0) { - return 0; - } - if (v > 255 /* Constants.MAX_UINT_8 */) { - return 255 /* Constants.MAX_UINT_8 */; - } - return v | 0; -} -export function toUint32(v) { - if (v < 0) { - return 0; - } - if (v > 4294967295 /* Constants.MAX_UINT_32 */) { - return 4294967295 /* Constants.MAX_UINT_32 */; - } - return v | 0; -} +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +export var Constants; +(function (Constants) { + /** + * MAX SMI (SMall Integer) as defined in v8. + * one bit is lost for boxing/unboxing flag. + * one bit is lost for sign flag. + * See https://thibaultlaurens.github.io/javascript/2013/04/29/how-the-v8-engine-works/#tagged-values + */ + Constants[Constants["MAX_SAFE_SMALL_INTEGER"] = 1073741824] = "MAX_SAFE_SMALL_INTEGER"; + /** + * MIN SMI (SMall Integer) as defined in v8. + * one bit is lost for boxing/unboxing flag. + * one bit is lost for sign flag. + * See https://thibaultlaurens.github.io/javascript/2013/04/29/how-the-v8-engine-works/#tagged-values + */ + Constants[Constants["MIN_SAFE_SMALL_INTEGER"] = -1073741824] = "MIN_SAFE_SMALL_INTEGER"; + /** + * Max unsigned integer that fits on 8 bits. + */ + Constants[Constants["MAX_UINT_8"] = 255] = "MAX_UINT_8"; + /** + * Max unsigned integer that fits on 16 bits. + */ + Constants[Constants["MAX_UINT_16"] = 65535] = "MAX_UINT_16"; + /** + * Max unsigned integer that fits on 32 bits. + */ + Constants[Constants["MAX_UINT_32"] = 4294967295] = "MAX_UINT_32"; + Constants[Constants["UNICODE_SUPPLEMENTARY_PLANE_BEGIN"] = 65536] = "UNICODE_SUPPLEMENTARY_PLANE_BEGIN"; +})(Constants || (Constants = {})); +export function toUint8(v) { + if (v < 0) { + return 0; + } + if (v > 255 /* Constants.MAX_UINT_8 */) { + return 255 /* Constants.MAX_UINT_8 */; + } + return v | 0; +} +export function toUint32(v) { + if (v < 0) { + return 0; + } + if (v > 4294967295 /* Constants.MAX_UINT_32 */) { + return 4294967295 /* Constants.MAX_UINT_32 */; + } + return v | 0; +} //# sourceMappingURL=uint.js.map \ No newline at end of file diff --git a/packages/core/dist/uint.js.map b/packages/core/dist/uint.js.map index 466b2e32..b559af7d 100644 --- a/packages/core/dist/uint.js.map +++ b/packages/core/dist/uint.js.map @@ -1 +1 @@ -{"version":3,"file":"uint.js","sourceRoot":"","sources":["../src/uint.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,MAAM,CAAN,IAAkB,SAiCjB;AAjCD,WAAkB,SAAS;IAC1B;;;;;OAKG;IACH,sFAAgC,CAAA;IAEhC;;;;;OAKG;IACH,uFAAmC,CAAA;IAEnC;;OAEG;IACH,uDAAgB,CAAA;IAEhB;;OAEG;IACH,2DAAmB,CAAA;IAEnB;;OAEG;IACH,gEAAwB,CAAA;IAExB,uGAA4C,CAAA;AAC7C,CAAC,EAjCiB,SAAS,GAAT,SAAS,KAAT,SAAS,QAiC1B;AAED,MAAM,UAAU,OAAO,CAAC,CAAS;IAChC,IAAI,CAAC,GAAG,CAAC,EAAE;QACV,OAAO,CAAC,CAAC;KACT;IACD,IAAI,CAAC,iCAAuB,EAAE;QAC7B,sCAA4B;KAC5B;IACD,OAAO,CAAC,GAAG,CAAC,CAAC;AACd,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,CAAS;IACjC,IAAI,CAAC,GAAG,CAAC,EAAE;QACV,OAAO,CAAC,CAAC;KACT;IACD,IAAI,CAAC,yCAAwB,EAAE;QAC9B,8CAA6B;KAC7B;IACD,OAAO,CAAC,GAAG,CAAC,CAAC;AACd,CAAC"} \ No newline at end of file +{"version":3,"file":"uint.js","sourceRoot":"","sources":["../src/uint.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,MAAM,CAAN,IAAkB,SAiCjB;AAjCD,WAAkB,SAAS;IAC1B;;;;;OAKG;IACH,sFAAgC,CAAA;IAEhC;;;;;OAKG;IACH,uFAAmC,CAAA;IAEnC;;OAEG;IACH,uDAAgB,CAAA;IAEhB;;OAEG;IACH,2DAAmB,CAAA;IAEnB;;OAEG;IACH,gEAAwB,CAAA;IAExB,uGAA4C,CAAA;AAC7C,CAAC,EAjCiB,SAAS,KAAT,SAAS,QAiC1B;AAED,MAAM,UAAU,OAAO,CAAC,CAAS;IAChC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACX,OAAO,CAAC,CAAC;IACV,CAAC;IACD,IAAI,CAAC,iCAAuB,EAAE,CAAC;QAC9B,sCAA4B;IAC7B,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,CAAC;AACd,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,CAAS;IACjC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACX,OAAO,CAAC,CAAC;IACV,CAAC;IACD,IAAI,CAAC,yCAAwB,EAAE,CAAC;QAC/B,8CAA6B;IAC9B,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,CAAC;AACd,CAAC"} \ No newline at end of file diff --git a/packages/core/dist/uri.d.ts b/packages/core/dist/uri.d.ts index c75decdf..db3c68d4 100644 --- a/packages/core/dist/uri.d.ts +++ b/packages/core/dist/uri.d.ts @@ -1,163 +1,163 @@ -/** - * Uniform Resource Identifier (URI) http://tools.ietf.org/html/rfc3986. - * This class is a simple parser which creates the basic component parts - * (http://tools.ietf.org/html/rfc3986#section-3) with minimal validation - * and encoding. - * - * ```txt - * foo://example.com:8042/over/there?name=ferret#nose - * \_/ \______________/\_________/ \_________/ \__/ - * | | | | | - * scheme authority path query fragment - * | _____________________|__ - * / \ / \ - * urn:example:animal:ferret:nose - * ``` - */ -export declare class URI implements UriComponents { - static isUri(thing: any): thing is URI; - /** - * scheme is the 'http' part of 'http://www.example.com/some/path?query#fragment'. - * The part before the first colon. - */ - readonly scheme: string; - /** - * authority is the 'www.example.com' part of 'http://www.example.com/some/path?query#fragment'. - * The part between the first double slashes and the next slash. - */ - readonly authority: string; - /** - * path is the '/some/path' part of 'http://www.example.com/some/path?query#fragment'. - */ - readonly path: string; - /** - * query is the 'query' part of 'http://www.example.com/some/path?query#fragment'. - */ - readonly query: string; - /** - * fragment is the 'fragment' part of 'http://www.example.com/some/path?query#fragment'. - */ - readonly fragment: string; - /** - * Returns a string representing the corresponding file system path of this URI. - * Will handle UNC paths, normalizes windows drive letters to lower-case, and uses the - * platform specific path separator. - * - * * Will *not* validate the path for invalid characters and semantics. - * * Will *not* look at the scheme of this URI. - * * The result shall *not* be used for display purposes but for accessing a file on disk. - * - * - * The *difference* to `URI#path` is the use of the platform specific separator and the handling - * of UNC paths. See the below sample of a file-uri with an authority (UNC path). - * - * ```ts - const u = URI.parse('file://server/c$/folder/file.txt') - u.authority === 'server' - u.path === '/shares/c$/file.txt' - u.fsPath === '\\server\c$\folder\file.txt' - ``` - * - * Using `URI#path` to read a file (using fs-apis) would not be enough because parts of the path, - * namely the server name, would be missing. Therefore `URI#fsPath` exists - it's sugar to ease working - * with URIs that represent files on disk (`file` scheme). - */ - get fsPath(): string; - with(change: { - scheme?: string; - authority?: string | null; - path?: string | null; - query?: string | null; - fragment?: string | null; - }): URI; - /** - * Creates a new URI from a string, e.g. `http://www.example.com/some/path`, - * `file:///usr/home`, or `scheme:with/path`. - * - * @param value A string which represents an URI (see `URI#toString`). - */ - static parse(value: string, _strict?: boolean): URI; - /** - * Creates a new URI from a file system path, e.g. `c:\my\files`, - * `/usr/home`, or `\\server\share\some\path`. - * - * The *difference* between `URI#parse` and `URI#file` is that the latter treats the argument - * as path, not as stringified-uri. E.g. `URI.file(path)` is **not the same as** - * `URI.parse('file://' + path)` because the path might contain characters that are - * interpreted (# and ?). See the following sample: - * ```ts - const good = URI.file('/coding/c#/project1'); - good.scheme === 'file'; - good.path === '/coding/c#/project1'; - good.fragment === ''; - const bad = URI.parse('file://' + '/coding/c#/project1'); - bad.scheme === 'file'; - bad.path === '/coding/c'; // path is now broken - bad.fragment === '/project1'; - ``` - * - * @param path A file system path (see `URI#fsPath`) - */ - static file(path: string): URI; - /** - * Creates new URI from uri components. - * - * Unless `strict` is `true` the scheme is defaults to be `file`. This function performs - * validation and should be used for untrusted uri components retrieved from storage, - * user input, command arguments etc - */ - static from(components: UriComponents, strict?: boolean): URI; - /** - * Join a URI path with path fragments and normalizes the resulting path. - * - * @param uri The input URI. - * @param pathFragment The path fragment to add to the URI path. - * @returns The resulting URI. - */ - static joinPath(uri: URI, ...pathFragment: string[]): URI; - /** - * Creates a string representation for this URI. It's guaranteed that calling - * `URI.parse` with the result of this function creates an URI which is equal - * to this URI. - * - * * The result shall *not* be used for display purposes but for externalization or transport. - * * The result will be encoded using the percentage encoding and encoding happens mostly - * ignore the scheme-specific encoding rules. - * - * @param skipEncoding Do not encode the result, default is `false` - */ - toString(skipEncoding?: boolean): string; - toJSON(): UriComponents; - /** - * A helper function to revive URIs. - * - * **Note** that this function should only be used when receiving URI#toJSON generated data - * and that it doesn't do any validation. Use {@link URI.from} when received "untrusted" - * uri components such as command arguments or data from storage. - * - * @param data The URI components or URI to revive. - * @returns The revived URI or undefined or null. - */ - static revive(data: UriComponents | URI): URI; - static revive(data: UriComponents | URI | undefined): URI | undefined; - static revive(data: UriComponents | URI | null): URI | null; - static revive(data: UriComponents | URI | undefined | null): URI | undefined | null; -} -export interface UriComponents { - scheme: string; - authority?: string; - path?: string; - query?: string; - fragment?: string; -} -export declare function isUriComponents(thing: any): thing is UriComponents; -/** - * Compute `fsPath` for the given uri - */ -export declare function uriToFsPath(uri: URI, keepDriveLetterCasing: boolean): string; -/** - * Mapped-type that replaces all occurrences of URI with UriComponents - */ -export type UriDto = { - [K in keyof T]: T[K] extends URI ? UriComponents : UriDto; -}; +/** + * Uniform Resource Identifier (URI) http://tools.ietf.org/html/rfc3986. + * This class is a simple parser which creates the basic component parts + * (http://tools.ietf.org/html/rfc3986#section-3) with minimal validation + * and encoding. + * + * ```txt + * foo://example.com:8042/over/there?name=ferret#nose + * \_/ \______________/\_________/ \_________/ \__/ + * | | | | | + * scheme authority path query fragment + * | _____________________|__ + * / \ / \ + * urn:example:animal:ferret:nose + * ``` + */ +export declare class URI implements UriComponents { + static isUri(thing: any): thing is URI; + /** + * scheme is the 'http' part of 'http://www.example.com/some/path?query#fragment'. + * The part before the first colon. + */ + readonly scheme: string; + /** + * authority is the 'www.example.com' part of 'http://www.example.com/some/path?query#fragment'. + * The part between the first double slashes and the next slash. + */ + readonly authority: string; + /** + * path is the '/some/path' part of 'http://www.example.com/some/path?query#fragment'. + */ + readonly path: string; + /** + * query is the 'query' part of 'http://www.example.com/some/path?query#fragment'. + */ + readonly query: string; + /** + * fragment is the 'fragment' part of 'http://www.example.com/some/path?query#fragment'. + */ + readonly fragment: string; + /** + * Returns a string representing the corresponding file system path of this URI. + * Will handle UNC paths, normalizes windows drive letters to lower-case, and uses the + * platform specific path separator. + * + * * Will *not* validate the path for invalid characters and semantics. + * * Will *not* look at the scheme of this URI. + * * The result shall *not* be used for display purposes but for accessing a file on disk. + * + * + * The *difference* to `URI#path` is the use of the platform specific separator and the handling + * of UNC paths. See the below sample of a file-uri with an authority (UNC path). + * + * ```ts + const u = URI.parse('file://server/c$/folder/file.txt') + u.authority === 'server' + u.path === '/shares/c$/file.txt' + u.fsPath === '\\server\c$\folder\file.txt' + ``` + * + * Using `URI#path` to read a file (using fs-apis) would not be enough because parts of the path, + * namely the server name, would be missing. Therefore `URI#fsPath` exists - it's sugar to ease working + * with URIs that represent files on disk (`file` scheme). + */ + get fsPath(): string; + with(change: { + scheme?: string; + authority?: string | null; + path?: string | null; + query?: string | null; + fragment?: string | null; + }): URI; + /** + * Creates a new URI from a string, e.g. `http://www.example.com/some/path`, + * `file:///usr/home`, or `scheme:with/path`. + * + * @param value A string which represents an URI (see `URI#toString`). + */ + static parse(value: string, _strict?: boolean): URI; + /** + * Creates a new URI from a file system path, e.g. `c:\my\files`, + * `/usr/home`, or `\\server\share\some\path`. + * + * The *difference* between `URI#parse` and `URI#file` is that the latter treats the argument + * as path, not as stringified-uri. E.g. `URI.file(path)` is **not the same as** + * `URI.parse('file://' + path)` because the path might contain characters that are + * interpreted (# and ?). See the following sample: + * ```ts + const good = URI.file('/coding/c#/project1'); + good.scheme === 'file'; + good.path === '/coding/c#/project1'; + good.fragment === ''; + const bad = URI.parse('file://' + '/coding/c#/project1'); + bad.scheme === 'file'; + bad.path === '/coding/c'; // path is now broken + bad.fragment === '/project1'; + ``` + * + * @param path A file system path (see `URI#fsPath`) + */ + static file(path: string): URI; + /** + * Creates new URI from uri components. + * + * Unless `strict` is `true` the scheme is defaults to be `file`. This function performs + * validation and should be used for untrusted uri components retrieved from storage, + * user input, command arguments etc + */ + static from(components: UriComponents, strict?: boolean): URI; + /** + * Join a URI path with path fragments and normalizes the resulting path. + * + * @param uri The input URI. + * @param pathFragment The path fragment to add to the URI path. + * @returns The resulting URI. + */ + static joinPath(uri: URI, ...pathFragment: string[]): URI; + /** + * Creates a string representation for this URI. It's guaranteed that calling + * `URI.parse` with the result of this function creates an URI which is equal + * to this URI. + * + * * The result shall *not* be used for display purposes but for externalization or transport. + * * The result will be encoded using the percentage encoding and encoding happens mostly + * ignore the scheme-specific encoding rules. + * + * @param skipEncoding Do not encode the result, default is `false` + */ + toString(skipEncoding?: boolean): string; + toJSON(): UriComponents; + /** + * A helper function to revive URIs. + * + * **Note** that this function should only be used when receiving URI#toJSON generated data + * and that it doesn't do any validation. Use {@link URI.from} when received "untrusted" + * uri components such as command arguments or data from storage. + * + * @param data The URI components or URI to revive. + * @returns The revived URI or undefined or null. + */ + static revive(data: UriComponents | URI): URI; + static revive(data: UriComponents | URI | undefined): URI | undefined; + static revive(data: UriComponents | URI | null): URI | null; + static revive(data: UriComponents | URI | undefined | null): URI | undefined | null; +} +export interface UriComponents { + scheme: string; + authority?: string; + path?: string; + query?: string; + fragment?: string; +} +export declare function isUriComponents(thing: any): thing is UriComponents; +/** + * Compute `fsPath` for the given uri + */ +export declare function uriToFsPath(uri: URI, keepDriveLetterCasing: boolean): string; +/** + * Mapped-type that replaces all occurrences of URI with UriComponents + */ +export type UriDto = { + [K in keyof T]: T[K] extends URI ? UriComponents : UriDto; +}; diff --git a/packages/core/dist/uri.js b/packages/core/dist/uri.js index 037b5962..c761de07 100644 --- a/packages/core/dist/uri.js +++ b/packages/core/dist/uri.js @@ -1,636 +1,636 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ -import * as paths from './path.js'; -import { isWindows } from './platform.js'; -const _schemePattern = /^\w[\w\d+.-]*$/; -const _singleSlashStart = /^\//; -const _doubleSlashStart = /^\/\//; -function _validateUri(ret, _strict) { - // scheme, must be set - if (!ret.scheme && _strict) { - throw new Error(`[UriError]: Scheme is missing: {scheme: "", authority: "${ret.authority}", path: "${ret.path}", query: "${ret.query}", fragment: "${ret.fragment}"}`); - } - // scheme, https://tools.ietf.org/html/rfc3986#section-3.1 - // ALPHA *( ALPHA / DIGIT / "+" / "-" / "." ) - if (ret.scheme && !_schemePattern.test(ret.scheme)) { - throw new Error('[UriError]: Scheme contains illegal characters.'); - } - // path, http://tools.ietf.org/html/rfc3986#section-3.3 - // If a URI contains an authority component, then the path component - // must either be empty or begin with a slash ("/") character. If a URI - // does not contain an authority component, then the path cannot begin - // with two slash characters ("//"). - if (ret.path) { - if (ret.authority) { - if (!_singleSlashStart.test(ret.path)) { - throw new Error('[UriError]: If a URI contains an authority component, then the path component must either be empty or begin with a slash ("/") character'); - } - } - else { - if (_doubleSlashStart.test(ret.path)) { - throw new Error('[UriError]: If a URI does not contain an authority component, then the path cannot begin with two slash characters ("//")'); - } - } - } -} -// for a while we allowed uris *without* schemes and this is the migration -// for them, e.g. an uri without scheme and without strict-mode warns and falls -// back to the file-scheme. that should cause the least carnage and still be a -// clear warning -function _schemeFix(scheme, _strict) { - if (!scheme && !_strict) { - return 'file'; - } - return scheme; -} -// implements a bit of https://tools.ietf.org/html/rfc3986#section-5 -function _referenceResolution(scheme, path) { - // the slash-character is our 'default base' as we don't - // support constructing URIs relative to other URIs. This - // also means that we alter and potentially break paths. - // see https://tools.ietf.org/html/rfc3986#section-5.1.4 - switch (scheme) { - case 'https': - case 'http': - case 'file': - if (!path) { - path = _slash; - } - else if (path[0] !== _slash) { - path = _slash + path; - } - break; - } - return path; -} -const _empty = ''; -const _slash = '/'; -const _regexp = /^(([^:/?#]+?):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/; -/** - * Uniform Resource Identifier (URI) http://tools.ietf.org/html/rfc3986. - * This class is a simple parser which creates the basic component parts - * (http://tools.ietf.org/html/rfc3986#section-3) with minimal validation - * and encoding. - * - * ```txt - * foo://example.com:8042/over/there?name=ferret#nose - * \_/ \______________/\_________/ \_________/ \__/ - * | | | | | - * scheme authority path query fragment - * | _____________________|__ - * / \ / \ - * urn:example:animal:ferret:nose - * ``` - */ -export class URI { - static isUri(thing) { - if (thing instanceof URI) { - return true; - } - if (!thing) { - return false; - } - return typeof thing.authority === 'string' - && typeof thing.fragment === 'string' - && typeof thing.path === 'string' - && typeof thing.query === 'string' - && typeof thing.scheme === 'string' - && typeof thing.fsPath === 'string' - && typeof thing.with === 'function' - && typeof thing.toString === 'function'; - } - /** - * scheme is the 'http' part of 'http://www.example.com/some/path?query#fragment'. - * The part before the first colon. - */ - scheme; - /** - * authority is the 'www.example.com' part of 'http://www.example.com/some/path?query#fragment'. - * The part between the first double slashes and the next slash. - */ - authority; - /** - * path is the '/some/path' part of 'http://www.example.com/some/path?query#fragment'. - */ - path; - /** - * query is the 'query' part of 'http://www.example.com/some/path?query#fragment'. - */ - query; - /** - * fragment is the 'fragment' part of 'http://www.example.com/some/path?query#fragment'. - */ - fragment; - /** - * @internal - */ - constructor(schemeOrData, authority, path, query, fragment, _strict = false) { - if (typeof schemeOrData === 'object') { - this.scheme = schemeOrData.scheme || _empty; - this.authority = schemeOrData.authority || _empty; - this.path = schemeOrData.path || _empty; - this.query = schemeOrData.query || _empty; - this.fragment = schemeOrData.fragment || _empty; - // no validation because it's this URI - // that creates uri components. - // _validateUri(this); - } - else { - this.scheme = _schemeFix(schemeOrData, _strict); - this.authority = authority || _empty; - this.path = _referenceResolution(this.scheme, path || _empty); - this.query = query || _empty; - this.fragment = fragment || _empty; - _validateUri(this, _strict); - } - } - // ---- filesystem path ----------------------- - /** - * Returns a string representing the corresponding file system path of this URI. - * Will handle UNC paths, normalizes windows drive letters to lower-case, and uses the - * platform specific path separator. - * - * * Will *not* validate the path for invalid characters and semantics. - * * Will *not* look at the scheme of this URI. - * * The result shall *not* be used for display purposes but for accessing a file on disk. - * - * - * The *difference* to `URI#path` is the use of the platform specific separator and the handling - * of UNC paths. See the below sample of a file-uri with an authority (UNC path). - * - * ```ts - const u = URI.parse('file://server/c$/folder/file.txt') - u.authority === 'server' - u.path === '/shares/c$/file.txt' - u.fsPath === '\\server\c$\folder\file.txt' - ``` - * - * Using `URI#path` to read a file (using fs-apis) would not be enough because parts of the path, - * namely the server name, would be missing. Therefore `URI#fsPath` exists - it's sugar to ease working - * with URIs that represent files on disk (`file` scheme). - */ - get fsPath() { - // if (this.scheme !== 'file') { - // console.warn(`[UriError] calling fsPath with scheme ${this.scheme}`); - // } - return uriToFsPath(this, false); - } - // ---- modify to new ------------------------- - with(change) { - if (!change) { - return this; - } - let { scheme, authority, path, query, fragment } = change; - if (scheme === undefined) { - scheme = this.scheme; - } - else if (scheme === null) { - scheme = _empty; - } - if (authority === undefined) { - authority = this.authority; - } - else if (authority === null) { - authority = _empty; - } - if (path === undefined) { - path = this.path; - } - else if (path === null) { - path = _empty; - } - if (query === undefined) { - query = this.query; - } - else if (query === null) { - query = _empty; - } - if (fragment === undefined) { - fragment = this.fragment; - } - else if (fragment === null) { - fragment = _empty; - } - if (scheme === this.scheme - && authority === this.authority - && path === this.path - && query === this.query - && fragment === this.fragment) { - return this; - } - return new Uri(scheme, authority, path, query, fragment); - } - // ---- parse & validate ------------------------ - /** - * Creates a new URI from a string, e.g. `http://www.example.com/some/path`, - * `file:///usr/home`, or `scheme:with/path`. - * - * @param value A string which represents an URI (see `URI#toString`). - */ - static parse(value, _strict = false) { - const match = _regexp.exec(value); - if (!match) { - return new Uri(_empty, _empty, _empty, _empty, _empty); - } - return new Uri(match[2] || _empty, percentDecode(match[4] || _empty), percentDecode(match[5] || _empty), percentDecode(match[7] || _empty), percentDecode(match[9] || _empty), _strict); - } - /** - * Creates a new URI from a file system path, e.g. `c:\my\files`, - * `/usr/home`, or `\\server\share\some\path`. - * - * The *difference* between `URI#parse` and `URI#file` is that the latter treats the argument - * as path, not as stringified-uri. E.g. `URI.file(path)` is **not the same as** - * `URI.parse('file://' + path)` because the path might contain characters that are - * interpreted (# and ?). See the following sample: - * ```ts - const good = URI.file('/coding/c#/project1'); - good.scheme === 'file'; - good.path === '/coding/c#/project1'; - good.fragment === ''; - const bad = URI.parse('file://' + '/coding/c#/project1'); - bad.scheme === 'file'; - bad.path === '/coding/c'; // path is now broken - bad.fragment === '/project1'; - ``` - * - * @param path A file system path (see `URI#fsPath`) - */ - static file(path) { - let authority = _empty; - // normalize to fwd-slashes on windows, - // on other systems bwd-slashes are valid - // filename character, eg /f\oo/ba\r.txt - if (isWindows) { - path = path.replace(/\\/g, _slash); - } - // check for authority as used in UNC shares - // or use the path as given - if (path[0] === _slash && path[1] === _slash) { - const idx = path.indexOf(_slash, 2); - if (idx === -1) { - authority = path.substring(2); - path = _slash; - } - else { - authority = path.substring(2, idx); - path = path.substring(idx) || _slash; - } - } - return new Uri('file', authority, path, _empty, _empty); - } - /** - * Creates new URI from uri components. - * - * Unless `strict` is `true` the scheme is defaults to be `file`. This function performs - * validation and should be used for untrusted uri components retrieved from storage, - * user input, command arguments etc - */ - static from(components, strict) { - const result = new Uri(components.scheme, components.authority, components.path, components.query, components.fragment, strict); - return result; - } - /** - * Join a URI path with path fragments and normalizes the resulting path. - * - * @param uri The input URI. - * @param pathFragment The path fragment to add to the URI path. - * @returns The resulting URI. - */ - static joinPath(uri, ...pathFragment) { - if (!uri.path) { - throw new Error(`[UriError]: cannot call joinPath on URI without path`); - } - let newPath; - if (isWindows && uri.scheme === 'file') { - newPath = URI.file(paths.win32.join(uriToFsPath(uri, true), ...pathFragment)).path; - } - else { - newPath = paths.posix.join(uri.path, ...pathFragment); - } - return uri.with({ path: newPath }); - } - // ---- printing/externalize --------------------------- - /** - * Creates a string representation for this URI. It's guaranteed that calling - * `URI.parse` with the result of this function creates an URI which is equal - * to this URI. - * - * * The result shall *not* be used for display purposes but for externalization or transport. - * * The result will be encoded using the percentage encoding and encoding happens mostly - * ignore the scheme-specific encoding rules. - * - * @param skipEncoding Do not encode the result, default is `false` - */ - toString(skipEncoding = false) { - return _asFormatted(this, skipEncoding); - } - toJSON() { - return this; - } - static revive(data) { - if (!data) { - return data; - } - else if (data instanceof URI) { - return data; - } - else { - const result = new Uri(data); - result._formatted = data.external ?? null; - result._fsPath = data._sep === _pathSepMarker ? data.fsPath ?? null : null; - return result; - } - } - [Symbol.for('debug.description')]() { - return `URI(${this.toString()})`; - } -} -export function isUriComponents(thing) { - if (!thing || typeof thing !== 'object') { - return false; - } - return typeof thing.scheme === 'string' - && (typeof thing.authority === 'string' || typeof thing.authority === 'undefined') - && (typeof thing.path === 'string' || typeof thing.path === 'undefined') - && (typeof thing.query === 'string' || typeof thing.query === 'undefined') - && (typeof thing.fragment === 'string' || typeof thing.fragment === 'undefined'); -} -const _pathSepMarker = isWindows ? 1 : undefined; -// This class exists so that URI is compatible with vscode.Uri (API). -class Uri extends URI { - _formatted = null; - _fsPath = null; - get fsPath() { - if (!this._fsPath) { - this._fsPath = uriToFsPath(this, false); - } - return this._fsPath; - } - toString(skipEncoding = false) { - if (!skipEncoding) { - if (!this._formatted) { - this._formatted = _asFormatted(this, false); - } - return this._formatted; - } - else { - // we don't cache that - return _asFormatted(this, true); - } - } - toJSON() { - // eslint-disable-next-line local/code-no-dangerous-type-assertions - const res = { - $mid: 1 /* MarshalledId.Uri */ - }; - // cached state - if (this._fsPath) { - res.fsPath = this._fsPath; - res._sep = _pathSepMarker; - } - if (this._formatted) { - res.external = this._formatted; - } - //--- uri components - if (this.path) { - res.path = this.path; - } - // TODO - // this isn't correct and can violate the UriComponents contract but - // this is part of the vscode.Uri API and we shouldn't change how that - // works anymore - if (this.scheme) { - res.scheme = this.scheme; - } - if (this.authority) { - res.authority = this.authority; - } - if (this.query) { - res.query = this.query; - } - if (this.fragment) { - res.fragment = this.fragment; - } - return res; - } -} -// reserved characters: https://tools.ietf.org/html/rfc3986#section-2.2 -const encodeTable = { - [58 /* CharCode.Colon */]: '%3A', - [47 /* CharCode.Slash */]: '%2F', - [63 /* CharCode.QuestionMark */]: '%3F', - [35 /* CharCode.Hash */]: '%23', - [91 /* CharCode.OpenSquareBracket */]: '%5B', - [93 /* CharCode.CloseSquareBracket */]: '%5D', - [64 /* CharCode.AtSign */]: '%40', - [33 /* CharCode.ExclamationMark */]: '%21', - [36 /* CharCode.DollarSign */]: '%24', - [38 /* CharCode.Ampersand */]: '%26', - [39 /* CharCode.SingleQuote */]: '%27', - [40 /* CharCode.OpenParen */]: '%28', - [41 /* CharCode.CloseParen */]: '%29', - [42 /* CharCode.Asterisk */]: '%2A', - [43 /* CharCode.Plus */]: '%2B', - [44 /* CharCode.Comma */]: '%2C', - [59 /* CharCode.Semicolon */]: '%3B', - [61 /* CharCode.Equals */]: '%3D', - [32 /* CharCode.Space */]: '%20', -}; -function encodeURIComponentFast(uriComponent, isPath, isAuthority) { - let res = undefined; - let nativeEncodePos = -1; - for (let pos = 0; pos < uriComponent.length; pos++) { - const code = uriComponent.charCodeAt(pos); - // unreserved characters: https://tools.ietf.org/html/rfc3986#section-2.3 - if ((code >= 97 /* CharCode.a */ && code <= 122 /* CharCode.z */) - || (code >= 65 /* CharCode.A */ && code <= 90 /* CharCode.Z */) - || (code >= 48 /* CharCode.Digit0 */ && code <= 57 /* CharCode.Digit9 */) - || code === 45 /* CharCode.Dash */ - || code === 46 /* CharCode.Period */ - || code === 95 /* CharCode.Underline */ - || code === 126 /* CharCode.Tilde */ - || (isPath && code === 47 /* CharCode.Slash */) - || (isAuthority && code === 91 /* CharCode.OpenSquareBracket */) - || (isAuthority && code === 93 /* CharCode.CloseSquareBracket */) - || (isAuthority && code === 58 /* CharCode.Colon */)) { - // check if we are delaying native encode - if (nativeEncodePos !== -1) { - res += encodeURIComponent(uriComponent.substring(nativeEncodePos, pos)); - nativeEncodePos = -1; - } - // check if we write into a new string (by default we try to return the param) - if (res !== undefined) { - res += uriComponent.charAt(pos); - } - } - else { - // encoding needed, we need to allocate a new string - if (res === undefined) { - res = uriComponent.substr(0, pos); - } - // check with default table first - const escaped = encodeTable[code]; - if (escaped !== undefined) { - // check if we are delaying native encode - if (nativeEncodePos !== -1) { - res += encodeURIComponent(uriComponent.substring(nativeEncodePos, pos)); - nativeEncodePos = -1; - } - // append escaped variant to result - res += escaped; - } - else if (nativeEncodePos === -1) { - // use native encode only when needed - nativeEncodePos = pos; - } - } - } - if (nativeEncodePos !== -1) { - res += encodeURIComponent(uriComponent.substring(nativeEncodePos)); - } - return res !== undefined ? res : uriComponent; -} -function encodeURIComponentMinimal(path) { - let res = undefined; - for (let pos = 0; pos < path.length; pos++) { - const code = path.charCodeAt(pos); - if (code === 35 /* CharCode.Hash */ || code === 63 /* CharCode.QuestionMark */) { - if (res === undefined) { - res = path.substr(0, pos); - } - res += encodeTable[code]; - } - else { - if (res !== undefined) { - res += path[pos]; - } - } - } - return res !== undefined ? res : path; -} -/** - * Compute `fsPath` for the given uri - */ -export function uriToFsPath(uri, keepDriveLetterCasing) { - let value; - if (uri.authority && uri.path.length > 1 && uri.scheme === 'file') { - // unc path: file://shares/c$/far/boo - value = `//${uri.authority}${uri.path}`; - } - else if (uri.path.charCodeAt(0) === 47 /* CharCode.Slash */ - && (uri.path.charCodeAt(1) >= 65 /* CharCode.A */ && uri.path.charCodeAt(1) <= 90 /* CharCode.Z */ || uri.path.charCodeAt(1) >= 97 /* CharCode.a */ && uri.path.charCodeAt(1) <= 122 /* CharCode.z */) - && uri.path.charCodeAt(2) === 58 /* CharCode.Colon */) { - if (!keepDriveLetterCasing) { - // windows drive letter: file:///c:/far/boo - value = uri.path[1].toLowerCase() + uri.path.substr(2); - } - else { - value = uri.path.substr(1); - } - } - else { - // other path - value = uri.path; - } - if (isWindows) { - value = value.replace(/\//g, '\\'); - } - return value; -} -/** - * Create the external version of a uri - */ -function _asFormatted(uri, skipEncoding) { - const encoder = !skipEncoding - ? encodeURIComponentFast - : encodeURIComponentMinimal; - let res = ''; - let { scheme, authority, path, query, fragment } = uri; - if (scheme) { - res += scheme; - res += ':'; - } - if (authority || scheme === 'file') { - res += _slash; - res += _slash; - } - if (authority) { - let idx = authority.indexOf('@'); - if (idx !== -1) { - // @ - const userinfo = authority.substr(0, idx); - authority = authority.substr(idx + 1); - idx = userinfo.lastIndexOf(':'); - if (idx === -1) { - res += encoder(userinfo, false, false); - } - else { - // :@ - res += encoder(userinfo.substr(0, idx), false, false); - res += ':'; - res += encoder(userinfo.substr(idx + 1), false, true); - } - res += '@'; - } - authority = authority.toLowerCase(); - idx = authority.lastIndexOf(':'); - if (idx === -1) { - res += encoder(authority, false, true); - } - else { - // : - res += encoder(authority.substr(0, idx), false, true); - res += authority.substr(idx); - } - } - if (path) { - // lower-case windows drive letters in /C:/fff or C:/fff - if (path.length >= 3 && path.charCodeAt(0) === 47 /* CharCode.Slash */ && path.charCodeAt(2) === 58 /* CharCode.Colon */) { - const code = path.charCodeAt(1); - if (code >= 65 /* CharCode.A */ && code <= 90 /* CharCode.Z */) { - path = `/${String.fromCharCode(code + 32)}:${path.substr(3)}`; // "/c:".length === 3 - } - } - else if (path.length >= 2 && path.charCodeAt(1) === 58 /* CharCode.Colon */) { - const code = path.charCodeAt(0); - if (code >= 65 /* CharCode.A */ && code <= 90 /* CharCode.Z */) { - path = `${String.fromCharCode(code + 32)}:${path.substr(2)}`; // "/c:".length === 3 - } - } - // encode the rest of the path - res += encoder(path, true, false); - } - if (query) { - res += '?'; - res += encoder(query, false, false); - } - if (fragment) { - res += '#'; - res += !skipEncoding ? encodeURIComponentFast(fragment, false, false) : fragment; - } - return res; -} -// --- decode -function decodeURIComponentGraceful(str) { - try { - return decodeURIComponent(str); - } - catch { - if (str.length > 3) { - return str.substr(0, 3) + decodeURIComponentGraceful(str.substr(3)); - } - else { - return str; - } - } -} -const _rEncodedAsHex = /(%[0-9A-Za-z][0-9A-Za-z])+/g; -function percentDecode(str) { - if (!str.match(_rEncodedAsHex)) { - return str; - } - return str.replace(_rEncodedAsHex, (match) => decodeURIComponentGraceful(match)); -} +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +import * as paths from './path.js'; +import { isWindows } from './platform.js'; +const _schemePattern = /^\w[\w\d+.-]*$/; +const _singleSlashStart = /^\//; +const _doubleSlashStart = /^\/\//; +function _validateUri(ret, _strict) { + // scheme, must be set + if (!ret.scheme && _strict) { + throw new Error(`[UriError]: Scheme is missing: {scheme: "", authority: "${ret.authority}", path: "${ret.path}", query: "${ret.query}", fragment: "${ret.fragment}"}`); + } + // scheme, https://tools.ietf.org/html/rfc3986#section-3.1 + // ALPHA *( ALPHA / DIGIT / "+" / "-" / "." ) + if (ret.scheme && !_schemePattern.test(ret.scheme)) { + throw new Error('[UriError]: Scheme contains illegal characters.'); + } + // path, http://tools.ietf.org/html/rfc3986#section-3.3 + // If a URI contains an authority component, then the path component + // must either be empty or begin with a slash ("/") character. If a URI + // does not contain an authority component, then the path cannot begin + // with two slash characters ("//"). + if (ret.path) { + if (ret.authority) { + if (!_singleSlashStart.test(ret.path)) { + throw new Error('[UriError]: If a URI contains an authority component, then the path component must either be empty or begin with a slash ("/") character'); + } + } + else { + if (_doubleSlashStart.test(ret.path)) { + throw new Error('[UriError]: If a URI does not contain an authority component, then the path cannot begin with two slash characters ("//")'); + } + } + } +} +// for a while we allowed uris *without* schemes and this is the migration +// for them, e.g. an uri without scheme and without strict-mode warns and falls +// back to the file-scheme. that should cause the least carnage and still be a +// clear warning +function _schemeFix(scheme, _strict) { + if (!scheme && !_strict) { + return 'file'; + } + return scheme; +} +// implements a bit of https://tools.ietf.org/html/rfc3986#section-5 +function _referenceResolution(scheme, path) { + // the slash-character is our 'default base' as we don't + // support constructing URIs relative to other URIs. This + // also means that we alter and potentially break paths. + // see https://tools.ietf.org/html/rfc3986#section-5.1.4 + switch (scheme) { + case 'https': + case 'http': + case 'file': + if (!path) { + path = _slash; + } + else if (path[0] !== _slash) { + path = _slash + path; + } + break; + } + return path; +} +const _empty = ''; +const _slash = '/'; +const _regexp = /^(([^:/?#]+?):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/; +/** + * Uniform Resource Identifier (URI) http://tools.ietf.org/html/rfc3986. + * This class is a simple parser which creates the basic component parts + * (http://tools.ietf.org/html/rfc3986#section-3) with minimal validation + * and encoding. + * + * ```txt + * foo://example.com:8042/over/there?name=ferret#nose + * \_/ \______________/\_________/ \_________/ \__/ + * | | | | | + * scheme authority path query fragment + * | _____________________|__ + * / \ / \ + * urn:example:animal:ferret:nose + * ``` + */ +export class URI { + static isUri(thing) { + if (thing instanceof URI) { + return true; + } + if (!thing) { + return false; + } + return typeof thing.authority === 'string' + && typeof thing.fragment === 'string' + && typeof thing.path === 'string' + && typeof thing.query === 'string' + && typeof thing.scheme === 'string' + && typeof thing.fsPath === 'string' + && typeof thing.with === 'function' + && typeof thing.toString === 'function'; + } + /** + * scheme is the 'http' part of 'http://www.example.com/some/path?query#fragment'. + * The part before the first colon. + */ + scheme; + /** + * authority is the 'www.example.com' part of 'http://www.example.com/some/path?query#fragment'. + * The part between the first double slashes and the next slash. + */ + authority; + /** + * path is the '/some/path' part of 'http://www.example.com/some/path?query#fragment'. + */ + path; + /** + * query is the 'query' part of 'http://www.example.com/some/path?query#fragment'. + */ + query; + /** + * fragment is the 'fragment' part of 'http://www.example.com/some/path?query#fragment'. + */ + fragment; + /** + * @internal + */ + constructor(schemeOrData, authority, path, query, fragment, _strict = false) { + if (typeof schemeOrData === 'object') { + this.scheme = schemeOrData.scheme || _empty; + this.authority = schemeOrData.authority || _empty; + this.path = schemeOrData.path || _empty; + this.query = schemeOrData.query || _empty; + this.fragment = schemeOrData.fragment || _empty; + // no validation because it's this URI + // that creates uri components. + // _validateUri(this); + } + else { + this.scheme = _schemeFix(schemeOrData, _strict); + this.authority = authority || _empty; + this.path = _referenceResolution(this.scheme, path || _empty); + this.query = query || _empty; + this.fragment = fragment || _empty; + _validateUri(this, _strict); + } + } + // ---- filesystem path ----------------------- + /** + * Returns a string representing the corresponding file system path of this URI. + * Will handle UNC paths, normalizes windows drive letters to lower-case, and uses the + * platform specific path separator. + * + * * Will *not* validate the path for invalid characters and semantics. + * * Will *not* look at the scheme of this URI. + * * The result shall *not* be used for display purposes but for accessing a file on disk. + * + * + * The *difference* to `URI#path` is the use of the platform specific separator and the handling + * of UNC paths. See the below sample of a file-uri with an authority (UNC path). + * + * ```ts + const u = URI.parse('file://server/c$/folder/file.txt') + u.authority === 'server' + u.path === '/shares/c$/file.txt' + u.fsPath === '\\server\c$\folder\file.txt' + ``` + * + * Using `URI#path` to read a file (using fs-apis) would not be enough because parts of the path, + * namely the server name, would be missing. Therefore `URI#fsPath` exists - it's sugar to ease working + * with URIs that represent files on disk (`file` scheme). + */ + get fsPath() { + // if (this.scheme !== 'file') { + // console.warn(`[UriError] calling fsPath with scheme ${this.scheme}`); + // } + return uriToFsPath(this, false); + } + // ---- modify to new ------------------------- + with(change) { + if (!change) { + return this; + } + let { scheme, authority, path, query, fragment } = change; + if (scheme === undefined) { + scheme = this.scheme; + } + else if (scheme === null) { + scheme = _empty; + } + if (authority === undefined) { + authority = this.authority; + } + else if (authority === null) { + authority = _empty; + } + if (path === undefined) { + path = this.path; + } + else if (path === null) { + path = _empty; + } + if (query === undefined) { + query = this.query; + } + else if (query === null) { + query = _empty; + } + if (fragment === undefined) { + fragment = this.fragment; + } + else if (fragment === null) { + fragment = _empty; + } + if (scheme === this.scheme + && authority === this.authority + && path === this.path + && query === this.query + && fragment === this.fragment) { + return this; + } + return new Uri(scheme, authority, path, query, fragment); + } + // ---- parse & validate ------------------------ + /** + * Creates a new URI from a string, e.g. `http://www.example.com/some/path`, + * `file:///usr/home`, or `scheme:with/path`. + * + * @param value A string which represents an URI (see `URI#toString`). + */ + static parse(value, _strict = false) { + const match = _regexp.exec(value); + if (!match) { + return new Uri(_empty, _empty, _empty, _empty, _empty); + } + return new Uri(match[2] || _empty, percentDecode(match[4] || _empty), percentDecode(match[5] || _empty), percentDecode(match[7] || _empty), percentDecode(match[9] || _empty), _strict); + } + /** + * Creates a new URI from a file system path, e.g. `c:\my\files`, + * `/usr/home`, or `\\server\share\some\path`. + * + * The *difference* between `URI#parse` and `URI#file` is that the latter treats the argument + * as path, not as stringified-uri. E.g. `URI.file(path)` is **not the same as** + * `URI.parse('file://' + path)` because the path might contain characters that are + * interpreted (# and ?). See the following sample: + * ```ts + const good = URI.file('/coding/c#/project1'); + good.scheme === 'file'; + good.path === '/coding/c#/project1'; + good.fragment === ''; + const bad = URI.parse('file://' + '/coding/c#/project1'); + bad.scheme === 'file'; + bad.path === '/coding/c'; // path is now broken + bad.fragment === '/project1'; + ``` + * + * @param path A file system path (see `URI#fsPath`) + */ + static file(path) { + let authority = _empty; + // normalize to fwd-slashes on windows, + // on other systems bwd-slashes are valid + // filename character, eg /f\oo/ba\r.txt + if (isWindows) { + path = path.replace(/\\/g, _slash); + } + // check for authority as used in UNC shares + // or use the path as given + if (path[0] === _slash && path[1] === _slash) { + const idx = path.indexOf(_slash, 2); + if (idx === -1) { + authority = path.substring(2); + path = _slash; + } + else { + authority = path.substring(2, idx); + path = path.substring(idx) || _slash; + } + } + return new Uri('file', authority, path, _empty, _empty); + } + /** + * Creates new URI from uri components. + * + * Unless `strict` is `true` the scheme is defaults to be `file`. This function performs + * validation and should be used for untrusted uri components retrieved from storage, + * user input, command arguments etc + */ + static from(components, strict) { + const result = new Uri(components.scheme, components.authority, components.path, components.query, components.fragment, strict); + return result; + } + /** + * Join a URI path with path fragments and normalizes the resulting path. + * + * @param uri The input URI. + * @param pathFragment The path fragment to add to the URI path. + * @returns The resulting URI. + */ + static joinPath(uri, ...pathFragment) { + if (!uri.path) { + throw new Error(`[UriError]: cannot call joinPath on URI without path`); + } + let newPath; + if (isWindows && uri.scheme === 'file') { + newPath = URI.file(paths.win32.join(uriToFsPath(uri, true), ...pathFragment)).path; + } + else { + newPath = paths.posix.join(uri.path, ...pathFragment); + } + return uri.with({ path: newPath }); + } + // ---- printing/externalize --------------------------- + /** + * Creates a string representation for this URI. It's guaranteed that calling + * `URI.parse` with the result of this function creates an URI which is equal + * to this URI. + * + * * The result shall *not* be used for display purposes but for externalization or transport. + * * The result will be encoded using the percentage encoding and encoding happens mostly + * ignore the scheme-specific encoding rules. + * + * @param skipEncoding Do not encode the result, default is `false` + */ + toString(skipEncoding = false) { + return _asFormatted(this, skipEncoding); + } + toJSON() { + return this; + } + static revive(data) { + if (!data) { + return data; + } + else if (data instanceof URI) { + return data; + } + else { + const result = new Uri(data); + result._formatted = data.external ?? null; + result._fsPath = data._sep === _pathSepMarker ? data.fsPath ?? null : null; + return result; + } + } + [Symbol.for('debug.description')]() { + return `URI(${this.toString()})`; + } +} +export function isUriComponents(thing) { + if (!thing || typeof thing !== 'object') { + return false; + } + return typeof thing.scheme === 'string' + && (typeof thing.authority === 'string' || typeof thing.authority === 'undefined') + && (typeof thing.path === 'string' || typeof thing.path === 'undefined') + && (typeof thing.query === 'string' || typeof thing.query === 'undefined') + && (typeof thing.fragment === 'string' || typeof thing.fragment === 'undefined'); +} +const _pathSepMarker = isWindows ? 1 : undefined; +// This class exists so that URI is compatible with vscode.Uri (API). +class Uri extends URI { + _formatted = null; + _fsPath = null; + get fsPath() { + if (!this._fsPath) { + this._fsPath = uriToFsPath(this, false); + } + return this._fsPath; + } + toString(skipEncoding = false) { + if (!skipEncoding) { + if (!this._formatted) { + this._formatted = _asFormatted(this, false); + } + return this._formatted; + } + else { + // we don't cache that + return _asFormatted(this, true); + } + } + toJSON() { + // eslint-disable-next-line local/code-no-dangerous-type-assertions + const res = { + $mid: 1 /* MarshalledId.Uri */ + }; + // cached state + if (this._fsPath) { + res.fsPath = this._fsPath; + res._sep = _pathSepMarker; + } + if (this._formatted) { + res.external = this._formatted; + } + //--- uri components + if (this.path) { + res.path = this.path; + } + // TODO + // this isn't correct and can violate the UriComponents contract but + // this is part of the vscode.Uri API and we shouldn't change how that + // works anymore + if (this.scheme) { + res.scheme = this.scheme; + } + if (this.authority) { + res.authority = this.authority; + } + if (this.query) { + res.query = this.query; + } + if (this.fragment) { + res.fragment = this.fragment; + } + return res; + } +} +// reserved characters: https://tools.ietf.org/html/rfc3986#section-2.2 +const encodeTable = { + [58 /* CharCode.Colon */]: '%3A', // gen-delims + [47 /* CharCode.Slash */]: '%2F', + [63 /* CharCode.QuestionMark */]: '%3F', + [35 /* CharCode.Hash */]: '%23', + [91 /* CharCode.OpenSquareBracket */]: '%5B', + [93 /* CharCode.CloseSquareBracket */]: '%5D', + [64 /* CharCode.AtSign */]: '%40', + [33 /* CharCode.ExclamationMark */]: '%21', // sub-delims + [36 /* CharCode.DollarSign */]: '%24', + [38 /* CharCode.Ampersand */]: '%26', + [39 /* CharCode.SingleQuote */]: '%27', + [40 /* CharCode.OpenParen */]: '%28', + [41 /* CharCode.CloseParen */]: '%29', + [42 /* CharCode.Asterisk */]: '%2A', + [43 /* CharCode.Plus */]: '%2B', + [44 /* CharCode.Comma */]: '%2C', + [59 /* CharCode.Semicolon */]: '%3B', + [61 /* CharCode.Equals */]: '%3D', + [32 /* CharCode.Space */]: '%20', +}; +function encodeURIComponentFast(uriComponent, isPath, isAuthority) { + let res = undefined; + let nativeEncodePos = -1; + for (let pos = 0; pos < uriComponent.length; pos++) { + const code = uriComponent.charCodeAt(pos); + // unreserved characters: https://tools.ietf.org/html/rfc3986#section-2.3 + if ((code >= 97 /* CharCode.a */ && code <= 122 /* CharCode.z */) + || (code >= 65 /* CharCode.A */ && code <= 90 /* CharCode.Z */) + || (code >= 48 /* CharCode.Digit0 */ && code <= 57 /* CharCode.Digit9 */) + || code === 45 /* CharCode.Dash */ + || code === 46 /* CharCode.Period */ + || code === 95 /* CharCode.Underline */ + || code === 126 /* CharCode.Tilde */ + || (isPath && code === 47 /* CharCode.Slash */) + || (isAuthority && code === 91 /* CharCode.OpenSquareBracket */) + || (isAuthority && code === 93 /* CharCode.CloseSquareBracket */) + || (isAuthority && code === 58 /* CharCode.Colon */)) { + // check if we are delaying native encode + if (nativeEncodePos !== -1) { + res += encodeURIComponent(uriComponent.substring(nativeEncodePos, pos)); + nativeEncodePos = -1; + } + // check if we write into a new string (by default we try to return the param) + if (res !== undefined) { + res += uriComponent.charAt(pos); + } + } + else { + // encoding needed, we need to allocate a new string + if (res === undefined) { + res = uriComponent.substr(0, pos); + } + // check with default table first + const escaped = encodeTable[code]; + if (escaped !== undefined) { + // check if we are delaying native encode + if (nativeEncodePos !== -1) { + res += encodeURIComponent(uriComponent.substring(nativeEncodePos, pos)); + nativeEncodePos = -1; + } + // append escaped variant to result + res += escaped; + } + else if (nativeEncodePos === -1) { + // use native encode only when needed + nativeEncodePos = pos; + } + } + } + if (nativeEncodePos !== -1) { + res += encodeURIComponent(uriComponent.substring(nativeEncodePos)); + } + return res !== undefined ? res : uriComponent; +} +function encodeURIComponentMinimal(path) { + let res = undefined; + for (let pos = 0; pos < path.length; pos++) { + const code = path.charCodeAt(pos); + if (code === 35 /* CharCode.Hash */ || code === 63 /* CharCode.QuestionMark */) { + if (res === undefined) { + res = path.substr(0, pos); + } + res += encodeTable[code]; + } + else { + if (res !== undefined) { + res += path[pos]; + } + } + } + return res !== undefined ? res : path; +} +/** + * Compute `fsPath` for the given uri + */ +export function uriToFsPath(uri, keepDriveLetterCasing) { + let value; + if (uri.authority && uri.path.length > 1 && uri.scheme === 'file') { + // unc path: file://shares/c$/far/boo + value = `//${uri.authority}${uri.path}`; + } + else if (uri.path.charCodeAt(0) === 47 /* CharCode.Slash */ + && (uri.path.charCodeAt(1) >= 65 /* CharCode.A */ && uri.path.charCodeAt(1) <= 90 /* CharCode.Z */ || uri.path.charCodeAt(1) >= 97 /* CharCode.a */ && uri.path.charCodeAt(1) <= 122 /* CharCode.z */) + && uri.path.charCodeAt(2) === 58 /* CharCode.Colon */) { + if (!keepDriveLetterCasing) { + // windows drive letter: file:///c:/far/boo + value = uri.path[1].toLowerCase() + uri.path.substr(2); + } + else { + value = uri.path.substr(1); + } + } + else { + // other path + value = uri.path; + } + if (isWindows) { + value = value.replace(/\//g, '\\'); + } + return value; +} +/** + * Create the external version of a uri + */ +function _asFormatted(uri, skipEncoding) { + const encoder = !skipEncoding + ? encodeURIComponentFast + : encodeURIComponentMinimal; + let res = ''; + let { scheme, authority, path, query, fragment } = uri; + if (scheme) { + res += scheme; + res += ':'; + } + if (authority || scheme === 'file') { + res += _slash; + res += _slash; + } + if (authority) { + let idx = authority.indexOf('@'); + if (idx !== -1) { + // @ + const userinfo = authority.substr(0, idx); + authority = authority.substr(idx + 1); + idx = userinfo.lastIndexOf(':'); + if (idx === -1) { + res += encoder(userinfo, false, false); + } + else { + // :@ + res += encoder(userinfo.substr(0, idx), false, false); + res += ':'; + res += encoder(userinfo.substr(idx + 1), false, true); + } + res += '@'; + } + authority = authority.toLowerCase(); + idx = authority.lastIndexOf(':'); + if (idx === -1) { + res += encoder(authority, false, true); + } + else { + // : + res += encoder(authority.substr(0, idx), false, true); + res += authority.substr(idx); + } + } + if (path) { + // lower-case windows drive letters in /C:/fff or C:/fff + if (path.length >= 3 && path.charCodeAt(0) === 47 /* CharCode.Slash */ && path.charCodeAt(2) === 58 /* CharCode.Colon */) { + const code = path.charCodeAt(1); + if (code >= 65 /* CharCode.A */ && code <= 90 /* CharCode.Z */) { + path = `/${String.fromCharCode(code + 32)}:${path.substr(3)}`; // "/c:".length === 3 + } + } + else if (path.length >= 2 && path.charCodeAt(1) === 58 /* CharCode.Colon */) { + const code = path.charCodeAt(0); + if (code >= 65 /* CharCode.A */ && code <= 90 /* CharCode.Z */) { + path = `${String.fromCharCode(code + 32)}:${path.substr(2)}`; // "/c:".length === 3 + } + } + // encode the rest of the path + res += encoder(path, true, false); + } + if (query) { + res += '?'; + res += encoder(query, false, false); + } + if (fragment) { + res += '#'; + res += !skipEncoding ? encodeURIComponentFast(fragment, false, false) : fragment; + } + return res; +} +// --- decode +function decodeURIComponentGraceful(str) { + try { + return decodeURIComponent(str); + } + catch { + if (str.length > 3) { + return str.substr(0, 3) + decodeURIComponentGraceful(str.substr(3)); + } + else { + return str; + } + } +} +const _rEncodedAsHex = /(%[0-9A-Za-z][0-9A-Za-z])+/g; +function percentDecode(str) { + if (!str.match(_rEncodedAsHex)) { + return str; + } + return str.replace(_rEncodedAsHex, (match) => decodeURIComponentGraceful(match)); +} //# sourceMappingURL=uri.js.map \ No newline at end of file diff --git a/packages/core/dist/uri.js.map b/packages/core/dist/uri.js.map index a6080e8e..4fad0f7c 100644 --- a/packages/core/dist/uri.js.map +++ b/packages/core/dist/uri.js.map @@ -1 +1 @@ -{"version":3,"file":"uri.js","sourceRoot":"","sources":["../src/uri.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"uri.js","sourceRoot":"","sources":["../src/uri.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/dist/utils.d.ts b/packages/core/dist/utils.d.ts index 396efd15..6f1b7c92 100644 --- a/packages/core/dist/utils.d.ts +++ b/packages/core/dist/utils.d.ts @@ -1,76 +1,75 @@ -/// -export declare function StingEnum(o: Array): { - [K in T]: K; -}; -export declare const DefaultDelimiter: { - begin: string; - end: string; -}; -export declare const hasFlag: (field: any, enumValue: any) => boolean; -export declare const hasFlagHex: (field: any, enumValue: any) => boolean; -export declare const disableFlag: (enumValue: any, field: any) => any; -/** - * The minimum location of high surrogates - */ -export declare const HIGH_SURROGATE_MIN = 55296; -/** - * The maximum location of high surrogates - */ -export declare const HIGH_SURROGATE_MAX = 56319; -/** - * The minimum location of low surrogates - */ -export declare const LOW_SURROGATE_MIN = 56320; -/** - * The maximum location of low surrogates - */ -export declare const LOW_SURROGATE_MAX = 57343; -export declare const capitalize: (word: any) => any; -export declare const getJson: (inData: any, validOnly: any, ommit: any) => any; -/** - * Escapes a string so that it can safely be passed to the RegExp constructor. - * @param text The string to be escaped - * @return The escaped string - */ -export declare function escapeRegExpEx(text: string): string; -/** - * Sanitizes a string to protect against tag injection. - * @param xml The string to be escaped - * @param forAttribute Whether to also escape ', ", and > in addition to < and & - * @return The escaped string - */ -export declare function escapeXml(xml: string, forAttribute?: boolean): string; -export declare function createUUID(): string; -export declare function escapeRegExp(str: string): string; -export declare function replaceAll(find: string, replace: string, str: string): string; -export interface IDelimiter { - begin: string; - end: string; -} -export declare const substitute: (template: any, map: any) => any; -export type ByteBuffer = Uint16Array | Uint8Array | Buffer | number[]; -export interface Codec { - encode(data: string): number[]; - decode(data: ByteBuffer): string; -} -/** - * Provides facilities for encoding a string into an ASCII-encoded byte buffer and - * decoding an ASCII-encoded byte buffer into a string. - */ -export declare const ascii: Codec; -/** - * Provides facilities for encoding a string into a Base64-encoded byte buffer and - * decoding a Base64-encoded byte buffer into a string. - */ -export declare const base64: Codec; -/** - * Provides facilities for encoding a string into a hex-encoded byte buffer and - * decoding a hex-encoded byte buffer into a string. - */ -export declare const hex: Codec; -/** - * Provides facilities for encoding a string into a UTF-8-encoded byte buffer and - * decoding a UTF-8-encoded byte buffer into a string. - * Inspired by the work of: https://github.com/mathiasbynens/utf8.js - */ -export declare const utf8: Codec; +export declare function StingEnum(o: Array): { + [K in T]: K; +}; +export declare const DefaultDelimiter: { + begin: string; + end: string; +}; +export declare const hasFlag: (field: any, enumValue: any) => boolean; +export declare const hasFlagHex: (field: any, enumValue: any) => boolean; +export declare const disableFlag: (enumValue: any, field: any) => any; +/** + * The minimum location of high surrogates + */ +export declare const HIGH_SURROGATE_MIN = 55296; +/** + * The maximum location of high surrogates + */ +export declare const HIGH_SURROGATE_MAX = 56319; +/** + * The minimum location of low surrogates + */ +export declare const LOW_SURROGATE_MIN = 56320; +/** + * The maximum location of low surrogates + */ +export declare const LOW_SURROGATE_MAX = 57343; +export declare const capitalize: (word: any) => any; +export declare const getJson: (inData: any, validOnly: any, ommit: any) => any; +/** + * Escapes a string so that it can safely be passed to the RegExp constructor. + * @param text The string to be escaped + * @return The escaped string + */ +export declare function escapeRegExpEx(text: string): string; +/** + * Sanitizes a string to protect against tag injection. + * @param xml The string to be escaped + * @param forAttribute Whether to also escape ', ", and > in addition to < and & + * @return The escaped string + */ +export declare function escapeXml(xml: string, forAttribute?: boolean): string; +export declare function createUUID(): string; +export declare function escapeRegExp(str: string): string; +export declare function replaceAll(find: string, replace: string, str: string): string; +export interface IDelimiter { + begin: string; + end: string; +} +export declare const substitute: (template: any, map: any) => any; +export type ByteBuffer = Uint16Array | Uint8Array | Buffer | number[]; +export interface Codec { + encode(data: string): number[]; + decode(data: ByteBuffer): string; +} +/** + * Provides facilities for encoding a string into an ASCII-encoded byte buffer and + * decoding an ASCII-encoded byte buffer into a string. + */ +export declare const ascii: Codec; +/** + * Provides facilities for encoding a string into a Base64-encoded byte buffer and + * decoding a Base64-encoded byte buffer into a string. + */ +export declare const base64: Codec; +/** + * Provides facilities for encoding a string into a hex-encoded byte buffer and + * decoding a hex-encoded byte buffer into a string. + */ +export declare const hex: Codec; +/** + * Provides facilities for encoding a string into a UTF-8-encoded byte buffer and + * decoding a UTF-8-encoded byte buffer into a string. + * Inspired by the work of: https://github.com/mathiasbynens/utf8.js + */ +export declare const utf8: Codec; diff --git a/packages/core/dist/utils.js b/packages/core/dist/utils.js index 77b0efed..662bf994 100644 --- a/packages/core/dist/utils.js +++ b/packages/core/dist/utils.js @@ -1,379 +1,379 @@ -export function StingEnum(o) { - return o.reduce((res, key) => { - res[key] = key; - return res; - }, Object.create(null)); -} -import { isString } from './primitives.js'; -const escapeRegExpPattern = /[[\]{}()|/\\^$.*+?]/g; -const escapeXmlPattern = /[&<]/g; -const escapeXmlForPattern = /[&<>'"]/g; -const escapeXmlMap = { - '&': '&', - '<': '<', - '>': '>', - '"': '"', - '\'': ''' -}; -export const DefaultDelimiter = { - begin: '<%', - end: '%>' -}; -export const hasFlag = (field, enumValue) => { - //noinspection JSBitwiseOperatorUsage,JSBitwiseOperatorUsage,JSBitwiseOperatorUsage,JSBitwiseOperatorUsage,JSBitwiseOperatorUsage,JSBitwiseOperatorUsage,JSBitwiseOperatorUsage,JSBitwiseOperatorUsage - return ((1 << enumValue) & field) ? true : false; -}; -export const hasFlagHex = (field, enumValue) => { - //noinspection JSBitwiseOperatorUsage,JSBitwiseOperatorUsage,JSBitwiseOperatorUsage,JSBitwiseOperatorUsage,JSBitwiseOperatorUsage,JSBitwiseOperatorUsage,JSBitwiseOperatorUsage,JSBitwiseOperatorUsage - return enumValue & field ? true : false; -}; -export const disableFlag = (enumValue, field) => { - enumValue &= ~(1 << field); - return enumValue; -}; -/** - * The minimum location of high surrogates - */ -export const HIGH_SURROGATE_MIN = 0xD800; -/** - * The maximum location of high surrogates - */ -export const HIGH_SURROGATE_MAX = 0xDBFF; -/** - * The minimum location of low surrogates - */ -export const LOW_SURROGATE_MIN = 0xDC00; -/** - * The maximum location of low surrogates - */ -export const LOW_SURROGATE_MAX = 0xDFFF; -const BASE64_KEYSTR = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='; -export const capitalize = (word) => { - return word.substring(0, 1).toUpperCase() + word.substring(1); -}; -export const getJson = (inData, validOnly, ommit) => { - try { - return isString(inData) ? JSON.parse(inData) : validOnly === true ? null : inData; - } - catch (e) { - ommit !== false && console.error('error parsing json data ' + inData + ' error = ' + e); - } - return null; -}; -/** - * Escapes a string so that it can safely be passed to the RegExp constructor. - * @param text The string to be escaped - * @return The escaped string - */ -export function escapeRegExpEx(text) { - return !text ? text : text.replace(escapeRegExpPattern, '\\$&'); -} -/** - * Sanitizes a string to protect against tag injection. - * @param xml The string to be escaped - * @param forAttribute Whether to also escape ', ", and > in addition to < and & - * @return The escaped string - */ -export function escapeXml(xml, forAttribute = true) { - if (!xml) { - return xml; - } - const pattern = forAttribute ? escapeXmlForPattern : escapeXmlPattern; - return xml.replace(pattern, function (character) { - return escapeXmlMap[character]; - }); -} -export function createUUID() { - const S4 = function () { - return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1); - }; - return (S4() + S4() + '-' + S4() + '-' + S4() + '-' + S4() + '-' + S4() + S4() + S4()); -} -export function escapeRegExp(str) { - const special = ['[', ']', '(', ')', '{', '}', '*', '+', '.', '|', '||']; - for (let n = 0; n < special.length; n++) { - str = str.replace(special[n], '\\' + special[n]); - } - return str; -} -; -export function replaceAll(find, replace, str) { - return str ? str.split(find).join(replace) : ''; -} -; -export const substitute = (template, map) => { - const transform = (k) => k || ''; - return template.replace(/\$\{([^\s:}]+)(?::([^\s:}]+))?\}/g, (match, key, format) => transform(map[key]).toString()); -}; -function decodeUtf8EncodedCodePoint(codePoint, validationRange = [0, Infinity], checkSurrogate) { - if (codePoint < validationRange[0] || codePoint > validationRange[1]) { - throw Error('Invalid continuation byte'); - } - if (checkSurrogate && codePoint >= HIGH_SURROGATE_MIN && codePoint <= LOW_SURROGATE_MAX) { - throw Error('Surrogate is not a scalar value'); - } - let encoded = ''; - if (codePoint > 0xFFFF) { - codePoint -= 0x010000; - encoded += String.fromCharCode(codePoint >>> 0x10 & 0x03FF | HIGH_SURROGATE_MIN); - codePoint = LOW_SURROGATE_MIN | codePoint & 0x03FF; - } - encoded += String.fromCharCode(codePoint); - return encoded; -} -function validateUtf8EncodedCodePoint(codePoint) { - if ((codePoint & 0xC0) !== 0x80) { - throw Error('Invalid continuation byte'); - } -} -/** - * Provides facilities for encoding a string into an ASCII-encoded byte buffer and - * decoding an ASCII-encoded byte buffer into a string. - */ -export const ascii = { - /** - * Encodes a string into an ASCII-encoded byte buffer. - * - * @param data The text string to encode - */ - encode(data) { - if (data == null) { - return []; - } - const buffer = []; - for (let i = 0, length = data.length; i < length; i++) { - buffer[i] = data.charCodeAt(i); - } - return buffer; - }, - /** - * Decodes an ASCII-encoded byte buffer into a string. - * - * @param data The byte buffer to decode - */ - decode(data) { - if (data == null) { - return ''; - } - let decoded = ''; - for (let i = 0, length = data.length; i < length; i++) { - decoded += String.fromCharCode(data[i]); - } - return decoded; - } -}; -/** - * Provides facilities for encoding a string into a Base64-encoded byte buffer and - * decoding a Base64-encoded byte buffer into a string. - */ -export const base64 = { - /** - * Encodes a Base64-encoded string into a Base64 byte buffer. - * - * @param data The Base64-encoded string to encode - */ - encode(data) { - if (data == null) { - return []; - } - const buffer = []; - let i = 0; - let length = data.length; - while (data[--length] === '=') { } - while (i < length) { - let encoded = BASE64_KEYSTR.indexOf(data[i++]) << 18; - if (i <= length) { - encoded |= BASE64_KEYSTR.indexOf(data[i++]) << 12; - } - if (i <= length) { - encoded |= BASE64_KEYSTR.indexOf(data[i++]) << 6; - } - if (i <= length) { - encoded |= BASE64_KEYSTR.indexOf(data[i++]); - } - buffer.push((encoded >>> 16) & 0xff); - buffer.push((encoded >>> 8) & 0xff); - buffer.push(encoded & 0xff); - } - while (buffer[buffer.length - 1] === 0) { - buffer.pop(); - } - return buffer; - }, - /** - * Decodes a Base64-encoded byte buffer into a Base64-encoded string. - * - * @param data The byte buffer to decode - */ - decode(data) { - if (data == null) { - return ''; - } - let decoded = ''; - let i = 0; - for (let length = data.length - (data.length % 3); i < length;) { - const encoded = data[i++] << 16 | data[i++] << 8 | data[i++]; - decoded += BASE64_KEYSTR.charAt((encoded >>> 18) & 0x3F); - decoded += BASE64_KEYSTR.charAt((encoded >>> 12) & 0x3F); - decoded += BASE64_KEYSTR.charAt((encoded >>> 6) & 0x3F); - decoded += BASE64_KEYSTR.charAt(encoded & 0x3F); - } - if (data.length % 3 === 1) { - const encoded = data[i++] << 16; - decoded += BASE64_KEYSTR.charAt((encoded >>> 18) & 0x3f); - decoded += BASE64_KEYSTR.charAt((encoded >>> 12) & 0x3f); - decoded += '=='; - } - else if (data.length % 3 === 2) { - const encoded = data[i++] << 16 | data[i++] << 8; - decoded += BASE64_KEYSTR.charAt((encoded >>> 18) & 0x3f); - decoded += BASE64_KEYSTR.charAt((encoded >>> 12) & 0x3f); - decoded += BASE64_KEYSTR.charAt((encoded >>> 6) & 0x3f); - decoded += '='; - } - return decoded; - } -}; -/** - * Provides facilities for encoding a string into a hex-encoded byte buffer and - * decoding a hex-encoded byte buffer into a string. - */ -export const hex = { - /** - * Encodes a string into a hex-encoded byte buffer. - * - * @param data The hex-encoded string to encode - */ - encode(data) { - if (data == null) { - return []; - } - const buffer = []; - for (let i = 0, length = data.length; i < length; i += 2) { - const encodedChar = parseInt(data.substr(i, 2), 16); - buffer.push(encodedChar); - } - return buffer; - }, - /** - * Decodes a hex-encoded byte buffer into a hex-encoded string. - * - * @param data The byte buffer to decode - */ - decode(data) { - if (data == null) { - return ''; - } - let decoded = ''; - for (let i = 0, length = data.length; i < length; i++) { - decoded += data[i].toString(16).toUpperCase(); - } - return decoded; - } -}; -/** - * Provides facilities for encoding a string into a UTF-8-encoded byte buffer and - * decoding a UTF-8-encoded byte buffer into a string. - * Inspired by the work of: https://github.com/mathiasbynens/utf8.js - */ -export const utf8 = { - /** - * Encodes a string into a UTF-8-encoded byte buffer. - * - * @param data The text string to encode - */ - encode(data) { - if (data == null) { - return []; - } - const buffer = []; - for (let i = 0, length = data.length; i < length; i++) { - let encodedChar = data.charCodeAt(i); - /** - * Surrogates - * http://en.wikipedia.org/wiki/Universal_Character_Set_characters - */ - if (encodedChar >= HIGH_SURROGATE_MIN && encodedChar <= HIGH_SURROGATE_MAX) { - const lowSurrogate = data.charCodeAt(i + 1); - if (lowSurrogate >= LOW_SURROGATE_MIN && lowSurrogate <= LOW_SURROGATE_MAX) { - encodedChar = 0x010000 + (encodedChar - HIGH_SURROGATE_MIN) * 0x0400 + (lowSurrogate - LOW_SURROGATE_MIN); - i++; - } - } - if (encodedChar < 0x80) { - buffer.push(encodedChar); - } - else { - if (encodedChar < 0x800) { - buffer.push(((encodedChar >> 0x06) & 0x1F) | 0xC0); - } - else if (encodedChar < 0x010000) { - if (encodedChar >= HIGH_SURROGATE_MIN && encodedChar <= LOW_SURROGATE_MAX) { - throw Error('Surrogate is not a scalar value'); - } - buffer.push(((encodedChar >> 0x0C) & 0x0F) | 0xE0); - buffer.push(((encodedChar >> 0x06) & 0x3F) | 0x80); - } - else if (encodedChar < 0x200000) { - buffer.push(((encodedChar >> 0x12) & 0x07) | 0xF0); - buffer.push(((encodedChar >> 0x0C) & 0x3F) | 0x80); - buffer.push(((encodedChar >> 0x06) & 0x3F) | 0x80); - } - buffer.push((encodedChar & 0x3F) | 0x80); - } - } - return buffer; - }, - /** - * Decodes a UTF-8-encoded byte buffer into a string. - * - * @param data The byte buffer to decode - */ - decode(data) { - if (data == null) { - return ''; - } - let decoded = ''; - for (let i = 0, length = data.length; i < length; i++) { - const byte1 = data[i] & 0xFF; - if ((byte1 & 0x80) === 0) { - decoded += decodeUtf8EncodedCodePoint(byte1); - } - else if ((byte1 & 0xE0) === 0xC0) { - let byte2 = data[++i] & 0xFF; - validateUtf8EncodedCodePoint(byte2); - byte2 = byte2 & 0x3F; - const encodedByte = ((byte1 & 0x1F) << 0x06) | byte2; - decoded += decodeUtf8EncodedCodePoint(encodedByte, [0x80, Infinity]); - } - else if ((byte1 & 0xF0) === 0xE0) { - let byte2 = data[++i] & 0xFF; - validateUtf8EncodedCodePoint(byte2); - byte2 = byte2 & 0x3F; - let byte3 = data[++i] & 0xFF; - validateUtf8EncodedCodePoint(byte3); - byte3 = byte3 & 0x3F; - const encodedByte = ((byte1 & 0x1F) << 0x0C) | (byte2 << 0x06) | byte3; - decoded += decodeUtf8EncodedCodePoint(encodedByte, [0x0800, Infinity], true); - } - else if ((byte1 & 0xF8) === 0xF0) { - let byte2 = data[++i] & 0xFF; - validateUtf8EncodedCodePoint(byte2); - byte2 = byte2 & 0x3F; - let byte3 = data[++i] & 0xFF; - validateUtf8EncodedCodePoint(byte3); - byte3 = byte3 & 0x3F; - let byte4 = data[++i] & 0xFF; - validateUtf8EncodedCodePoint(byte4); - byte4 = byte4 & 0x3F; - const encodedByte = ((byte1 & 0x1F) << 0x0C) | (byte2 << 0x0C) | (byte3 << 0x06) | byte4; - decoded += decodeUtf8EncodedCodePoint(encodedByte, [0x010000, 0x10FFFF]); - } - else { - validateUtf8EncodedCodePoint(byte1); - } - } - return decoded; - } -}; +export function StingEnum(o) { + return o.reduce((res, key) => { + res[key] = key; + return res; + }, Object.create(null)); +} +import { isString } from './primitives.js'; +const escapeRegExpPattern = /[[\]{}()|/\\^$.*+?]/g; +const escapeXmlPattern = /[&<]/g; +const escapeXmlForPattern = /[&<>'"]/g; +const escapeXmlMap = { + '&': '&', + '<': '<', + '>': '>', + '"': '"', + '\'': ''' +}; +export const DefaultDelimiter = { + begin: '<%', + end: '%>' +}; +export const hasFlag = (field, enumValue) => { + //noinspection JSBitwiseOperatorUsage,JSBitwiseOperatorUsage,JSBitwiseOperatorUsage,JSBitwiseOperatorUsage,JSBitwiseOperatorUsage,JSBitwiseOperatorUsage,JSBitwiseOperatorUsage,JSBitwiseOperatorUsage + return ((1 << enumValue) & field) ? true : false; +}; +export const hasFlagHex = (field, enumValue) => { + //noinspection JSBitwiseOperatorUsage,JSBitwiseOperatorUsage,JSBitwiseOperatorUsage,JSBitwiseOperatorUsage,JSBitwiseOperatorUsage,JSBitwiseOperatorUsage,JSBitwiseOperatorUsage,JSBitwiseOperatorUsage + return enumValue & field ? true : false; +}; +export const disableFlag = (enumValue, field) => { + enumValue &= ~(1 << field); + return enumValue; +}; +/** + * The minimum location of high surrogates + */ +export const HIGH_SURROGATE_MIN = 0xD800; +/** + * The maximum location of high surrogates + */ +export const HIGH_SURROGATE_MAX = 0xDBFF; +/** + * The minimum location of low surrogates + */ +export const LOW_SURROGATE_MIN = 0xDC00; +/** + * The maximum location of low surrogates + */ +export const LOW_SURROGATE_MAX = 0xDFFF; +const BASE64_KEYSTR = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='; +export const capitalize = (word) => { + return word.substring(0, 1).toUpperCase() + word.substring(1); +}; +export const getJson = (inData, validOnly, ommit) => { + try { + return isString(inData) ? JSON.parse(inData) : validOnly === true ? null : inData; + } + catch (e) { + ommit !== false && console.error('error parsing json data ' + inData + ' error = ' + e); + } + return null; +}; +/** + * Escapes a string so that it can safely be passed to the RegExp constructor. + * @param text The string to be escaped + * @return The escaped string + */ +export function escapeRegExpEx(text) { + return !text ? text : text.replace(escapeRegExpPattern, '\\$&'); +} +/** + * Sanitizes a string to protect against tag injection. + * @param xml The string to be escaped + * @param forAttribute Whether to also escape ', ", and > in addition to < and & + * @return The escaped string + */ +export function escapeXml(xml, forAttribute = true) { + if (!xml) { + return xml; + } + const pattern = forAttribute ? escapeXmlForPattern : escapeXmlPattern; + return xml.replace(pattern, function (character) { + return escapeXmlMap[character]; + }); +} +export function createUUID() { + const S4 = function () { + return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1); + }; + return (S4() + S4() + '-' + S4() + '-' + S4() + '-' + S4() + '-' + S4() + S4() + S4()); +} +export function escapeRegExp(str) { + const special = ['[', ']', '(', ')', '{', '}', '*', '+', '.', '|', '||']; + for (let n = 0; n < special.length; n++) { + str = str.replace(special[n], '\\' + special[n]); + } + return str; +} +; +export function replaceAll(find, replace, str) { + return str ? str.split(find).join(replace) : ''; +} +; +export const substitute = (template, map) => { + const transform = (k) => k || ''; + return template.replace(/\$\{([^\s:}]+)(?::([^\s:}]+))?\}/g, (match, key, format) => transform(map[key]).toString()); +}; +function decodeUtf8EncodedCodePoint(codePoint, validationRange = [0, Infinity], checkSurrogate) { + if (codePoint < validationRange[0] || codePoint > validationRange[1]) { + throw Error('Invalid continuation byte'); + } + if (checkSurrogate && codePoint >= HIGH_SURROGATE_MIN && codePoint <= LOW_SURROGATE_MAX) { + throw Error('Surrogate is not a scalar value'); + } + let encoded = ''; + if (codePoint > 0xFFFF) { + codePoint -= 0x010000; + encoded += String.fromCharCode(codePoint >>> 0x10 & 0x03FF | HIGH_SURROGATE_MIN); + codePoint = LOW_SURROGATE_MIN | codePoint & 0x03FF; + } + encoded += String.fromCharCode(codePoint); + return encoded; +} +function validateUtf8EncodedCodePoint(codePoint) { + if ((codePoint & 0xC0) !== 0x80) { + throw Error('Invalid continuation byte'); + } +} +/** + * Provides facilities for encoding a string into an ASCII-encoded byte buffer and + * decoding an ASCII-encoded byte buffer into a string. + */ +export const ascii = { + /** + * Encodes a string into an ASCII-encoded byte buffer. + * + * @param data The text string to encode + */ + encode(data) { + if (data == null) { + return []; + } + const buffer = []; + for (let i = 0, length = data.length; i < length; i++) { + buffer[i] = data.charCodeAt(i); + } + return buffer; + }, + /** + * Decodes an ASCII-encoded byte buffer into a string. + * + * @param data The byte buffer to decode + */ + decode(data) { + if (data == null) { + return ''; + } + let decoded = ''; + for (let i = 0, length = data.length; i < length; i++) { + decoded += String.fromCharCode(data[i]); + } + return decoded; + } +}; +/** + * Provides facilities for encoding a string into a Base64-encoded byte buffer and + * decoding a Base64-encoded byte buffer into a string. + */ +export const base64 = { + /** + * Encodes a Base64-encoded string into a Base64 byte buffer. + * + * @param data The Base64-encoded string to encode + */ + encode(data) { + if (data == null) { + return []; + } + const buffer = []; + let i = 0; + let length = data.length; + while (data[--length] === '=') { } + while (i < length) { + let encoded = BASE64_KEYSTR.indexOf(data[i++]) << 18; + if (i <= length) { + encoded |= BASE64_KEYSTR.indexOf(data[i++]) << 12; + } + if (i <= length) { + encoded |= BASE64_KEYSTR.indexOf(data[i++]) << 6; + } + if (i <= length) { + encoded |= BASE64_KEYSTR.indexOf(data[i++]); + } + buffer.push((encoded >>> 16) & 0xff); + buffer.push((encoded >>> 8) & 0xff); + buffer.push(encoded & 0xff); + } + while (buffer[buffer.length - 1] === 0) { + buffer.pop(); + } + return buffer; + }, + /** + * Decodes a Base64-encoded byte buffer into a Base64-encoded string. + * + * @param data The byte buffer to decode + */ + decode(data) { + if (data == null) { + return ''; + } + let decoded = ''; + let i = 0; + for (let length = data.length - (data.length % 3); i < length;) { + const encoded = data[i++] << 16 | data[i++] << 8 | data[i++]; + decoded += BASE64_KEYSTR.charAt((encoded >>> 18) & 0x3F); + decoded += BASE64_KEYSTR.charAt((encoded >>> 12) & 0x3F); + decoded += BASE64_KEYSTR.charAt((encoded >>> 6) & 0x3F); + decoded += BASE64_KEYSTR.charAt(encoded & 0x3F); + } + if (data.length % 3 === 1) { + const encoded = data[i++] << 16; + decoded += BASE64_KEYSTR.charAt((encoded >>> 18) & 0x3f); + decoded += BASE64_KEYSTR.charAt((encoded >>> 12) & 0x3f); + decoded += '=='; + } + else if (data.length % 3 === 2) { + const encoded = data[i++] << 16 | data[i++] << 8; + decoded += BASE64_KEYSTR.charAt((encoded >>> 18) & 0x3f); + decoded += BASE64_KEYSTR.charAt((encoded >>> 12) & 0x3f); + decoded += BASE64_KEYSTR.charAt((encoded >>> 6) & 0x3f); + decoded += '='; + } + return decoded; + } +}; +/** + * Provides facilities for encoding a string into a hex-encoded byte buffer and + * decoding a hex-encoded byte buffer into a string. + */ +export const hex = { + /** + * Encodes a string into a hex-encoded byte buffer. + * + * @param data The hex-encoded string to encode + */ + encode(data) { + if (data == null) { + return []; + } + const buffer = []; + for (let i = 0, length = data.length; i < length; i += 2) { + const encodedChar = parseInt(data.substr(i, 2), 16); + buffer.push(encodedChar); + } + return buffer; + }, + /** + * Decodes a hex-encoded byte buffer into a hex-encoded string. + * + * @param data The byte buffer to decode + */ + decode(data) { + if (data == null) { + return ''; + } + let decoded = ''; + for (let i = 0, length = data.length; i < length; i++) { + decoded += data[i].toString(16).toUpperCase(); + } + return decoded; + } +}; +/** + * Provides facilities for encoding a string into a UTF-8-encoded byte buffer and + * decoding a UTF-8-encoded byte buffer into a string. + * Inspired by the work of: https://github.com/mathiasbynens/utf8.js + */ +export const utf8 = { + /** + * Encodes a string into a UTF-8-encoded byte buffer. + * + * @param data The text string to encode + */ + encode(data) { + if (data == null) { + return []; + } + const buffer = []; + for (let i = 0, length = data.length; i < length; i++) { + let encodedChar = data.charCodeAt(i); + /** + * Surrogates + * http://en.wikipedia.org/wiki/Universal_Character_Set_characters + */ + if (encodedChar >= HIGH_SURROGATE_MIN && encodedChar <= HIGH_SURROGATE_MAX) { + const lowSurrogate = data.charCodeAt(i + 1); + if (lowSurrogate >= LOW_SURROGATE_MIN && lowSurrogate <= LOW_SURROGATE_MAX) { + encodedChar = 0x010000 + (encodedChar - HIGH_SURROGATE_MIN) * 0x0400 + (lowSurrogate - LOW_SURROGATE_MIN); + i++; + } + } + if (encodedChar < 0x80) { + buffer.push(encodedChar); + } + else { + if (encodedChar < 0x800) { + buffer.push(((encodedChar >> 0x06) & 0x1F) | 0xC0); + } + else if (encodedChar < 0x010000) { + if (encodedChar >= HIGH_SURROGATE_MIN && encodedChar <= LOW_SURROGATE_MAX) { + throw Error('Surrogate is not a scalar value'); + } + buffer.push(((encodedChar >> 0x0C) & 0x0F) | 0xE0); + buffer.push(((encodedChar >> 0x06) & 0x3F) | 0x80); + } + else if (encodedChar < 0x200000) { + buffer.push(((encodedChar >> 0x12) & 0x07) | 0xF0); + buffer.push(((encodedChar >> 0x0C) & 0x3F) | 0x80); + buffer.push(((encodedChar >> 0x06) & 0x3F) | 0x80); + } + buffer.push((encodedChar & 0x3F) | 0x80); + } + } + return buffer; + }, + /** + * Decodes a UTF-8-encoded byte buffer into a string. + * + * @param data The byte buffer to decode + */ + decode(data) { + if (data == null) { + return ''; + } + let decoded = ''; + for (let i = 0, length = data.length; i < length; i++) { + const byte1 = data[i] & 0xFF; + if ((byte1 & 0x80) === 0) { + decoded += decodeUtf8EncodedCodePoint(byte1); + } + else if ((byte1 & 0xE0) === 0xC0) { + let byte2 = data[++i] & 0xFF; + validateUtf8EncodedCodePoint(byte2); + byte2 = byte2 & 0x3F; + const encodedByte = ((byte1 & 0x1F) << 0x06) | byte2; + decoded += decodeUtf8EncodedCodePoint(encodedByte, [0x80, Infinity]); + } + else if ((byte1 & 0xF0) === 0xE0) { + let byte2 = data[++i] & 0xFF; + validateUtf8EncodedCodePoint(byte2); + byte2 = byte2 & 0x3F; + let byte3 = data[++i] & 0xFF; + validateUtf8EncodedCodePoint(byte3); + byte3 = byte3 & 0x3F; + const encodedByte = ((byte1 & 0x1F) << 0x0C) | (byte2 << 0x06) | byte3; + decoded += decodeUtf8EncodedCodePoint(encodedByte, [0x0800, Infinity], true); + } + else if ((byte1 & 0xF8) === 0xF0) { + let byte2 = data[++i] & 0xFF; + validateUtf8EncodedCodePoint(byte2); + byte2 = byte2 & 0x3F; + let byte3 = data[++i] & 0xFF; + validateUtf8EncodedCodePoint(byte3); + byte3 = byte3 & 0x3F; + let byte4 = data[++i] & 0xFF; + validateUtf8EncodedCodePoint(byte4); + byte4 = byte4 & 0x3F; + const encodedByte = ((byte1 & 0x1F) << 0x0C) | (byte2 << 0x0C) | (byte3 << 0x06) | byte4; + decoded += decodeUtf8EncodedCodePoint(encodedByte, [0x010000, 0x10FFFF]); + } + else { + validateUtf8EncodedCodePoint(byte1); + } + } + return decoded; + } +}; //# sourceMappingURL=utils.js.map \ No newline at end of file diff --git a/packages/core/dist/utils.js.map b/packages/core/dist/utils.js.map index 097872ba..b9832d07 100644 --- a/packages/core/dist/utils.js.map +++ b/packages/core/dist/utils.js.map @@ -1 +1 @@ -{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,SAAS,CAAmB,CAAW;IACnD,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QACzB,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;QACf,OAAO,GAAG,CAAC;IACf,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5B,CAAC;AAED,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE3C,MAAM,mBAAmB,GAAG,sBAAsB,CAAC;AACnD,MAAM,gBAAgB,GAAG,OAAO,CAAC;AACjC,MAAM,mBAAmB,GAAG,UAAU,CAAC;AACvC,MAAM,YAAY,GAA2B;IACzC,GAAG,EAAE,OAAO;IACZ,GAAG,EAAE,MAAM;IACX,GAAG,EAAE,MAAM;IACX,GAAG,EAAE,QAAQ;IACb,IAAI,EAAE,OAAO;CAChB,CAAC;AACF,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC5B,KAAK,EAAE,IAAI;IACX,GAAG,EAAE,IAAI;CACZ,CAAC;AACF,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE;IACxC,sMAAsM;IACtM,OAAO,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;AACrD,CAAC,CAAC;AACF,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE;IAC3C,sMAAsM;IACtM,OAAO,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;AAC5C,CAAC,CAAC;AACF,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE;IAC5C,SAAS,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC;IAC3B,OAAO,SAAS,CAAC;AACrB,CAAC,CAAC;AACF;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC;AACzC;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC;AACzC;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC;AACxC;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC;AAExC,MAAM,aAAa,GAAG,mEAAmE,CAAC;AAE1F,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,IAAI,EAAE,EAAE;IAC/B,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAClE,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE;IAChD,IAAI,CAAC;QACD,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;IACtF,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACT,KAAK,KAAK,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,0BAA0B,GAAG,MAAM,GAAG,WAAW,GAAG,CAAC,CAAC,CAAC;IAC5F,CAAC;IACD,OAAO,IAAI,CAAC;AAChB,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY;IACvC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;AACpE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CAAC,GAAW,EAAE,YAAY,GAAG,IAAI;IACtD,IAAI,CAAC,GAAG,EAAE,CAAC;QACP,OAAO,GAAG,CAAC;IACf,CAAC;IAED,MAAM,OAAO,GAAG,YAAY,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,gBAAgB,CAAC;IAEtE,OAAO,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,UAAU,SAAiB;QACnD,OAAO,YAAY,CAAC,SAAS,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;AACP,CAAC;AAED,MAAM,UAAU,UAAU;IACtB,MAAM,EAAE,GAAG;QACP,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAC3E,CAAC,CAAC;IACF,OAAO,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;AAC3F,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,GAAW;IACpC,MAAM,OAAO,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;IACzE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACrD,CAAC;IACD,OAAO,GAAG,CAAC;AACf,CAAC;AAAA,CAAC;AAIF,MAAM,UAAU,UAAU,CAAC,IAAY,EAAE,OAAe,EAAE,GAAW;IACjE,OAAO,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACpD,CAAC;AAAA,CAAC;AAOF,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE;IACxC,MAAM,SAAS,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACjC,OAAO,QAAQ,CAAC,OAAO,CAAC,mCAAmC,EACvD,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAChE,CAAC,CAAA;AAED,SAAS,0BAA0B,CAAC,SAAiB,EAAE,kBAA4B,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,cAAwB;IACtH,IAAI,SAAS,GAAG,eAAe,CAAC,CAAC,CAAC,IAAI,SAAS,GAAG,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC;QACnE,MAAM,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAC7C,CAAC;IAED,IAAI,cAAc,IAAI,SAAS,IAAI,kBAAkB,IAAI,SAAS,IAAI,iBAAiB,EAAE,CAAC;QACtF,MAAM,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACnD,CAAC;IAED,IAAI,OAAO,GAAG,EAAE,CAAC;IAEjB,IAAI,SAAS,GAAG,MAAM,EAAE,CAAC;QACrB,SAAS,IAAI,QAAQ,CAAC;QACtB,OAAO,IAAI,MAAM,CAAC,YAAY,CAAC,SAAS,KAAK,IAAI,GAAG,MAAM,GAAG,kBAAkB,CAAC,CAAC;QACjF,SAAS,GAAG,iBAAiB,GAAG,SAAS,GAAG,MAAM,CAAC;IACvD,CAAC;IAED,OAAO,IAAI,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;IAE1C,OAAO,OAAO,CAAC;AACnB,CAAC;AAED,SAAS,4BAA4B,CAAC,SAAiB;IACnD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;QAC9B,MAAM,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAC7C,CAAC;AACL,CAAC;AASD;;;GAGG;AACH,MAAM,CAAC,MAAM,KAAK,GAAU;IACxB;;;;OAIG;IACH,MAAM,CAAC,IAAY;QACf,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;YACf,OAAO,EAAE,CAAC;QACd,CAAC;QAED,MAAM,MAAM,GAAa,EAAE,CAAC;QAE5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACpD,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACnC,CAAC;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;IACD;;;;OAIG;IACH,MAAM,CAAC,IAAgB;QACnB,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;YACf,OAAO,EAAE,CAAC;QACd,CAAC;QAED,IAAI,OAAO,GAAG,EAAE,CAAC;QAEjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACpD,OAAO,IAAI,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5C,CAAC;QAED,OAAO,OAAO,CAAC;IACnB,CAAC;CACJ,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,MAAM,GAAU;IACzB;;;;OAIG;IACH,MAAM,CAAC,IAAY;QACf,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;YACf,OAAO,EAAE,CAAC;QACd,CAAC;QAED,MAAM,MAAM,GAAa,EAAE,CAAC;QAE5B,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAEzB,OAAO,IAAI,CAAC,EAAE,MAAM,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC;QAClC,OAAO,CAAC,GAAG,MAAM,EAAE,CAAC;YAChB,IAAI,OAAO,GAAG,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YACrD,IAAI,CAAC,IAAI,MAAM,EAAE,CAAC;gBACd,OAAO,IAAI,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YACtD,CAAC;YACD,IAAI,CAAC,IAAI,MAAM,EAAE,CAAC;gBACd,OAAO,IAAI,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;YACrD,CAAC;YACD,IAAI,CAAC,IAAI,MAAM,EAAE,CAAC;gBACd,OAAO,IAAI,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAChD,CAAC;YAED,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;YACrC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;YACpC,MAAM,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;QAChC,CAAC;QAED,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;YACrC,MAAM,CAAC,GAAG,EAAE,CAAC;QACjB,CAAC;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;IACD;;;;OAIG;IACH,MAAM,CAAC,IAAgB;QACnB,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;YACf,OAAO,EAAE,CAAC;QACd,CAAC;QAED,IAAI,OAAO,GAAG,EAAE,CAAC;QACjB,IAAI,CAAC,GAAG,CAAC,CAAC;QAEV,KAAK,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,GAAG,CAAC;YAC7D,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;YAE7D,OAAO,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC,OAAO,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;YACzD,OAAO,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC,OAAO,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;YACzD,OAAO,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;YACxD,OAAO,IAAI,aAAa,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;QACpD,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YACxB,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;YAChC,OAAO,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC,OAAO,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;YACzD,OAAO,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC,OAAO,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;YACzD,OAAO,IAAI,IAAI,CAAC;QACpB,CAAC;aAAM,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;YACjD,OAAO,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC,OAAO,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;YACzD,OAAO,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC,OAAO,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;YACzD,OAAO,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;YACxD,OAAO,IAAI,GAAG,CAAC;QACnB,CAAC;QAED,OAAO,OAAO,CAAC;IACnB,CAAC;CACJ,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,GAAG,GAAU;IACtB;;;;OAIG;IACH,MAAM,CAAC,IAAY;QACf,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;YACf,OAAO,EAAE,CAAC;QACd,CAAC;QAED,MAAM,MAAM,GAAa,EAAE,CAAC;QAE5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YACvD,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAEpD,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC7B,CAAC;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;IACD;;;;OAIG;IACH,MAAM,CAAC,IAAgB;QACnB,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;YACf,OAAO,EAAE,CAAC;QACd,CAAC;QAED,IAAI,OAAO,GAAG,EAAE,CAAC;QAEjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACpD,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;QAClD,CAAC;QAED,OAAO,OAAO,CAAC;IACnB,CAAC;CACJ,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,IAAI,GAAU;IACvB;;;;OAIG;IACH,MAAM,CAAC,IAAY;QACf,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;YACf,OAAO,EAAE,CAAC;QACd,CAAC;QAED,MAAM,MAAM,GAAa,EAAE,CAAC;QAE5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACpD,IAAI,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YACrC;;;eAGG;YACH,IAAI,WAAW,IAAI,kBAAkB,IAAI,WAAW,IAAI,kBAAkB,EAAE,CAAC;gBACzE,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC5C,IAAI,YAAY,IAAI,iBAAiB,IAAI,YAAY,IAAI,iBAAiB,EAAE,CAAC;oBACzE,WAAW,GAAG,QAAQ,GAAG,CAAC,WAAW,GAAG,kBAAkB,CAAC,GAAG,MAAM,GAAG,CAAC,YAAY,GAAG,iBAAiB,CAAC,CAAC;oBAC1G,CAAC,EAAE,CAAC;gBACR,CAAC;YACL,CAAC;YAED,IAAI,WAAW,GAAG,IAAI,EAAE,CAAC;gBACrB,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC7B,CAAC;iBAAM,CAAC;gBACJ,IAAI,WAAW,GAAG,KAAK,EAAE,CAAC;oBACtB,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;gBACvD,CAAC;qBAAM,IAAI,WAAW,GAAG,QAAQ,EAAE,CAAC;oBAChC,IAAI,WAAW,IAAI,kBAAkB,IAAI,WAAW,IAAI,iBAAiB,EAAE,CAAC;wBACxE,MAAM,KAAK,CAAC,iCAAiC,CAAC,CAAC;oBACnD,CAAC;oBAED,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;oBACnD,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;gBACvD,CAAC;qBAAM,IAAI,WAAW,GAAG,QAAQ,EAAE,CAAC;oBAChC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;oBACnD,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;oBACnD,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;gBACvD,CAAC;gBACD,MAAM,CAAC,IAAI,CAAC,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;YAC7C,CAAC;QACL,CAAC;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;IACD;;;;OAIG;IACH,MAAM,CAAC,IAAgB;QACnB,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;YACf,OAAO,EAAE,CAAC;QACd,CAAC;QAED,IAAI,OAAO,GAAG,EAAE,CAAC;QAEjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACpD,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;YAE7B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBACvB,OAAO,IAAI,0BAA0B,CAAC,KAAK,CAAC,CAAC;YACjD,CAAC;iBAAM,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;gBACjC,IAAI,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;gBAC7B,4BAA4B,CAAC,KAAK,CAAC,CAAC;gBACpC,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC;gBACrB,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC;gBACrD,OAAO,IAAI,0BAA0B,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;YACzE,CAAC;iBAAM,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;gBACjC,IAAI,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;gBAC7B,4BAA4B,CAAC,KAAK,CAAC,CAAC;gBACpC,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC;gBAErB,IAAI,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;gBAC7B,4BAA4B,CAAC,KAAK,CAAC,CAAC;gBACpC,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC;gBAErB,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC;gBACvE,OAAO,IAAI,0BAA0B,CAAC,WAAW,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAC;YACjF,CAAC;iBAAM,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;gBACjC,IAAI,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;gBAC7B,4BAA4B,CAAC,KAAK,CAAC,CAAC;gBACpC,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC;gBAErB,IAAI,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;gBAC7B,4BAA4B,CAAC,KAAK,CAAC,CAAC;gBACpC,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC;gBAErB,IAAI,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;gBAC7B,4BAA4B,CAAC,KAAK,CAAC,CAAC;gBACpC,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC;gBAErB,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC;gBACzF,OAAO,IAAI,0BAA0B,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;YAC7E,CAAC;iBAAM,CAAC;gBACJ,4BAA4B,CAAC,KAAK,CAAC,CAAC;YACxC,CAAC;QACL,CAAC;QACD,OAAO,OAAO,CAAC;IACnB,CAAC;CACJ,CAAC"} \ No newline at end of file diff --git a/packages/core/dist/uuid.d.ts b/packages/core/dist/uuid.d.ts index e53e30bd..bebf7833 100644 --- a/packages/core/dist/uuid.d.ts +++ b/packages/core/dist/uuid.d.ts @@ -1,22 +1,22 @@ -/** - * Represents a UUID as defined by rfc4122. - */ -export interface UUID { - /** - * @returns the canonical representation in sets of hexadecimal numbers separated by dashes. - */ - asHex(): string; - equals(other: UUID): boolean; -} -/** - * An empty UUID that contains only zeros. - */ -export declare const empty: UUID; -export declare function v4(): UUID; -export declare function isUUID(value: string): boolean; -/** - * Parses a UUID that is of the format xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx. - * @param value A uuid string. - */ -export declare function parse(value: string): UUID; -export declare function generateUuid(): string; +/** + * Represents a UUID as defined by rfc4122. + */ +export interface UUID { + /** + * @returns the canonical representation in sets of hexadecimal numbers separated by dashes. + */ + asHex(): string; + equals(other: UUID): boolean; +} +/** + * An empty UUID that contains only zeros. + */ +export declare const empty: UUID; +export declare function v4(): UUID; +export declare function isUUID(value: string): boolean; +/** + * Parses a UUID that is of the format xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx. + * @param value A uuid string. + */ +export declare function parse(value: string): UUID; +export declare function generateUuid(): string; diff --git a/packages/core/dist/uuid.js b/packages/core/dist/uuid.js index 4afd5e77..c164d2e3 100644 --- a/packages/core/dist/uuid.js +++ b/packages/core/dist/uuid.js @@ -1,93 +1,93 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ -'use strict'; -class ValueUUID { - _value; - constructor(_value) { - this._value = _value; - // empty - } - asHex() { - return this._value; - } - equals(other) { - return this.asHex() === other.asHex(); - } -} -class V4UUID extends ValueUUID { - static _chars = ['0', '1', '2', '3', '4', '5', '6', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f']; - static _timeHighBits = ['8', '9', 'a', 'b']; - static _oneOf(array) { - return array[Math.floor(array.length * Math.random())]; - } - static _randomHex() { - return V4UUID._oneOf(V4UUID._chars); - } - constructor() { - super([ - V4UUID._randomHex(), - V4UUID._randomHex(), - V4UUID._randomHex(), - V4UUID._randomHex(), - V4UUID._randomHex(), - V4UUID._randomHex(), - V4UUID._randomHex(), - V4UUID._randomHex(), - '-', - V4UUID._randomHex(), - V4UUID._randomHex(), - V4UUID._randomHex(), - V4UUID._randomHex(), - '-', - '4', - V4UUID._randomHex(), - V4UUID._randomHex(), - V4UUID._randomHex(), - '-', - V4UUID._oneOf(V4UUID._timeHighBits), - V4UUID._randomHex(), - V4UUID._randomHex(), - V4UUID._randomHex(), - '-', - V4UUID._randomHex(), - V4UUID._randomHex(), - V4UUID._randomHex(), - V4UUID._randomHex(), - V4UUID._randomHex(), - V4UUID._randomHex(), - V4UUID._randomHex(), - V4UUID._randomHex(), - V4UUID._randomHex(), - V4UUID._randomHex(), - V4UUID._randomHex(), - V4UUID._randomHex(), - ].join('')); - } -} -/** - * An empty UUID that contains only zeros. - */ -export const empty = new ValueUUID('00000000-0000-0000-0000-000000000000'); -export function v4() { - return new V4UUID(); -} -const _UUIDPattern = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i; -export function isUUID(value) { - return _UUIDPattern.test(value); -} -/** - * Parses a UUID that is of the format xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx. - * @param value A uuid string. - */ -export function parse(value) { - if (!isUUID(value)) { - throw new Error('invalid uuid'); - } - return new ValueUUID(value); -} -export function generateUuid() { - return v4().asHex(); -} +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +'use strict'; +class ValueUUID { + _value; + constructor(_value) { + this._value = _value; + // empty + } + asHex() { + return this._value; + } + equals(other) { + return this.asHex() === other.asHex(); + } +} +class V4UUID extends ValueUUID { + static _chars = ['0', '1', '2', '3', '4', '5', '6', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f']; + static _timeHighBits = ['8', '9', 'a', 'b']; + static _oneOf(array) { + return array[Math.floor(array.length * Math.random())]; + } + static _randomHex() { + return V4UUID._oneOf(V4UUID._chars); + } + constructor() { + super([ + V4UUID._randomHex(), + V4UUID._randomHex(), + V4UUID._randomHex(), + V4UUID._randomHex(), + V4UUID._randomHex(), + V4UUID._randomHex(), + V4UUID._randomHex(), + V4UUID._randomHex(), + '-', + V4UUID._randomHex(), + V4UUID._randomHex(), + V4UUID._randomHex(), + V4UUID._randomHex(), + '-', + '4', + V4UUID._randomHex(), + V4UUID._randomHex(), + V4UUID._randomHex(), + '-', + V4UUID._oneOf(V4UUID._timeHighBits), + V4UUID._randomHex(), + V4UUID._randomHex(), + V4UUID._randomHex(), + '-', + V4UUID._randomHex(), + V4UUID._randomHex(), + V4UUID._randomHex(), + V4UUID._randomHex(), + V4UUID._randomHex(), + V4UUID._randomHex(), + V4UUID._randomHex(), + V4UUID._randomHex(), + V4UUID._randomHex(), + V4UUID._randomHex(), + V4UUID._randomHex(), + V4UUID._randomHex(), + ].join('')); + } +} +/** + * An empty UUID that contains only zeros. + */ +export const empty = new ValueUUID('00000000-0000-0000-0000-000000000000'); +export function v4() { + return new V4UUID(); +} +const _UUIDPattern = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i; +export function isUUID(value) { + return _UUIDPattern.test(value); +} +/** + * Parses a UUID that is of the format xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx. + * @param value A uuid string. + */ +export function parse(value) { + if (!isUUID(value)) { + throw new Error('invalid uuid'); + } + return new ValueUUID(value); +} +export function generateUuid() { + return v4().asHex(); +} //# sourceMappingURL=uuid.js.map \ No newline at end of file diff --git a/packages/core/dist/uuid.js.map b/packages/core/dist/uuid.js.map index ce901f4d..b8703986 100644 --- a/packages/core/dist/uuid.js.map +++ b/packages/core/dist/uuid.js.map @@ -1 +1 @@ -{"version":3,"file":"uuid.js","sourceRoot":"","sources":["../src/uuid.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"uuid.js","sourceRoot":"","sources":["../src/uuid.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/core/eslint.config.js b/packages/core/eslint.config.js deleted file mode 100644 index 9dd72a92..00000000 --- a/packages/core/eslint.config.js +++ /dev/null @@ -1,95 +0,0 @@ -import tseslint from 'typescript-eslint'; -import path from 'node:path'; -import { fileURLToPath } from 'node:url'; -// plugins -import regexpEslint from 'eslint-plugin-regexp'; -const typescriptEslint = tseslint.plugin; - -// parsers -const typescriptParser = tseslint.parser; - -const __filename = fileURLToPath(import.meta.url); -const __dirname = path.dirname(__filename); - - -/** @type {import('eslint').Linter.Config[]} */ -export default [ - { - files: ["src/*.{ts}"] -}, - - ...tseslint.configs.recommendedTypeChecked, - ...tseslint.configs.stylisticTypeChecked, - regexpEslint.configs['flat/recommended'], - { - languageOptions: { - parser: typescriptParser, - parserOptions: { - project: ['./packages/*/tsconfig.json', './tsconfig.eslint.json'], - tsconfigRootDir: __dirname, - }, - }, - plugins: { - '@typescript-eslint': typescriptEslint, - regexp: regexpEslint, - }, - rules: { - // These off/configured-differently-by-default rules fit well for us - '@typescript-eslint/switch-exhaustiveness-check': 'error', - '@typescript-eslint/no-shadow': 'off', - 'no-console': 'off', - '@typescript-eslint/no-unsafe-enum-comparison' : 'off', - '@typescript-eslint/no-empty-object-type': 'off', - // Todo: do we want these? - 'no-var': 'off', - - 'regexp/prefer-regexp-exec': 'off', - '@typescript-eslint/no-duplicate-enum-values': 'off', - '@typescript-eslint/no-unsafe-function-type': 'off', - '@typescript-eslint/prefer-for-of': 'off', - '@typescript-eslint/no-unused-vars': 'off', - '@typescript-eslint/array-type': 'off', - '@typescript-eslint/ban-ts-comment': 'off', - '@typescript-eslint/class-literal-property-style': 'off', - '@typescript-eslint/consistent-indexed-object-style': 'off', - '@typescript-eslint/consistent-type-definitions': 'off', - '@typescript-eslint/dot-notation': 'off', - '@typescript-eslint/no-base-to-string': 'off', - '@typescript-eslint/no-empty-function': 'off', - '@typescript-eslint/no-floating-promises': 'off', - '@typescript-eslint/no-misused-promises': 'off', - '@typescript-eslint/no-redundant-type-constituents': 'off', - '@typescript-eslint/no-this-alias': 'off', - '@typescript-eslint/no-unsafe-argument': 'off', - '@typescript-eslint/no-unsafe-assignment': 'off', - '@typescript-eslint/no-unsafe-call': 'off', - '@typescript-eslint/no-unsafe-member-access': 'off', - '@typescript-eslint/no-unused-expressions': 'off', - '@typescript-eslint/only-throw-error': 'off', - '@typescript-eslint/no-unsafe-return': 'off', - '@typescript-eslint/no-unnecessary-type-assertion': 'off', - '@typescript-eslint/prefer-nullish-coalescing': 'off', - '@typescript-eslint/prefer-optional-chain': 'off', - '@typescript-eslint/prefer-promise-reject-errors': 'off', - '@typescript-eslint/prefer-string-starts-ends-with': 'off', - '@typescript-eslint/require-await': 'off', - '@typescript-eslint/restrict-plus-operands': 'off', - '@typescript-eslint/restrict-template-expressions': 'off', - '@typescript-eslint/sort-type-constituents': 'off', - '@typescript-eslint/unbound-method': 'off', - '@typescript-eslint/no-explicit-any': 'off', - - // Used by Biome - '@typescript-eslint/consistent-type-imports': 'off', - // These rules enabled by the preset configs don't work well for us - '@typescript-eslint/await-thenable': 'off', - 'prefer-const': 'off', - - // In some cases, using explicit letter-casing is more performant than the `i` flag - 'regexp/use-ignore-case': 'off', - 'regexp/prefer-regexp-exec': 'warn', - 'regexp/prefer-regexp-test': 'warn', - 'no-control-regex': 'off' - } - } -] \ No newline at end of file diff --git a/packages/core/package.json b/packages/core/package.json index 95d84e92..7386ec30 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -50,17 +50,9 @@ "zod": "^3.24.1" }, "devDependencies": { - "@eslint/js": "^9.18.0", - "@repo/eslint-config": "workspace:*", + "@types/node": "^22.12.0", "@repo/typescript-config": "workspace:*", - "@types/node": "^8.10.66", - "eslint": "^8.57.1", - "eslint-plugin-import": "^2.31.0", - "eslint-plugin-regexp": "^2.7.0", - "globals": "^15.14.0", - "ts-node": "^10.9.1", - "typescript": "^4.9.5", - "typescript-eslint": "^8.20.0" + "typescript": "^5.7.3" }, "scripts": { "test": "tsc && mocha build/test", diff --git a/packages/fs/eslint.config.js b/packages/fs/eslint.config.js deleted file mode 100644 index 542e9d9c..00000000 --- a/packages/fs/eslint.config.js +++ /dev/null @@ -1,138 +0,0 @@ -import path from 'node:path'; -import { fileURLToPath } from 'node:url'; - -import tseslint from 'typescript-eslint'; - -// plugins -import regexpEslint from 'eslint-plugin-regexp'; -const typescriptEslint = tseslint.plugin; - -// parsers -const typescriptParser = tseslint.parser; - -const __filename = fileURLToPath(import.meta.url); -const __dirname = path.dirname(__filename); - -export default [ - // If ignores is used without any other keys in the configuration object, then the patterns act as global ignores. - // ref: https://eslint.org/docs/latest/use/configure/configuration-files#globally-ignoring-files-with-ignores - { - ignores: [ - '**/.*', - '**/*.d.ts', - 'packages/**/*.min.js', - 'packages/**/dist/', - 'packages/**/fixtures/', - 'packages/astro/vendor/vite/', - 'benchmark/**/dist/', - 'examples/', - 'scripts/', - '.github/', - '.changeset/', - ], - }, - - ...tseslint.configs.recommendedTypeChecked, - ...tseslint.configs.stylisticTypeChecked, - regexpEslint.configs['flat/recommended'], - { - languageOptions: { - parser: typescriptParser, - parserOptions: { - project: [ - './packages/*/tsconfig.json', - '../../tsconfig.eslint.json' - ], - tsconfigRootDir: __dirname, - }, - }, - plugins: { - '@typescript-eslint': typescriptEslint, - regexp: regexpEslint, - }, - rules: { - // These off/configured-differently-by-default rules fit well for us - '@typescript-eslint/switch-exhaustiveness-check': 'error', - '@typescript-eslint/no-shadow': 'error', - 'no-console': 'off', - - // Todo: do we want these? - '@typescript-eslint/no-unused-vars': 'off', - '@typescript-eslint/array-type': 'off', - '@typescript-eslint/ban-ts-comment': 'off', - '@typescript-eslint/class-literal-property-style': 'off', - '@typescript-eslint/consistent-indexed-object-style': 'off', - '@typescript-eslint/consistent-type-definitions': 'off', - '@typescript-eslint/dot-notation': 'off', - '@typescript-eslint/no-base-to-string': 'off', - '@typescript-eslint/no-empty-function': 'off', - '@typescript-eslint/no-floating-promises': 'off', - '@typescript-eslint/no-misused-promises': 'off', - '@typescript-eslint/no-redundant-type-constituents': 'off', - '@typescript-eslint/no-this-alias': 'off', - '@typescript-eslint/no-unsafe-argument': 'off', - '@typescript-eslint/no-unsafe-assignment': 'off', - '@typescript-eslint/no-unsafe-call': 'off', - '@typescript-eslint/no-unsafe-member-access': 'off', - '@typescript-eslint/no-unused-expressions': 'off', - '@typescript-eslint/only-throw-error': 'off', - '@typescript-eslint/no-unsafe-return': 'off', - '@typescript-eslint/no-unnecessary-type-assertion': 'off', - '@typescript-eslint/prefer-nullish-coalescing': 'off', - '@typescript-eslint/prefer-optional-chain': 'off', - '@typescript-eslint/prefer-promise-reject-errors': 'off', - '@typescript-eslint/prefer-string-starts-ends-with': 'off', - '@typescript-eslint/require-await': 'off', - '@typescript-eslint/restrict-plus-operands': 'off', - '@typescript-eslint/restrict-template-expressions': 'off', - '@typescript-eslint/sort-type-constituents': 'off', - '@typescript-eslint/unbound-method': 'off', - '@typescript-eslint/no-explicit-any': 'off', - - // Used by Biome - '@typescript-eslint/consistent-type-imports': 'off', - // These rules enabled by the preset configs don't work well for us - '@typescript-eslint/await-thenable': 'off', - 'prefer-const': 'off', - - // In some cases, using explicit letter-casing is more performant than the `i` flag - 'regexp/use-ignore-case': 'off', - 'regexp/prefer-regexp-exec': 'warn', - 'regexp/prefer-regexp-test': 'warn', - }, - }, - { - files: ['packages/astro/src/runtime/client/**/*.ts'], - languageOptions: { - globals: { - browser: true, - }, - }, - }, - { - files: ['packages/astro/src/core/errors/errors-data.ts'], - rules: { - // This file is used for docs generation, as such the code need to be in a certain format, we can somewhat ensure this with these rules - 'object-shorthand': ['error', 'methods', { avoidExplicitReturnArrows: true }], - 'arrow-body-style': ['error', 'never'], - }, - }, - - { - files: ['packages/db/src/runtime/**/*.ts'], - rules: { - 'no-restricted-imports': 'off', - '@typescript-eslint/no-restricted-imports': [ - 'error', - { - patterns: [ - { - group: ['../core/*'], - allowTypeImports: true, - }, - ], - }, - ], - }, - }, -]; diff --git a/packages/fs/package.json b/packages/fs/package.json index d4449fb5..1bb95632 100644 --- a/packages/fs/package.json +++ b/packages/fs/package.json @@ -27,40 +27,25 @@ "dependencies": { "@polymech/core": "link:..\\core", "denodeify": "^1.2.1", - "eslint-plugin-regexp": "^2.7.0", "glob": "^10.4.1", "mime": "^2.0.3", "minimatch": "^10.0.1", "mkdirp": "^3.0.1", - "progress-stream": "^1.2.0", "q": "^1.4.1", "rimraf": "^6.0.1", "write-file-atomic": "^6.0.0", "yargs": "^17.7.2" }, "devDependencies": { - "@eslint/js": "^9.18.0", - "@repo/eslint-config": "workspace:*", "@repo/typescript-config": "workspace:*", "@types/denodeify": "^1.2.31", - "@types/glob": "^8.1.0", "@types/mime": "^2.0.0", "@types/mkdirp": "^0.5.1", "@types/node": "^22.10.2", - "chai": "^3.5.0", - "codecov": "^3.8.3", - "eslint": "^8.57.1", - "eslint-plugin-import": "^2.31.0", "fs-extra": "^4.0.2", "globals": "^15.14.0", - "istanbul": "^0.4.5", - "mocha": "^11.0.1", - "mocha-typescript": "^1.0.12", "ts-node": "^10.9.1", - "tslint": "^5.7.0", - "tslint-presets": "^2.0.0", - "typescript": "^5.7.2", - "typescript-eslint": "^8.20.0" + "typescript": "^5.7.2" }, "scripts": { "test": "tsc; mocha \"spec/**/*.spec.js\"", diff --git a/packages/i18n/dist/_cli.d.ts b/packages/i18n/dist/_cli.d.ts index dac5340f..9a2cd471 100644 --- a/packages/i18n/dist/_cli.d.ts +++ b/packages/i18n/dist/_cli.d.ts @@ -1,3 +1,3 @@ -import { IOptions } from './types.js'; -export declare const defaults: () => void; -export declare const sanitize: (argv: any) => IOptions | boolean; +import { IOptions } from './types.js'; +export declare const defaults: () => void; +export declare const sanitize: (argv: any) => IOptions | boolean; diff --git a/packages/i18n/dist/_cli.js b/packages/i18n/dist/_cli.js index b3dda56f..f3525a94 100644 --- a/packages/i18n/dist/_cli.js +++ b/packages/i18n/dist/_cli.js @@ -1,60 +1,60 @@ -import * as path from 'path'; -import { sync as exists } from '@polymech/fs/exists'; -import { logger } from './index.js'; -export const defaults = () => { - const DefaultCommand = 'info'; - if (process.argv.length === 2) { - process.argv.push(DefaultCommand); - } - process.on('unhandledRejection', (reason) => { - console.error('Unhandled rejection, reason: ', reason); - }); -}; -export const sanitize = (argv) => { - let ret = { - all: argv.all, - src: argv.src, - dst: argv.dst, - dry: argv.dry, - alt: argv.alt, - srcLang: argv.srcLang, - dstLang: argv.dstLang || 'EN', - formality: argv.formality, - debug: argv.debug, - text: argv.text, - query: argv.query, - glossary: argv.glossary, - createGlossary: argv.createGlossary, - cache: argv.cache, - api_key: argv.api_key, - keys: argv.keys, - storeRoot: argv.storeRoot, - store: argv.store, - logLevel: argv.logLevel, - logger: argv.logger - }; - if (!argv.src && !argv.text) { - logger.error("No source path or text specified!"); - return false; - } - if (!argv.dstLang) { - logger.error("No target language specified!"); - return false; - } - if (argv.cwd) { - ret.cwd = path.resolve(argv.cwd); - if (!exists((ret.cwd))) { - ret.debug && logger.error(`Invalid working directory ${argv.cwd}`); - ret.cwd = process.cwd(); - } - } - else { - ret.cwd = process.cwd(); - } - ret = { - ...ret, - ...{ variables: {} } - }; - return ret; -}; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiX2NsaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9fY2xpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFBO0FBQzVCLE9BQU8sRUFBRSxJQUFJLElBQUksTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFFcEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUVuQyxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsR0FBRyxFQUFFO0lBQ3pCLE1BQU0sY0FBYyxHQUFHLE1BQU0sQ0FBQztJQUM5QixJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtRQUMzQixPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztLQUNyQztJQUVELE9BQU8sQ0FBQyxFQUFFLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxNQUFjLEVBQUUsRUFBRTtRQUNoRCxPQUFPLENBQUMsS0FBSyxDQUFDLCtCQUErQixFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzNELENBQUMsQ0FBQyxDQUFBO0FBQ04sQ0FBQyxDQUFBO0FBRUQsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLENBQUMsSUFBUyxFQUFzQixFQUFFO0lBRXRELElBQUksR0FBRyxHQUFRO1FBQ1gsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHO1FBQ2IsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHO1FBQ2IsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHO1FBQ2IsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHO1FBQ2IsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHO1FBQ2IsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO1FBQ3JCLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUk7UUFDN0IsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO1FBQ3pCLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztRQUNqQixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7UUFDZixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7UUFDakIsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO1FBQ3ZCLGNBQWMsRUFBRSxJQUFJLENBQUMsY0FBYztRQUNuQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7UUFDakIsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO1FBQ3JCLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtRQUNmLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUztRQUN6QixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7UUFDakIsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO1FBQ3ZCLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtLQUN0QixDQUFBO0lBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFO1FBQ3pCLE1BQU0sQ0FBQyxLQUFLLENBQUMsbUNBQW1DLENBQUMsQ0FBQTtRQUNqRCxPQUFPLEtBQUssQ0FBQTtLQUNmO0lBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUU7UUFDZixNQUFNLENBQUMsS0FBSyxDQUFDLCtCQUErQixDQUFDLENBQUE7UUFDN0MsT0FBTyxLQUFLLENBQUE7S0FDZjtJQUVELElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRTtRQUNWLEdBQUcsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDaEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO1lBQ3BCLEdBQUcsQ0FBQyxLQUFLLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyw2QkFBNkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUE7WUFDbEUsR0FBRyxDQUFDLEdBQUcsR0FBRyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUE7U0FDMUI7S0FDSjtTQUFNO1FBQ0gsR0FBRyxDQUFDLEdBQUcsR0FBRyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUE7S0FDMUI7SUFFRCxHQUFHLEdBQUc7UUFDRixHQUFHLEdBQUc7UUFDTixHQUFHLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRTtLQUN2QixDQUFBO0lBRUQsT0FBTyxHQUFHLENBQUE7QUFDZCxDQUFDLENBQUEifQ== \ No newline at end of file +import * as path from 'path'; +import { sync as exists } from '@polymech/fs/exists'; +import { logger } from './index.js'; +export const defaults = () => { + const DefaultCommand = 'info'; + if (process.argv.length === 2) { + process.argv.push(DefaultCommand); + } + process.on('unhandledRejection', (reason) => { + console.error('Unhandled rejection, reason: ', reason); + }); +}; +export const sanitize = (argv) => { + let ret = { + all: argv.all, + src: argv.src, + dst: argv.dst, + dry: argv.dry, + alt: argv.alt, + srcLang: argv.srcLang, + dstLang: argv.dstLang || 'EN', + formality: argv.formality, + debug: argv.debug, + text: argv.text, + query: argv.query, + glossary: argv.glossary, + createGlossary: argv.createGlossary, + cache: argv.cache, + api_key: argv.api_key, + keys: argv.keys, + storeRoot: argv.storeRoot, + store: argv.store, + logLevel: argv.logLevel, + logger: argv.logger + }; + if (!argv.src && !argv.text) { + logger.error("No source path or text specified!"); + return false; + } + if (!argv.dstLang) { + logger.error("No target language specified!"); + return false; + } + if (argv.cwd) { + ret.cwd = path.resolve(argv.cwd); + if (!exists((ret.cwd))) { + ret.debug && logger.error(`Invalid working directory ${argv.cwd}`); + ret.cwd = process.cwd(); + } + } + else { + ret.cwd = process.cwd(); + } + ret = { + ...ret, + ...{ variables: {} } + }; + return ret; +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiX2NsaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9fY2xpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFBO0FBQzVCLE9BQU8sRUFBRSxJQUFJLElBQUksTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFFcEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUVuQyxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsR0FBRyxFQUFFO0lBQ3pCLE1BQU0sY0FBYyxHQUFHLE1BQU0sQ0FBQztJQUM5QixJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQzVCLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxPQUFPLENBQUMsRUFBRSxDQUFDLG9CQUFvQixFQUFFLENBQUMsTUFBYyxFQUFFLEVBQUU7UUFDaEQsT0FBTyxDQUFDLEtBQUssQ0FBQywrQkFBK0IsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUMzRCxDQUFDLENBQUMsQ0FBQTtBQUNOLENBQUMsQ0FBQTtBQUVELE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxDQUFDLElBQVMsRUFBc0IsRUFBRTtJQUV0RCxJQUFJLEdBQUcsR0FBUTtRQUNYLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRztRQUNiLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRztRQUNiLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRztRQUNiLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRztRQUNiLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRztRQUNiLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztRQUNyQixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJO1FBQzdCLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUztRQUN6QixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7UUFDakIsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1FBQ2YsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO1FBQ2pCLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtRQUN2QixjQUFjLEVBQUUsSUFBSSxDQUFDLGNBQWM7UUFDbkMsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO1FBQ2pCLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztRQUNyQixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7UUFDZixTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7UUFDekIsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO1FBQ2pCLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtRQUN2QixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07S0FDdEIsQ0FBQTtJQUVELElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzFCLE1BQU0sQ0FBQyxLQUFLLENBQUMsbUNBQW1DLENBQUMsQ0FBQTtRQUNqRCxPQUFPLEtBQUssQ0FBQTtJQUNoQixDQUFDO0lBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNoQixNQUFNLENBQUMsS0FBSyxDQUFDLCtCQUErQixDQUFDLENBQUE7UUFDN0MsT0FBTyxLQUFLLENBQUE7SUFDaEIsQ0FBQztJQUVELElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ1gsR0FBRyxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUNoQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNyQixHQUFHLENBQUMsS0FBSyxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsNkJBQTZCLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFBO1lBQ2xFLEdBQUcsQ0FBQyxHQUFHLEdBQUcsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFBO1FBQzNCLENBQUM7SUFDTCxDQUFDO1NBQU0sQ0FBQztRQUNKLEdBQUcsQ0FBQyxHQUFHLEdBQUcsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFBO0lBQzNCLENBQUM7SUFFRCxHQUFHLEdBQUc7UUFDRixHQUFHLEdBQUc7UUFDTixHQUFHLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRTtLQUN2QixDQUFBO0lBRUQsT0FBTyxHQUFHLENBQUE7QUFDZCxDQUFDLENBQUEifQ== \ No newline at end of file diff --git a/packages/i18n/dist/commands/glossary.d.ts b/packages/i18n/dist/commands/glossary.d.ts index e4aa7e05..ca73784e 100644 --- a/packages/i18n/dist/commands/glossary.d.ts +++ b/packages/i18n/dist/commands/glossary.d.ts @@ -1 +1,2 @@ -export declare const register: (cli: CLI.Argv) => any; +import * as CLI from 'yargs'; +export declare const register: (cli: CLI.Argv) => any; diff --git a/packages/i18n/dist/commands/glossary.js b/packages/i18n/dist/commands/glossary.js index f04e5699..f36d05f2 100644 --- a/packages/i18n/dist/commands/glossary.js +++ b/packages/i18n/dist/commands/glossary.js @@ -1,92 +1,92 @@ -import * as path from 'path'; -import { pairs } from '../lib/glossary.js'; -import { defaults } from '../_cli.js'; -import { CONFIG_DEFAULT } from '@polymech/commons'; -import { resolve } from "@polymech/commons/variables"; -const defaultOptions = (yargs) => { - return yargs.option('debug', { - default: false, - describe: 'debug messages', - type: 'boolean' - }).option('env_key', { - default: 'OSR-CONFIG', - describe: 'Environment key to the config path.' - }).option('src', { - describe: 'Path to the input file(s). Glob patters are supported', - }).option('dst', { - describe: 'Target file', - }).option('dst', { - describe: 'Path to the output file(s). Glob patters are supported', - default: '${SRC_DIR}/${DST_LANG}/${SRC_NAME}${SRC_EXT}' - }).option('srcLang', { - describe: 'Source language. Please run `osr-i18n info to see all supported languages`', - default: '' - }).option('cache', { - describe: 'Cache directory', - default: '${ROOT}/.osr/cache/i18n' - }).option('dstLang', { - describe: 'Target Language. Please run `osr-i18n info to see all supported languages`', - default: 'DE' - }).option('name', { - describe: 'Name of the glossary', - default: 'osr-i18n-store' - }).option('alt', { - default: false, - describe: 'Use alternate tokenizer, & instead of $', - type: 'boolean' - }); -}; -let options = (yargs) => defaultOptions(yargs); -export const register = (cli) => { - return cli.command('glossary ', 'Manages glossaries on DeepL', options, async (argv) => { - defaults(); - if (argv.help) { - return; - } - const args = argv; - const config = CONFIG_DEFAULT(args.env_key); - const verb = argv.verb; - if (verb === 'create') { - /* - let options = sanitize(argv as any) as IOptions - if (!options) { - logger.error(`Invalid options, abort`); - return - } - - let opts = parse(options, args) - opts.config = config - if (!opts.srcInfo) { - logger.error(`Invalid source : ${argv.src}`, opts) - return - } - - if (opts.srcInfo.IS_GLOB) { - const glob_base = globBase(opts.src) - opts.pathVariables.ROOT = path.resolve(glob_base.base) - } else { - options.pathVariables.ROOT = path.resolve(opts.cwd) - } - - opts.pathVariables['DST_LANG'] = opts.dstLang.toLocaleLowerCase() - opts.pathVariables['SRC_LANG'] = opts.srcLang.toLocaleLowerCase() - opts.pathVariables['CWD'] = path.resolve(opts.cwd) - if (!opts.srcInfo || (opts.srcInfo && !opts.srcInfo.FILES)) { - logger.error(`Have no source files for ${opts.src}`) - return - } - if (opts.srcInfo && opts.srcInfo.FILES) { - await pMap(opts.srcInfo.FILES, async (files) => { - await pMap(files, (source: string) => { - //return create(options.srcLang, options.dstLang, options, source) - }, { concurrency: 1 }) - }) - } - */ - } - if (verb === 'pairs' && argv.dst) { - await pairs(config.deepl, path.resolve(resolve(argv.dst))); - } - }); -}; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xvc3NhcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvZ2xvc3NhcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUE7QUFFNUIsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBQzFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDckMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQ2xELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQTtBQUVyRCxNQUFNLGNBQWMsR0FBRyxDQUFDLEtBQWUsRUFBRSxFQUFFO0lBQ3ZDLE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUU7UUFDekIsT0FBTyxFQUFFLEtBQUs7UUFDZCxRQUFRLEVBQUUsZ0JBQWdCO1FBQzFCLElBQUksRUFBRSxTQUFTO0tBQ2xCLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFO1FBQ2pCLE9BQU8sRUFBRSxZQUFZO1FBQ3JCLFFBQVEsRUFBRSxxQ0FBcUM7S0FDbEQsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUU7UUFDYixRQUFRLEVBQUUsdURBQXVEO0tBQ3BFLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFO1FBQ2IsUUFBUSxFQUFFLGFBQWE7S0FDMUIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUU7UUFDYixRQUFRLEVBQUUsd0RBQXdEO1FBQ2xFLE9BQU8sRUFBRSw4Q0FBOEM7S0FDMUQsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUU7UUFDakIsUUFBUSxFQUFFLDRFQUE0RTtRQUN0RixPQUFPLEVBQUUsRUFBRTtLQUNkLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFO1FBQ2YsUUFBUSxFQUFFLGlCQUFpQjtRQUMzQixPQUFPLEVBQUUseUJBQXlCO0tBQ3JDLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFO1FBQ2pCLFFBQVEsRUFBRSw0RUFBNEU7UUFDdEYsT0FBTyxFQUFFLElBQUk7S0FDaEIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUU7UUFDZCxRQUFRLEVBQUUsc0JBQXNCO1FBQ2hDLE9BQU8sRUFBRSxnQkFBZ0I7S0FDNUIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUU7UUFDYixPQUFPLEVBQUUsS0FBSztRQUNkLFFBQVEsRUFBRSx5Q0FBeUM7UUFDbkQsSUFBSSxFQUFFLFNBQVM7S0FDbEIsQ0FBQyxDQUFBO0FBQ04sQ0FBQyxDQUFBO0FBRUQsSUFBSSxPQUFPLEdBQUcsQ0FBQyxLQUFlLEVBQUUsRUFBRSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQTtBQUd4RCxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsQ0FBQyxHQUFhLEVBQUUsRUFBRTtJQUN0QyxPQUFPLEdBQUcsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLEVBQUUsNkJBQTZCLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFtQixFQUFHLEVBQUU7UUFDekcsUUFBUSxFQUFFLENBQUE7UUFFVixJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFBRSxPQUFNO1NBQUU7UUFDekIsTUFBTSxJQUFJLEdBQVEsSUFBSSxDQUFBO1FBQ3RCLE1BQU0sTUFBTSxHQUFRLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDaEQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQTtRQUN0QixJQUFJLElBQUksS0FBSyxRQUFRLEVBQUU7WUFDbkI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2NBbUNFO1NBQ0w7UUFDRCxJQUFJLElBQUksS0FBSyxPQUFPLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUM5QixNQUFNLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFhLENBQUMsQ0FBQyxDQUFDLENBQUE7U0FDdkU7SUFDTCxDQUFDLENBQUMsQ0FBQTtBQUNOLENBQUMsQ0FBQSJ9 \ No newline at end of file +import * as path from 'path'; +import { pairs } from '../lib/glossary.js'; +import { defaults } from '../_cli.js'; +import { CONFIG_DEFAULT } from '@polymech/commons'; +import { resolve } from "@polymech/commons/variables"; +const defaultOptions = (yargs) => { + return yargs.option('debug', { + default: false, + describe: 'debug messages', + type: 'boolean' + }).option('env_key', { + default: 'OSR-CONFIG', + describe: 'Environment key to the config path.' + }).option('src', { + describe: 'Path to the input file(s). Glob patters are supported', + }).option('dst', { + describe: 'Target file', + }).option('dst', { + describe: 'Path to the output file(s). Glob patters are supported', + default: '${SRC_DIR}/${DST_LANG}/${SRC_NAME}${SRC_EXT}' + }).option('srcLang', { + describe: 'Source language. Please run `osr-i18n info to see all supported languages`', + default: '' + }).option('cache', { + describe: 'Cache directory', + default: '${ROOT}/.osr/cache/i18n' + }).option('dstLang', { + describe: 'Target Language. Please run `osr-i18n info to see all supported languages`', + default: 'DE' + }).option('name', { + describe: 'Name of the glossary', + default: 'osr-i18n-store' + }).option('alt', { + default: false, + describe: 'Use alternate tokenizer, & instead of $', + type: 'boolean' + }); +}; +let options = (yargs) => defaultOptions(yargs); +export const register = (cli) => { + return cli.command('glossary ', 'Manages glossaries on DeepL', options, async (argv) => { + defaults(); + if (argv.help) { + return; + } + const args = argv; + const config = CONFIG_DEFAULT(args.env_key); + const verb = argv.verb; + if (verb === 'create') { + /* + let options = sanitize(argv as any) as IOptions + if (!options) { + logger.error(`Invalid options, abort`); + return + } + + let opts = parse(options, args) + opts.config = config + if (!opts.srcInfo) { + logger.error(`Invalid source : ${argv.src}`, opts) + return + } + + if (opts.srcInfo.IS_GLOB) { + const glob_base = globBase(opts.src) + opts.pathVariables.ROOT = path.resolve(glob_base.base) + } else { + options.pathVariables.ROOT = path.resolve(opts.cwd) + } + + opts.pathVariables['DST_LANG'] = opts.dstLang.toLocaleLowerCase() + opts.pathVariables['SRC_LANG'] = opts.srcLang.toLocaleLowerCase() + opts.pathVariables['CWD'] = path.resolve(opts.cwd) + if (!opts.srcInfo || (opts.srcInfo && !opts.srcInfo.FILES)) { + logger.error(`Have no source files for ${opts.src}`) + return + } + if (opts.srcInfo && opts.srcInfo.FILES) { + await pMap(opts.srcInfo.FILES, async (files) => { + await pMap(files, (source: string) => { + //return create(options.srcLang, options.dstLang, options, source) + }, { concurrency: 1 }) + }) + } + */ + } + if (verb === 'pairs' && argv.dst) { + await pairs(config.deepl, path.resolve(resolve(argv.dst))); + } + }); +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xvc3NhcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvZ2xvc3NhcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUE7QUFFNUIsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBQzFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDckMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQ2xELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQTtBQUVyRCxNQUFNLGNBQWMsR0FBRyxDQUFDLEtBQWUsRUFBRSxFQUFFO0lBQ3ZDLE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUU7UUFDekIsT0FBTyxFQUFFLEtBQUs7UUFDZCxRQUFRLEVBQUUsZ0JBQWdCO1FBQzFCLElBQUksRUFBRSxTQUFTO0tBQ2xCLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFO1FBQ2pCLE9BQU8sRUFBRSxZQUFZO1FBQ3JCLFFBQVEsRUFBRSxxQ0FBcUM7S0FDbEQsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUU7UUFDYixRQUFRLEVBQUUsdURBQXVEO0tBQ3BFLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFO1FBQ2IsUUFBUSxFQUFFLGFBQWE7S0FDMUIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUU7UUFDYixRQUFRLEVBQUUsd0RBQXdEO1FBQ2xFLE9BQU8sRUFBRSw4Q0FBOEM7S0FDMUQsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUU7UUFDakIsUUFBUSxFQUFFLDRFQUE0RTtRQUN0RixPQUFPLEVBQUUsRUFBRTtLQUNkLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFO1FBQ2YsUUFBUSxFQUFFLGlCQUFpQjtRQUMzQixPQUFPLEVBQUUseUJBQXlCO0tBQ3JDLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFO1FBQ2pCLFFBQVEsRUFBRSw0RUFBNEU7UUFDdEYsT0FBTyxFQUFFLElBQUk7S0FDaEIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUU7UUFDZCxRQUFRLEVBQUUsc0JBQXNCO1FBQ2hDLE9BQU8sRUFBRSxnQkFBZ0I7S0FDNUIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUU7UUFDYixPQUFPLEVBQUUsS0FBSztRQUNkLFFBQVEsRUFBRSx5Q0FBeUM7UUFDbkQsSUFBSSxFQUFFLFNBQVM7S0FDbEIsQ0FBQyxDQUFBO0FBQ04sQ0FBQyxDQUFBO0FBRUQsSUFBSSxPQUFPLEdBQUcsQ0FBQyxLQUFlLEVBQUUsRUFBRSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQTtBQUd4RCxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsQ0FBQyxHQUFhLEVBQUUsRUFBRTtJQUN0QyxPQUFPLEdBQUcsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLEVBQUUsNkJBQTZCLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFtQixFQUFHLEVBQUU7UUFDekcsUUFBUSxFQUFFLENBQUE7UUFFVixJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUFDLE9BQU07UUFBQyxDQUFDO1FBQ3pCLE1BQU0sSUFBSSxHQUFRLElBQUksQ0FBQTtRQUN0QixNQUFNLE1BQU0sR0FBUSxjQUFjLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBQ2hELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUE7UUFDdEIsSUFBSSxJQUFJLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDcEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2NBbUNFO1FBQ04sQ0FBQztRQUNELElBQUksSUFBSSxLQUFLLE9BQU8sSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDL0IsTUFBTSxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBYSxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQ3hFLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQTtBQUNOLENBQUMsQ0FBQSJ9 \ No newline at end of file diff --git a/packages/i18n/dist/commands/info.d.ts b/packages/i18n/dist/commands/info.d.ts index e4aa7e05..ca73784e 100644 --- a/packages/i18n/dist/commands/info.d.ts +++ b/packages/i18n/dist/commands/info.d.ts @@ -1 +1,2 @@ -export declare const register: (cli: CLI.Argv) => any; +import * as CLI from 'yargs'; +export declare const register: (cli: CLI.Argv) => any; diff --git a/packages/i18n/dist/commands/info.js b/packages/i18n/dist/commands/info.js index 4957caad..14bd7350 100644 --- a/packages/i18n/dist/commands/info.js +++ b/packages/i18n/dist/commands/info.js @@ -1,23 +1,23 @@ -import { CONFIG_DEFAULT } from '@polymech/commons'; -import { logger } from '../index.js'; -const defaultOptions = (yargs) => { - return yargs.option('debug', { - default: 'false', - describe: 'debug messages' - }).option('env_key', { - default: 'OSR-CONFIG', - describe: 'Environment key to the config path' - }); -}; -let options = (yargs) => defaultOptions(yargs); -export const register = (cli) => { - return cli.command('info', 'info', options, async (argv) => { - if (argv.help) { - return; - } - const args = argv; - const src = CONFIG_DEFAULT(args.env_key); - logger.debug(`Reading OSR Config with key "${argv.env_key}"`, src.deepl); +import { CONFIG_DEFAULT } from '@polymech/commons'; +import { logger } from '../index.js'; +const defaultOptions = (yargs) => { + return yargs.option('debug', { + default: 'false', + describe: 'debug messages' + }).option('env_key', { + default: 'OSR-CONFIG', + describe: 'Environment key to the config path' + }); +}; +let options = (yargs) => defaultOptions(yargs); +export const register = (cli) => { + return cli.command('info', 'info', options, async (argv) => { + if (argv.help) { + return; + } + const args = argv; + const src = CONFIG_DEFAULT(args.env_key); + logger.debug(`Reading OSR Config with key "${argv.env_key}"`, src.deepl); logger.info(`Supported languages \n | 'BG' | 'CS' @@ -47,7 +47,7 @@ export const register = (cli) => { | 'SL' | 'SV' | 'ZH' - `); - }); -}; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5mby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21tYW5kcy9pbmZvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUNsRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBRXBDLE1BQU0sY0FBYyxHQUFHLENBQUMsS0FBZSxFQUFFLEVBQUU7SUFDdkMsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRTtRQUN6QixPQUFPLEVBQUUsT0FBTztRQUNoQixRQUFRLEVBQUUsZ0JBQWdCO0tBQzdCLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFO1FBQ2pCLE9BQU8sRUFBQyxZQUFZO1FBQ3BCLFFBQVEsRUFBQyxvQ0FBb0M7S0FDaEQsQ0FBQyxDQUFBO0FBQ04sQ0FBQyxDQUFBO0FBRUQsSUFBSSxPQUFPLEdBQUcsQ0FBQyxLQUFlLEVBQUUsRUFBRSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQTtBQUV4RCxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsQ0FBQyxHQUFhLEVBQUUsRUFBRTtJQUN0QyxPQUFPLEdBQUcsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQW1CLEVBQUUsRUFBRTtRQUN0RSxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFBRSxPQUFNO1NBQUU7UUFDekIsTUFBTSxJQUFJLEdBQU8sSUFBSSxDQUFBO1FBQ3JCLE1BQU0sR0FBRyxHQUFPLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDNUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxnQ0FBZ0MsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUN4RSxNQUFNLENBQUMsSUFBSSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTQTZCWCxDQUFDLENBQUE7SUFDTixDQUFDLENBQUMsQ0FBQTtBQUNOLENBQUMsQ0FBQSJ9 \ No newline at end of file + `); + }); +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5mby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21tYW5kcy9pbmZvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUNsRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBRXBDLE1BQU0sY0FBYyxHQUFHLENBQUMsS0FBZSxFQUFFLEVBQUU7SUFDdkMsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRTtRQUN6QixPQUFPLEVBQUUsT0FBTztRQUNoQixRQUFRLEVBQUUsZ0JBQWdCO0tBQzdCLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFO1FBQ2pCLE9BQU8sRUFBQyxZQUFZO1FBQ3BCLFFBQVEsRUFBQyxvQ0FBb0M7S0FDaEQsQ0FBQyxDQUFBO0FBQ04sQ0FBQyxDQUFBO0FBRUQsSUFBSSxPQUFPLEdBQUcsQ0FBQyxLQUFlLEVBQUUsRUFBRSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQTtBQUV4RCxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsQ0FBQyxHQUFhLEVBQUUsRUFBRTtJQUN0QyxPQUFPLEdBQUcsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQW1CLEVBQUUsRUFBRTtRQUN0RSxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUFDLE9BQU07UUFBQyxDQUFDO1FBQ3pCLE1BQU0sSUFBSSxHQUFPLElBQUksQ0FBQTtRQUNyQixNQUFNLEdBQUcsR0FBTyxjQUFjLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBQzVDLE1BQU0sQ0FBQyxLQUFLLENBQUMsZ0NBQWdDLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDeEUsTUFBTSxDQUFDLElBQUksQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7U0E2QlgsQ0FBQyxDQUFBO0lBQ04sQ0FBQyxDQUFDLENBQUE7QUFDTixDQUFDLENBQUEifQ== \ No newline at end of file diff --git a/packages/i18n/dist/commands/translate.d.ts b/packages/i18n/dist/commands/translate.d.ts index e4aa7e05..ca73784e 100644 --- a/packages/i18n/dist/commands/translate.d.ts +++ b/packages/i18n/dist/commands/translate.d.ts @@ -1 +1,2 @@ -export declare const register: (cli: CLI.Argv) => any; +import * as CLI from 'yargs'; +export declare const register: (cli: CLI.Argv) => any; diff --git a/packages/i18n/dist/commands/translate.js b/packages/i18n/dist/commands/translate.js index e6e294b6..339708c8 100644 --- a/packages/i18n/dist/commands/translate.js +++ b/packages/i18n/dist/commands/translate.js @@ -1,109 +1,109 @@ -import { CONFIG_DEFAULT } from '@polymech/commons'; -import { translate } from '../lib/translate.js'; -import { defaults, sanitize } from '../_cli.js'; -import { logger } from '../index.js'; -const defaultOptions = (yargs) => { - return yargs.option('debug', { - default: false, - describe: 'debug messages', - type: 'boolean' - }).option('dry', { - default: false, - describe: 'Process files for debug purposes only.', - type: 'boolean' - }).option('env_key', { - default: 'OSR-CONFIG', - describe: 'Environment key to the config path.' - }).option('src', { - describe: 'Path to the input file(s). Glob patters are supported', - }).option('dst', { - describe: 'Path to the output file(s). Glob patters are supported', - default: '${SRC_DIR}/${DST_LANG}/${SRC_NAME}${SRC_EXT}' - }).option('formality', { - describe: 'Formality: default|more|less', - default: 'default' - }).option('srcLang', { - describe: 'Source language. Please run `osr-i18n info to see all supported languages`', - default: '' - }).option('cache', { - describe: 'Cache directory', - default: '${ROOT}/.osr/cache/i18n' - }).option('dstLang', { - describe: 'Target Language. Please run `osr-i18n info to see all supported languages`', - default: 'DE' - }).option('text', { - describe: 'Translate a given text only.' - }).option('all', { - describe: 'Return all translations, only supported for --text', - default: false, - type: 'boolean' - }).option('alt', { - default: false, - describe: 'Use alternate tokenizer, & instead of $', - type: 'boolean' - }).option('cache', { - default: false, - describe: 'Enable cache', - type: 'boolean' - }).option('glossary', { - default: false, - describe: 'Enable glossary files (see osr-i18n-store/glossary)', - type: 'boolean' - }).option('createGlossary', { - default: true, - describe: 'Automatically create glossary files (see osr-i18n-store/glossary)', - type: 'boolean' - }).option('filters', { - default: false, - describe: 'Comma separated list of filters. Currently implemented : `Hugo`', - type: 'string' - }).option('keys', { - describe: 'Comma separated list of keys to be translated for key/value files.', - type: 'string' - }).option('query', { - describe: 'JSONPath query for JSON and XLSX files. See https://jsonpath-plus.github.io/JSONPath/demo/, eg: $[*][0,4] to select the first and fifth column of each xlsx file', - type: 'string' - }).option('dumpJSON', { - describe: 'In case of XLSX files, dump the JSON raw data', - type: 'boolean', - default: false - }).option('storeRoot', { - describe: 'i18n store root for glossaries', - type: 'string', - default: '${OSR_ROOT}/i18n-store/' - }).option('store', { - describe: 'Language store cache file', - type: 'string', - default: '${OSR_ROOT}/i18n-store/store-${DST_LANG}.json' - }).option('csv-store', { - default: false, - describe: 'Generate CSV files for the store (manual editing)', - type: 'boolean' - }).option('stdout', { - default: true, - describe: 'Output to stdout', - type: 'boolean' - }).option('logLevel', { - default: 'warn', - describe: 'Log level: silly|debug|trace|info|warn|error|fatal', - type: 'string' - }); -}; -let options = (yargs) => defaultOptions(yargs); -export const register = (cli) => { - return cli.command('translate', 'Translates text via DeepL', options, async (argv) => { - defaults(); - if (argv.help) { - return; - } - const args = argv; - const config = CONFIG_DEFAULT(args.env_key); - let options = sanitize(argv); - if (!options) { - logger.error(`Invalid options, abort`); - return; - } - await translate({ ...options, api_key: config.deepl.auth_key }); - }); -}; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL3RyYW5zbGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFFbEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBRS9DLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFFcEMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxLQUFlLEVBQUUsRUFBRTtJQUN2QyxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFO1FBQ3pCLE9BQU8sRUFBRSxLQUFLO1FBQ2QsUUFBUSxFQUFFLGdCQUFnQjtRQUMxQixJQUFJLEVBQUUsU0FBUztLQUNsQixDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRTtRQUNiLE9BQU8sRUFBRSxLQUFLO1FBQ2QsUUFBUSxFQUFFLHdDQUF3QztRQUNsRCxJQUFJLEVBQUUsU0FBUztLQUNsQixDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRTtRQUNqQixPQUFPLEVBQUUsWUFBWTtRQUNyQixRQUFRLEVBQUUscUNBQXFDO0tBQ2xELENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFO1FBQ2IsUUFBUSxFQUFFLHVEQUF1RDtLQUNwRSxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRTtRQUNiLFFBQVEsRUFBRSx3REFBd0Q7UUFDbEUsT0FBTyxFQUFFLDhDQUE4QztLQUMxRCxDQUFDLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRTtRQUNuQixRQUFRLEVBQUUsOEJBQThCO1FBQ3hDLE9BQU8sRUFBRSxTQUFTO0tBQ3JCLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFO1FBQ2pCLFFBQVEsRUFBRSw0RUFBNEU7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 \ No newline at end of file +import { CONFIG_DEFAULT } from '@polymech/commons'; +import { translate } from '../lib/translate.js'; +import { defaults, sanitize } from '../_cli.js'; +import { logger } from '../index.js'; +const defaultOptions = (yargs) => { + return yargs.option('debug', { + default: false, + describe: 'debug messages', + type: 'boolean' + }).option('dry', { + default: false, + describe: 'Process files for debug purposes only.', + type: 'boolean' + }).option('env_key', { + default: 'OSR-CONFIG', + describe: 'Environment key to the config path.' + }).option('src', { + describe: 'Path to the input file(s). Glob patters are supported', + }).option('dst', { + describe: 'Path to the output file(s). Glob patters are supported', + default: '${SRC_DIR}/${DST_LANG}/${SRC_NAME}${SRC_EXT}' + }).option('formality', { + describe: 'Formality: default|more|less', + default: 'default' + }).option('srcLang', { + describe: 'Source language. Please run `osr-i18n info to see all supported languages`', + default: '' + }).option('cache', { + describe: 'Cache directory', + default: '${ROOT}/.osr/cache/i18n' + }).option('dstLang', { + describe: 'Target Language. Please run `osr-i18n info to see all supported languages`', + default: 'DE' + }).option('text', { + describe: 'Translate a given text only.' + }).option('all', { + describe: 'Return all translations, only supported for --text', + default: false, + type: 'boolean' + }).option('alt', { + default: false, + describe: 'Use alternate tokenizer, & instead of $', + type: 'boolean' + }).option('cache', { + default: false, + describe: 'Enable cache', + type: 'boolean' + }).option('glossary', { + default: false, + describe: 'Enable glossary files (see osr-i18n-store/glossary)', + type: 'boolean' + }).option('createGlossary', { + default: true, + describe: 'Automatically create glossary files (see osr-i18n-store/glossary)', + type: 'boolean' + }).option('filters', { + default: false, + describe: 'Comma separated list of filters. Currently implemented : `Hugo`', + type: 'string' + }).option('keys', { + describe: 'Comma separated list of keys to be translated for key/value files.', + type: 'string' + }).option('query', { + describe: 'JSONPath query for JSON and XLSX files. See https://jsonpath-plus.github.io/JSONPath/demo/, eg: $[*][0,4] to select the first and fifth column of each xlsx file', + type: 'string' + }).option('dumpJSON', { + describe: 'In case of XLSX files, dump the JSON raw data', + type: 'boolean', + default: false + }).option('storeRoot', { + describe: 'i18n store root for glossaries', + type: 'string', + default: '${OSR_ROOT}/i18n-store/' + }).option('store', { + describe: 'Language store cache file', + type: 'string', + default: '${OSR_ROOT}/i18n-store/store-${DST_LANG}.json' + }).option('csv-store', { + default: false, + describe: 'Generate CSV files for the store (manual editing)', + type: 'boolean' + }).option('stdout', { + default: true, + describe: 'Output to stdout', + type: 'boolean' + }).option('logLevel', { + default: 'warn', + describe: 'Log level: silly|debug|trace|info|warn|error|fatal', + type: 'string' + }); +}; +let options = (yargs) => defaultOptions(yargs); +export const register = (cli) => { + return cli.command('translate', 'Translates text via DeepL', options, async (argv) => { + defaults(); + if (argv.help) { + return; + } + const args = argv; + const config = CONFIG_DEFAULT(args.env_key); + let options = sanitize(argv); + if (!options) { + logger.error(`Invalid options, abort`); + return; + } + await translate({ ...options, api_key: config.deepl.auth_key }); + }); +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL3RyYW5zbGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFFbEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBRS9DLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFFcEMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxLQUFlLEVBQUUsRUFBRTtJQUN2QyxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFO1FBQ3pCLE9BQU8sRUFBRSxLQUFLO1FBQ2QsUUFBUSxFQUFFLGdCQUFnQjtRQUMxQixJQUFJLEVBQUUsU0FBUztLQUNsQixDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRTtRQUNiLE9BQU8sRUFBRSxLQUFLO1FBQ2QsUUFBUSxFQUFFLHdDQUF3QztRQUNsRCxJQUFJLEVBQUUsU0FBUztLQUNsQixDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRTtRQUNqQixPQUFPLEVBQUUsWUFBWTtRQUNyQixRQUFRLEVBQUUscUNBQXFDO0tBQ2xELENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFO1FBQ2IsUUFBUSxFQUFFLHVEQUF1RDtLQUNwRSxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRTtRQUNiLFFBQVEsRUFBRSx3REFBd0Q7UUFDbEUsT0FBTyxFQUFFLDhDQUE4QztLQUMxRCxDQUFDLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRTtRQUNuQixRQUFRLEVBQUUsOEJBQThCO1FBQ3hDLE9BQU8sRUFBRSxTQUFTO0tBQ3JCLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFO1FBQ2pCLFFBQVEsRUFBRSw0RUFBNEU7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 \ No newline at end of file diff --git a/packages/i18n/dist/constants.d.ts b/packages/i18n/dist/constants.d.ts index 1a585e7e..2dd975f8 100644 --- a/packages/i18n/dist/constants.d.ts +++ b/packages/i18n/dist/constants.d.ts @@ -1,6 +1,6 @@ -export declare const MODULE_NAME = "OSR-i18n"; -export declare const GLOSSARY_FILE_EXT = ".csv"; -export declare const GLOSSARY_FILES = "${OSR_ROOT}/i18n-store/glossary"; -export declare const GLOSSARY_FILE_NAME = "index.csv"; -export declare const GLOSSARY_INFO_FILE = "index_glossary.json"; -export declare const GLOSSARY_INFO_FILE_SUFFIX = "_glossary.json"; +export declare const MODULE_NAME = "OSR-i18n"; +export declare const GLOSSARY_FILE_EXT = ".csv"; +export declare const GLOSSARY_FILES = "${OSR_ROOT}/i18n-store/glossary"; +export declare const GLOSSARY_FILE_NAME = "index.csv"; +export declare const GLOSSARY_INFO_FILE = "index_glossary.json"; +export declare const GLOSSARY_INFO_FILE_SUFFIX = "_glossary.json"; diff --git a/packages/i18n/dist/constants.js b/packages/i18n/dist/constants.js index e7c68262..33672963 100644 --- a/packages/i18n/dist/constants.js +++ b/packages/i18n/dist/constants.js @@ -1,7 +1,7 @@ -export const MODULE_NAME = `OSR-i18n`; -export const GLOSSARY_FILE_EXT = '.csv'; -export const GLOSSARY_FILES = '${OSR_ROOT}/i18n-store/glossary'; -export const GLOSSARY_FILE_NAME = 'index.csv'; -export const GLOSSARY_INFO_FILE = 'index_glossary.json'; -export const GLOSSARY_INFO_FILE_SUFFIX = '_glossary.json'; +export const MODULE_NAME = `OSR-i18n`; +export const GLOSSARY_FILE_EXT = '.csv'; +export const GLOSSARY_FILES = '${OSR_ROOT}/i18n-store/glossary'; +export const GLOSSARY_FILE_NAME = 'index.csv'; +export const GLOSSARY_INFO_FILE = 'index_glossary.json'; +export const GLOSSARY_INFO_FILE_SUFFIX = '_glossary.json'; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsVUFBVSxDQUFBO0FBRXJDLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLE1BQU0sQ0FBQTtBQUN2QyxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsaUNBQWlDLENBQUE7QUFDL0QsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsV0FBVyxDQUFBO0FBQzdDLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLHFCQUFxQixDQUFBO0FBQ3ZELE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFHLGdCQUFnQixDQUFBIn0= \ No newline at end of file diff --git a/packages/i18n/dist/index.d.ts b/packages/i18n/dist/index.d.ts index 2b7cce53..d9247846 100644 --- a/packages/i18n/dist/index.d.ts +++ b/packages/i18n/dist/index.d.ts @@ -1,9 +1,9 @@ -export { Logger } from 'tslog'; -export { MODULE_NAME } from './constants.js'; -export { sanitize } from './_cli.js'; -export * from './lib/index.js'; -export * from './options.js'; -export * from './types.js'; -export * from './zod_schema.js'; -export * from './zod_types.js'; -export declare const logger: any; +export { Logger } from 'tslog'; +export { MODULE_NAME } from './constants.js'; +export { sanitize } from './_cli.js'; +export * from './lib/index.js'; +export * from './options.js'; +export * from './types.js'; +export * from './zod_schema.js'; +export * from './zod_types.js'; +export declare const logger: any; diff --git a/packages/i18n/dist/index.js b/packages/i18n/dist/index.js index aabddd41..44476404 100644 --- a/packages/i18n/dist/index.js +++ b/packages/i18n/dist/index.js @@ -1,11 +1,11 @@ -export { Logger } from 'tslog'; -import { createLogger } from '@polymech/log'; -export { MODULE_NAME } from './constants.js'; -export { sanitize } from './_cli.js'; -export * from './lib/index.js'; -export * from './options.js'; -export * from './types.js'; -export * from './zod_schema.js'; -export * from './zod_types.js'; -export const logger = createLogger('commons'); +export { Logger } from 'tslog'; +import { createLogger } from '@polymech/log'; +export { MODULE_NAME } from './constants.js'; +export { sanitize } from './_cli.js'; +export * from './lib/index.js'; +export * from './options.js'; +export * from './types.js'; +export * from './zod_schema.js'; +export * from './zod_types.js'; +export const logger = createLogger('commons'); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLE9BQU8sQ0FBQTtBQUM5QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBRTVDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUM1QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBQ3BDLGNBQWMsZ0JBQWdCLENBQUE7QUFDOUIsY0FBYyxjQUFjLENBQUE7QUFDNUIsY0FBYyxZQUFZLENBQUE7QUFDMUIsY0FBYyxpQkFBaUIsQ0FBQTtBQUMvQixjQUFjLGdCQUFnQixDQUFBO0FBRTlCLE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBTyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUEifQ== \ No newline at end of file diff --git a/packages/i18n/dist/lib/async-iterator.d.ts b/packages/i18n/dist/lib/async-iterator.d.ts index 2aecc850..6ec8a6f6 100644 --- a/packages/i18n/dist/lib/async-iterator.d.ts +++ b/packages/i18n/dist/lib/async-iterator.d.ts @@ -1,21 +1,21 @@ -export type AsyncTransformer = (input: string, path: string) => Promise; -export type ErrorCallback = (path: string, value: string, error: any) => void; -export type FilterCallback = (input: string, path: string) => Promise; -export type Filter = (input: string) => Promise; -export interface TransformOptions { - transform: AsyncTransformer; - path: string; - throttleDelay: number; - concurrentTasks: number; - errorCallback: ErrorCallback; - filterCallback: FilterCallback; -} -export declare const isNumber: Filter; -export declare const isBoolean: Filter; -export declare const isValidString: Filter; -export declare const testFilters: (filters: Filter[]) => FilterCallback; -export declare const defaultFilters: (filters?: Filter[]) => Filter[]; -export declare function transformObject(obj: any, transform: AsyncTransformer, path: string, throttleDelay: number, concurrentTasks: number, errorCallback: ErrorCallback, testCallback: FilterCallback): Promise; -export declare function transformPath(obj: any, keys: string[], transform: AsyncTransformer, throttleDelay: number, concurrentTasks: number, currentPath: string, errorCallback: ErrorCallback, testCallback: FilterCallback): Promise; -export declare const defaultError: ErrorCallback; -export declare const defaultOptions: (options?: TransformOptions) => TransformOptions; +export type AsyncTransformer = (input: string, path: string) => Promise; +export type ErrorCallback = (path: string, value: string, error: any) => void; +export type FilterCallback = (input: string, path: string) => Promise; +export type Filter = (input: string) => Promise; +export interface TransformOptions { + transform: AsyncTransformer; + path: string; + throttleDelay: number; + concurrentTasks: number; + errorCallback: ErrorCallback; + filterCallback: FilterCallback; +} +export declare const isNumber: Filter; +export declare const isBoolean: Filter; +export declare const isValidString: Filter; +export declare const testFilters: (filters: Filter[]) => FilterCallback; +export declare const defaultFilters: (filters?: Filter[]) => Filter[]; +export declare function transformObject(obj: any, transform: AsyncTransformer, path: string, throttleDelay: number, concurrentTasks: number, errorCallback: ErrorCallback, testCallback: FilterCallback): Promise; +export declare function transformPath(obj: any, keys: string[], transform: AsyncTransformer, throttleDelay: number, concurrentTasks: number, currentPath: string, errorCallback: ErrorCallback, testCallback: FilterCallback): Promise; +export declare const defaultError: ErrorCallback; +export declare const defaultOptions: (options?: TransformOptions) => TransformOptions; diff --git a/packages/i18n/dist/lib/async-iterator.js b/packages/i18n/dist/lib/async-iterator.js index 3f2dbc72..1c39925b 100644 --- a/packages/i18n/dist/lib/async-iterator.js +++ b/packages/i18n/dist/lib/async-iterator.js @@ -1,91 +1,91 @@ -import { JSONPath } from 'jsonpath-plus'; -import pThrottle from 'p-throttle'; -import pMap from 'p-map'; -export const isNumber = async (input) => (/^-?\d+(\.\d+)?$/.test(input)); -export const isBoolean = async (input) => /^(true|false)$/i.test(input); -export const isValidString = async (input) => !(input.trim() !== ''); -export const testFilters = (filters) => { - return async (input) => { - for (const filter of filters) { - if (await filter(input)) { - return false; - } - } - return true; - }; -}; -export const defaultFilters = (filters = []) => [ - isNumber, isBoolean, isValidString, ...filters -]; -export async function transformObject(obj, transform, path, throttleDelay, concurrentTasks, errorCallback, testCallback) { - const paths = JSONPath({ path, json: obj, resultType: 'pointer' }); - await pMap(paths, async (jsonPointer) => { - const keys = jsonPointer.slice(1).split('/'); - await transformPath(obj, keys, transform, throttleDelay, concurrentTasks, jsonPointer, errorCallback, testCallback); - }, { concurrency: concurrentTasks }); -} -export async function transformPath(obj, keys, transform, throttleDelay, concurrentTasks, currentPath, errorCallback, testCallback) { - let current = obj; - for (let i = 0; i < keys.length - 1; i++) { - current = current[keys[i]]; - } - const lastKey = keys[keys.length - 1]; - const throttle = pThrottle({ - limit: 1, - interval: throttleDelay, - }); - if (typeof lastKey === 'string' && lastKey !== '') { - try { - const newKey = isValidString(lastKey) && !isNumber(lastKey) ? await throttle(transform)(lastKey, currentPath) : lastKey; - if (newKey !== lastKey) { - current[newKey] = current[lastKey]; - delete current[lastKey]; - } - if (typeof current[newKey] === 'string' && current[newKey] !== '') { - if (await testCallback(current[newKey], `${currentPath}/${lastKey}`)) { - current[newKey] = await throttle(transform)(current[newKey], `${currentPath}/${lastKey}`); - } - } - else if (typeof current[newKey] === 'object' && current[newKey] !== null) { - await transformObject(current[newKey], transform, '$.*', throttleDelay, concurrentTasks, errorCallback, testCallback); - } - } - catch (error) { - errorCallback(currentPath, lastKey, error); - } - } -} -const exampleTransformFunction = async (input, path) => { - if (input === 'random') - throw new Error('API error'); - console.log('translate : ' + input); - return input.toUpperCase(); -}; -export const defaultError = (path, value, error) => { - console.error(`Error at path: ${path}, value: ${value}, error: ${error}`); -}; -export const defaultOptions = (options = {}) => { - return { - transform: exampleTransformFunction, - path: options.path || '$[*][0,1,2]', - throttleDelay: 10, - concurrentTasks: 1, - errorCallback: defaultError, - filterCallback: testFilters(defaultFilters()), - ...options - }; -}; -const data = {}; -const runTransformation = async () => { - // const testTransformFunction = testFilters([isNumber, isBoolean]) - const options = defaultOptions(); - try { - await transformObject(data, options.transform, options.path, options.throttleDelay, options.concurrentTasks, options.errorCallback, options.filterCallback); - console.log('Transformed object:', data); - console.log('All transformations were successful.'); - } - catch (error) { - console.error('Transformation failed:', error); - } -}; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN5bmMtaXRlcmF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL2FzeW5jLWl0ZXJhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDeEMsT0FBTyxTQUFTLE1BQU0sWUFBWSxDQUFBO0FBQ2xDLE9BQU8sSUFBSSxNQUFNLE9BQU8sQ0FBQTtBQWdCeEIsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFXLEtBQUssRUFBRSxLQUFhLEVBQUUsRUFBRSxDQUFDLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUE7QUFDeEYsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFXLEtBQUssRUFBRSxLQUFhLEVBQUUsRUFBRSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtBQUN2RixNQUFNLENBQUMsTUFBTSxhQUFhLEdBQVcsS0FBSyxFQUFFLEtBQWEsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQTtBQUVwRixNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxPQUFpQixFQUFrQixFQUFFO0lBQzdELE9BQU8sS0FBSyxFQUFFLEtBQWEsRUFBRSxFQUFFO1FBQzNCLEtBQUssTUFBTSxNQUFNLElBQUksT0FBTyxFQUFFO1lBQzFCLElBQUksTUFBTSxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQ3JCLE9BQU8sS0FBSyxDQUFDO2FBQ2hCO1NBQ0o7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDLENBQUM7QUFDTixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxVQUFvQixFQUFFLEVBQUUsRUFBRSxDQUNyRDtJQUNJLFFBQVEsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFHLEdBQUcsT0FB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 \ No newline at end of file +import { JSONPath } from 'jsonpath-plus'; +import pThrottle from 'p-throttle'; +import pMap from 'p-map'; +export const isNumber = async (input) => (/^-?\d+(\.\d+)?$/.test(input)); +export const isBoolean = async (input) => /^(true|false)$/i.test(input); +export const isValidString = async (input) => !(input.trim() !== ''); +export const testFilters = (filters) => { + return async (input) => { + for (const filter of filters) { + if (await filter(input)) { + return false; + } + } + return true; + }; +}; +export const defaultFilters = (filters = []) => [ + isNumber, isBoolean, isValidString, ...filters +]; +export async function transformObject(obj, transform, path, throttleDelay, concurrentTasks, errorCallback, testCallback) { + const paths = JSONPath({ path, json: obj, resultType: 'pointer' }); + await pMap(paths, async (jsonPointer) => { + const keys = jsonPointer.slice(1).split('/'); + await transformPath(obj, keys, transform, throttleDelay, concurrentTasks, jsonPointer, errorCallback, testCallback); + }, { concurrency: concurrentTasks }); +} +export async function transformPath(obj, keys, transform, throttleDelay, concurrentTasks, currentPath, errorCallback, testCallback) { + let current = obj; + for (let i = 0; i < keys.length - 1; i++) { + current = current[keys[i]]; + } + const lastKey = keys[keys.length - 1]; + const throttle = pThrottle({ + limit: 1, + interval: throttleDelay, + }); + if (typeof lastKey === 'string' && lastKey !== '') { + try { + const newKey = isValidString(lastKey) && !isNumber(lastKey) ? await throttle(transform)(lastKey, currentPath) : lastKey; + if (newKey !== lastKey) { + current[newKey] = current[lastKey]; + delete current[lastKey]; + } + if (typeof current[newKey] === 'string' && current[newKey] !== '') { + if (await testCallback(current[newKey], `${currentPath}/${lastKey}`)) { + current[newKey] = await throttle(transform)(current[newKey], `${currentPath}/${lastKey}`); + } + } + else if (typeof current[newKey] === 'object' && current[newKey] !== null) { + await transformObject(current[newKey], transform, '$.*', throttleDelay, concurrentTasks, errorCallback, testCallback); + } + } + catch (error) { + errorCallback(currentPath, lastKey, error); + } + } +} +const exampleTransformFunction = async (input, path) => { + if (input === 'random') + throw new Error('API error'); + console.log('translate : ' + input); + return input.toUpperCase(); +}; +export const defaultError = (path, value, error) => { + console.error(`Error at path: ${path}, value: ${value}, error: ${error}`); +}; +export const defaultOptions = (options = {}) => { + return { + transform: exampleTransformFunction, + path: options.path || '$[*][0,1,2]', + throttleDelay: 10, + concurrentTasks: 1, + errorCallback: defaultError, + filterCallback: testFilters(defaultFilters()), + ...options + }; +}; +const data = {}; +const runTransformation = async () => { + // const testTransformFunction = testFilters([isNumber, isBoolean]) + const options = defaultOptions(); + try { + await transformObject(data, options.transform, options.path, options.throttleDelay, options.concurrentTasks, options.errorCallback, options.filterCallback); + console.log('Transformed object:', data); + console.log('All transformations were successful.'); + } + catch (error) { + console.error('Transformation failed:', error); + } +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN5bmMtaXRlcmF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL2FzeW5jLWl0ZXJhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDeEMsT0FBTyxTQUFTLE1BQU0sWUFBWSxDQUFBO0FBQ2xDLE9BQU8sSUFBSSxNQUFNLE9BQU8sQ0FBQTtBQWdCeEIsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFXLEtBQUssRUFBRSxLQUFhLEVBQUUsRUFBRSxDQUFDLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUE7QUFDeEYsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFXLEtBQUssRUFBRSxLQUFhLEVBQUUsRUFBRSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtBQUN2RixNQUFNLENBQUMsTUFBTSxhQUFhLEdBQVcsS0FBSyxFQUFFLEtBQWEsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQTtBQUVwRixNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxPQUFpQixFQUFrQixFQUFFO0lBQzdELE9BQU8sS0FBSyxFQUFFLEtBQWEsRUFBRSxFQUFFO1FBQzNCLEtBQUssTUFBTSxNQUFNLElBQUksT0FBTyxFQUFFLENBQUM7WUFDM0IsSUFBSSxNQUFNLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUN0QixPQUFPLEtBQUssQ0FBQztZQUNqQixDQUFDO1FBQ0wsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUMsQ0FBQztBQUNOLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxDQUFDLFVBQW9CLEVBQUUsRUFBRSxFQUFFLENBQ3JEO0lBQ0ksUUFBUSxFQUFFLFNBQVMsRUFB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 \ No newline at end of file diff --git a/packages/i18n/dist/lib/cache.d.ts b/packages/i18n/dist/lib/cache.d.ts index 509db186..cb0ff5c3 100644 --- a/packages/i18n/dist/lib/cache.d.ts +++ b/packages/i18n/dist/lib/cache.d.ts @@ -1 +1 @@ -export {}; +export {}; diff --git a/packages/i18n/dist/lib/cache.js b/packages/i18n/dist/lib/cache.js index 18a0069b..5178ae84 100644 --- a/packages/i18n/dist/lib/cache.js +++ b/packages/i18n/dist/lib/cache.js @@ -1,2 +1,2 @@ -export {}; +export {}; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL2NhY2hlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIifQ== \ No newline at end of file diff --git a/packages/i18n/dist/lib/codes.d.ts b/packages/i18n/dist/lib/codes.d.ts index 49d29156..0dc03a96 100644 --- a/packages/i18n/dist/lib/codes.d.ts +++ b/packages/i18n/dist/lib/codes.d.ts @@ -1,742 +1,742 @@ -/** - * @author Phil Teare - * using wikipedia data - * @link https://stackoverflow.com/questions/3217492/list-of-language-codes-in-yaml-or-json - * @link https://loc.gov/standards/iso639-2/ISO-639-2_utf-8.txt - * @link http://country.io/data/ - */ -export declare const iso_lang_codes: { - ab: { - name: string; - nativeName: string; - }; - aa: { - name: string; - nativeName: string; - }; - af: { - name: string; - nativeName: string; - }; - ak: { - name: string; - nativeName: string; - }; - sq: { - name: string; - nativeName: string; - }; - am: { - name: string; - nativeName: string; - }; - ar: { - name: string; - nativeName: string; - }; - an: { - name: string; - nativeName: string; - }; - hy: { - name: string; - nativeName: string; - }; - as: { - name: string; - nativeName: string; - }; - av: { - name: string; - nativeName: string; - }; - ae: { - name: string; - nativeName: string; - }; - ay: { - name: string; - nativeName: string; - }; - az: { - name: string; - nativeName: string; - }; - bm: { - name: string; - nativeName: string; - }; - ba: { - name: string; - nativeName: string; - }; - eu: { - name: string; - nativeName: string; - }; - be: { - name: string; - nativeName: string; - }; - bn: { - name: string; - nativeName: string; - }; - bh: { - name: string; - nativeName: string; - }; - bi: { - name: string; - nativeName: string; - }; - bs: { - name: string; - nativeName: string; - }; - br: { - name: string; - nativeName: string; - }; - bg: { - name: string; - nativeName: string; - }; - my: { - name: string; - nativeName: string; - }; - ca: { - name: string; - nativeName: string; - }; - ch: { - name: string; - nativeName: string; - }; - ce: { - name: string; - nativeName: string; - }; - ny: { - name: string; - nativeName: string; - }; - zh: { - name: string; - nativeName: string; - }; - cv: { - name: string; - nativeName: string; - }; - kw: { - name: string; - nativeName: string; - }; - co: { - name: string; - nativeName: string; - }; - cr: { - name: string; - nativeName: string; - }; - hr: { - name: string; - nativeName: string; - }; - cs: { - name: string; - nativeName: string; - }; - da: { - name: string; - nativeName: string; - }; - dv: { - name: string; - nativeName: string; - }; - nl: { - name: string; - nativeName: string; - }; - en: { - name: string; - nativeName: string; - }; - eo: { - name: string; - nativeName: string; - }; - et: { - name: string; - nativeName: string; - }; - ee: { - name: string; - nativeName: string; - }; - fo: { - name: string; - nativeName: string; - }; - fj: { - name: string; - nativeName: string; - }; - fi: { - name: string; - nativeName: string; - }; - fr: { - name: string; - nativeName: string; - }; - ff: { - name: string; - nativeName: string; - }; - gl: { - name: string; - nativeName: string; - }; - ka: { - name: string; - nativeName: string; - }; - de: { - name: string; - nativeName: string; - }; - el: { - name: string; - nativeName: string; - }; - gn: { - name: string; - nativeName: string; - }; - gu: { - name: string; - nativeName: string; - }; - ht: { - name: string; - nativeName: string; - }; - ha: { - name: string; - nativeName: string; - }; - he: { - name: string; - nativeName: string; - }; - hz: { - name: string; - nativeName: string; - }; - hi: { - name: string; - nativeName: string; - }; - ho: { - name: string; - nativeName: string; - }; - hu: { - name: string; - nativeName: string; - }; - ia: { - name: string; - nativeName: string; - }; - id: { - name: string; - nativeName: string; - }; - ie: { - name: string; - nativeName: string; - }; - ga: { - name: string; - nativeName: string; - }; - ig: { - name: string; - nativeName: string; - }; - ik: { - name: string; - nativeName: string; - }; - io: { - name: string; - nativeName: string; - }; - is: { - name: string; - nativeName: string; - }; - it: { - name: string; - nativeName: string; - }; - iu: { - name: string; - nativeName: string; - }; - ja: { - name: string; - nativeName: string; - }; - jv: { - name: string; - nativeName: string; - }; - kl: { - name: string; - nativeName: string; - }; - kn: { - name: string; - nativeName: string; - }; - kr: { - name: string; - nativeName: string; - }; - ks: { - name: string; - nativeName: string; - }; - kk: { - name: string; - nativeName: string; - }; - km: { - name: string; - nativeName: string; - }; - ki: { - name: string; - nativeName: string; - }; - rw: { - name: string; - nativeName: string; - }; - ky: { - name: string; - nativeName: string; - }; - kv: { - name: string; - nativeName: string; - }; - kg: { - name: string; - nativeName: string; - }; - ko: { - name: string; - nativeName: string; - }; - ku: { - name: string; - nativeName: string; - }; - kj: { - name: string; - nativeName: string; - }; - la: { - name: string; - nativeName: string; - }; - lb: { - name: string; - nativeName: string; - }; - lg: { - name: string; - nativeName: string; - }; - li: { - name: string; - nativeName: string; - }; - ln: { - name: string; - nativeName: string; - }; - lo: { - name: string; - nativeName: string; - }; - lt: { - name: string; - nativeName: string; - }; - lu: { - name: string; - nativeName: string; - }; - lv: { - name: string; - nativeName: string; - }; - gv: { - name: string; - nativeName: string; - }; - mk: { - name: string; - nativeName: string; - }; - mg: { - name: string; - nativeName: string; - }; - ms: { - name: string; - nativeName: string; - }; - ml: { - name: string; - nativeName: string; - }; - mt: { - name: string; - nativeName: string; - }; - mi: { - name: string; - nativeName: string; - }; - mr: { - name: string; - nativeName: string; - }; - mh: { - name: string; - nativeName: string; - }; - mn: { - name: string; - nativeName: string; - }; - na: { - name: string; - nativeName: string; - }; - nv: { - name: string; - nativeName: string; - }; - nb: { - name: string; - nativeName: string; - }; - nd: { - name: string; - nativeName: string; - }; - ne: { - name: string; - nativeName: string; - }; - ng: { - name: string; - nativeName: string; - }; - nn: { - name: string; - nativeName: string; - }; - no: { - name: string; - nativeName: string; - }; - ii: { - name: string; - nativeName: string; - }; - nr: { - name: string; - nativeName: string; - }; - oc: { - name: string; - nativeName: string; - }; - oj: { - name: string; - nativeName: string; - }; - cu: { - name: string; - nativeName: string; - }; - om: { - name: string; - nativeName: string; - }; - or: { - name: string; - nativeName: string; - }; - os: { - name: string; - nativeName: string; - }; - pa: { - name: string; - nativeName: string; - }; - pi: { - name: string; - nativeName: string; - }; - fa: { - name: string; - nativeName: string; - }; - pl: { - name: string; - nativeName: string; - }; - ps: { - name: string; - nativeName: string; - }; - pt: { - name: string; - nativeName: string; - }; - qu: { - name: string; - nativeName: string; - }; - rm: { - name: string; - nativeName: string; - }; - rn: { - name: string; - nativeName: string; - }; - ro: { - name: string; - nativeName: string; - }; - ru: { - name: string; - nativeName: string; - }; - sa: { - name: string; - nativeName: string; - }; - sc: { - name: string; - nativeName: string; - }; - sd: { - name: string; - nativeName: string; - }; - se: { - name: string; - nativeName: string; - }; - sm: { - name: string; - nativeName: string; - }; - sg: { - name: string; - nativeName: string; - }; - sr: { - name: string; - nativeName: string; - }; - gd: { - name: string; - nativeName: string; - }; - sn: { - name: string; - nativeName: string; - }; - si: { - name: string; - nativeName: string; - }; - sk: { - name: string; - nativeName: string; - }; - sl: { - name: string; - nativeName: string; - }; - so: { - name: string; - nativeName: string; - }; - st: { - name: string; - nativeName: string; - }; - es: { - name: string; - nativeName: string; - }; - su: { - name: string; - nativeName: string; - }; - sw: { - name: string; - nativeName: string; - }; - ss: { - name: string; - nativeName: string; - }; - sv: { - name: string; - nativeName: string; - }; - ta: { - name: string; - nativeName: string; - }; - te: { - name: string; - nativeName: string; - }; - tg: { - name: string; - nativeName: string; - }; - th: { - name: string; - nativeName: string; - }; - ti: { - name: string; - nativeName: string; - }; - bo: { - name: string; - nativeName: string; - }; - tk: { - name: string; - nativeName: string; - }; - tl: { - name: string; - nativeName: string; - }; - tn: { - name: string; - nativeName: string; - }; - to: { - name: string; - nativeName: string; - }; - tr: { - name: string; - nativeName: string; - }; - ts: { - name: string; - nativeName: string; - }; - tt: { - name: string; - nativeName: string; - }; - tw: { - name: string; - nativeName: string; - }; - ty: { - name: string; - nativeName: string; - }; - ug: { - name: string; - nativeName: string; - }; - uk: { - name: string; - nativeName: string; - }; - ur: { - name: string; - nativeName: string; - }; - uz: { - name: string; - nativeName: string; - }; - ve: { - name: string; - nativeName: string; - }; - vi: { - name: string; - nativeName: string; - }; - vo: { - name: string; - nativeName: string; - }; - wa: { - name: string; - nativeName: string; - }; - cy: { - name: string; - nativeName: string; - }; - wo: { - name: string; - nativeName: string; - }; - fy: { - name: string; - nativeName: string; - }; - xh: { - name: string; - nativeName: string; - }; - yi: { - name: string; - nativeName: string; - }; - yo: { - name: string; - nativeName: string; - }; - za: { - name: string; - nativeName: string; - }; -}; -export declare const country_codes: { - name: string; - dial_code: string; - code: string; -}[]; +/** + * @author Phil Teare + * using wikipedia data + * @link https://stackoverflow.com/questions/3217492/list-of-language-codes-in-yaml-or-json + * @link https://loc.gov/standards/iso639-2/ISO-639-2_utf-8.txt + * @link http://country.io/data/ + */ +export declare const iso_lang_codes: { + ab: { + name: string; + nativeName: string; + }; + aa: { + name: string; + nativeName: string; + }; + af: { + name: string; + nativeName: string; + }; + ak: { + name: string; + nativeName: string; + }; + sq: { + name: string; + nativeName: string; + }; + am: { + name: string; + nativeName: string; + }; + ar: { + name: string; + nativeName: string; + }; + an: { + name: string; + nativeName: string; + }; + hy: { + name: string; + nativeName: string; + }; + as: { + name: string; + nativeName: string; + }; + av: { + name: string; + nativeName: string; + }; + ae: { + name: string; + nativeName: string; + }; + ay: { + name: string; + nativeName: string; + }; + az: { + name: string; + nativeName: string; + }; + bm: { + name: string; + nativeName: string; + }; + ba: { + name: string; + nativeName: string; + }; + eu: { + name: string; + nativeName: string; + }; + be: { + name: string; + nativeName: string; + }; + bn: { + name: string; + nativeName: string; + }; + bh: { + name: string; + nativeName: string; + }; + bi: { + name: string; + nativeName: string; + }; + bs: { + name: string; + nativeName: string; + }; + br: { + name: string; + nativeName: string; + }; + bg: { + name: string; + nativeName: string; + }; + my: { + name: string; + nativeName: string; + }; + ca: { + name: string; + nativeName: string; + }; + ch: { + name: string; + nativeName: string; + }; + ce: { + name: string; + nativeName: string; + }; + ny: { + name: string; + nativeName: string; + }; + zh: { + name: string; + nativeName: string; + }; + cv: { + name: string; + nativeName: string; + }; + kw: { + name: string; + nativeName: string; + }; + co: { + name: string; + nativeName: string; + }; + cr: { + name: string; + nativeName: string; + }; + hr: { + name: string; + nativeName: string; + }; + cs: { + name: string; + nativeName: string; + }; + da: { + name: string; + nativeName: string; + }; + dv: { + name: string; + nativeName: string; + }; + nl: { + name: string; + nativeName: string; + }; + en: { + name: string; + nativeName: string; + }; + eo: { + name: string; + nativeName: string; + }; + et: { + name: string; + nativeName: string; + }; + ee: { + name: string; + nativeName: string; + }; + fo: { + name: string; + nativeName: string; + }; + fj: { + name: string; + nativeName: string; + }; + fi: { + name: string; + nativeName: string; + }; + fr: { + name: string; + nativeName: string; + }; + ff: { + name: string; + nativeName: string; + }; + gl: { + name: string; + nativeName: string; + }; + ka: { + name: string; + nativeName: string; + }; + de: { + name: string; + nativeName: string; + }; + el: { + name: string; + nativeName: string; + }; + gn: { + name: string; + nativeName: string; + }; + gu: { + name: string; + nativeName: string; + }; + ht: { + name: string; + nativeName: string; + }; + ha: { + name: string; + nativeName: string; + }; + he: { + name: string; + nativeName: string; + }; + hz: { + name: string; + nativeName: string; + }; + hi: { + name: string; + nativeName: string; + }; + ho: { + name: string; + nativeName: string; + }; + hu: { + name: string; + nativeName: string; + }; + ia: { + name: string; + nativeName: string; + }; + id: { + name: string; + nativeName: string; + }; + ie: { + name: string; + nativeName: string; + }; + ga: { + name: string; + nativeName: string; + }; + ig: { + name: string; + nativeName: string; + }; + ik: { + name: string; + nativeName: string; + }; + io: { + name: string; + nativeName: string; + }; + is: { + name: string; + nativeName: string; + }; + it: { + name: string; + nativeName: string; + }; + iu: { + name: string; + nativeName: string; + }; + ja: { + name: string; + nativeName: string; + }; + jv: { + name: string; + nativeName: string; + }; + kl: { + name: string; + nativeName: string; + }; + kn: { + name: string; + nativeName: string; + }; + kr: { + name: string; + nativeName: string; + }; + ks: { + name: string; + nativeName: string; + }; + kk: { + name: string; + nativeName: string; + }; + km: { + name: string; + nativeName: string; + }; + ki: { + name: string; + nativeName: string; + }; + rw: { + name: string; + nativeName: string; + }; + ky: { + name: string; + nativeName: string; + }; + kv: { + name: string; + nativeName: string; + }; + kg: { + name: string; + nativeName: string; + }; + ko: { + name: string; + nativeName: string; + }; + ku: { + name: string; + nativeName: string; + }; + kj: { + name: string; + nativeName: string; + }; + la: { + name: string; + nativeName: string; + }; + lb: { + name: string; + nativeName: string; + }; + lg: { + name: string; + nativeName: string; + }; + li: { + name: string; + nativeName: string; + }; + ln: { + name: string; + nativeName: string; + }; + lo: { + name: string; + nativeName: string; + }; + lt: { + name: string; + nativeName: string; + }; + lu: { + name: string; + nativeName: string; + }; + lv: { + name: string; + nativeName: string; + }; + gv: { + name: string; + nativeName: string; + }; + mk: { + name: string; + nativeName: string; + }; + mg: { + name: string; + nativeName: string; + }; + ms: { + name: string; + nativeName: string; + }; + ml: { + name: string; + nativeName: string; + }; + mt: { + name: string; + nativeName: string; + }; + mi: { + name: string; + nativeName: string; + }; + mr: { + name: string; + nativeName: string; + }; + mh: { + name: string; + nativeName: string; + }; + mn: { + name: string; + nativeName: string; + }; + na: { + name: string; + nativeName: string; + }; + nv: { + name: string; + nativeName: string; + }; + nb: { + name: string; + nativeName: string; + }; + nd: { + name: string; + nativeName: string; + }; + ne: { + name: string; + nativeName: string; + }; + ng: { + name: string; + nativeName: string; + }; + nn: { + name: string; + nativeName: string; + }; + no: { + name: string; + nativeName: string; + }; + ii: { + name: string; + nativeName: string; + }; + nr: { + name: string; + nativeName: string; + }; + oc: { + name: string; + nativeName: string; + }; + oj: { + name: string; + nativeName: string; + }; + cu: { + name: string; + nativeName: string; + }; + om: { + name: string; + nativeName: string; + }; + or: { + name: string; + nativeName: string; + }; + os: { + name: string; + nativeName: string; + }; + pa: { + name: string; + nativeName: string; + }; + pi: { + name: string; + nativeName: string; + }; + fa: { + name: string; + nativeName: string; + }; + pl: { + name: string; + nativeName: string; + }; + ps: { + name: string; + nativeName: string; + }; + pt: { + name: string; + nativeName: string; + }; + qu: { + name: string; + nativeName: string; + }; + rm: { + name: string; + nativeName: string; + }; + rn: { + name: string; + nativeName: string; + }; + ro: { + name: string; + nativeName: string; + }; + ru: { + name: string; + nativeName: string; + }; + sa: { + name: string; + nativeName: string; + }; + sc: { + name: string; + nativeName: string; + }; + sd: { + name: string; + nativeName: string; + }; + se: { + name: string; + nativeName: string; + }; + sm: { + name: string; + nativeName: string; + }; + sg: { + name: string; + nativeName: string; + }; + sr: { + name: string; + nativeName: string; + }; + gd: { + name: string; + nativeName: string; + }; + sn: { + name: string; + nativeName: string; + }; + si: { + name: string; + nativeName: string; + }; + sk: { + name: string; + nativeName: string; + }; + sl: { + name: string; + nativeName: string; + }; + so: { + name: string; + nativeName: string; + }; + st: { + name: string; + nativeName: string; + }; + es: { + name: string; + nativeName: string; + }; + su: { + name: string; + nativeName: string; + }; + sw: { + name: string; + nativeName: string; + }; + ss: { + name: string; + nativeName: string; + }; + sv: { + name: string; + nativeName: string; + }; + ta: { + name: string; + nativeName: string; + }; + te: { + name: string; + nativeName: string; + }; + tg: { + name: string; + nativeName: string; + }; + th: { + name: string; + nativeName: string; + }; + ti: { + name: string; + nativeName: string; + }; + bo: { + name: string; + nativeName: string; + }; + tk: { + name: string; + nativeName: string; + }; + tl: { + name: string; + nativeName: string; + }; + tn: { + name: string; + nativeName: string; + }; + to: { + name: string; + nativeName: string; + }; + tr: { + name: string; + nativeName: string; + }; + ts: { + name: string; + nativeName: string; + }; + tt: { + name: string; + nativeName: string; + }; + tw: { + name: string; + nativeName: string; + }; + ty: { + name: string; + nativeName: string; + }; + ug: { + name: string; + nativeName: string; + }; + uk: { + name: string; + nativeName: string; + }; + ur: { + name: string; + nativeName: string; + }; + uz: { + name: string; + nativeName: string; + }; + ve: { + name: string; + nativeName: string; + }; + vi: { + name: string; + nativeName: string; + }; + vo: { + name: string; + nativeName: string; + }; + wa: { + name: string; + nativeName: string; + }; + cy: { + name: string; + nativeName: string; + }; + wo: { + name: string; + nativeName: string; + }; + fy: { + name: string; + nativeName: string; + }; + xh: { + name: string; + nativeName: string; + }; + yi: { + name: string; + nativeName: string; + }; + yo: { + name: string; + nativeName: string; + }; + za: { + name: string; + nativeName: string; + }; +}; +export declare const country_codes: { + name: string; + dial_code: string; + code: string; +}[]; diff --git a/packages/i18n/dist/lib/codes.js b/packages/i18n/dist/lib/codes.js index 9bebe819..c584bd43 100644 --- a/packages/i18n/dist/lib/codes.js +++ b/packages/i18n/dist/lib/codes.js @@ -1,1950 +1,1950 @@ -/** - * @author Phil Teare - * using wikipedia data - * @link https://stackoverflow.com/questions/3217492/list-of-language-codes-in-yaml-or-json - * @link https://loc.gov/standards/iso639-2/ISO-639-2_utf-8.txt - * @link http://country.io/data/ - */ -export const iso_lang_codes = { - "ab": { - "name": "Abkhaz", - "nativeName": "аҧсуа" - }, - "aa": { - "name": "Afar", - "nativeName": "Afaraf" - }, - "af": { - "name": "Afrikaans", - "nativeName": "Afrikaans" - }, - "ak": { - "name": "Akan", - "nativeName": "Akan" - }, - "sq": { - "name": "Albanian", - "nativeName": "Shqip" - }, - "am": { - "name": "Amharic", - "nativeName": "አማርኛ" - }, - "ar": { - "name": "Arabic", - "nativeName": "العربية" - }, - "an": { - "name": "Aragonese", - "nativeName": "Aragonés" - }, - "hy": { - "name": "Armenian", - "nativeName": "Հայերեն" - }, - "as": { - "name": "Assamese", - "nativeName": "অসমীয়া" - }, - "av": { - "name": "Avaric", - "nativeName": "авар мацӀ, магӀарул мацӀ" - }, - "ae": { - "name": "Avestan", - "nativeName": "avesta" - }, - "ay": { - "name": "Aymara", - "nativeName": "aymar aru" - }, - "az": { - "name": "Azerbaijani", - "nativeName": "azərbaycan dili" - }, - "bm": { - "name": "Bambara", - "nativeName": "bamanankan" - }, - "ba": { - "name": "Bashkir", - "nativeName": "башҡорт теле" - }, - "eu": { - "name": "Basque", - "nativeName": "euskara, euskera" - }, - "be": { - "name": "Belarusian", - "nativeName": "Беларуская" - }, - "bn": { - "name": "Bengali", - "nativeName": "বাংলা" - }, - "bh": { - "name": "Bihari", - "nativeName": "भोजपुरी" - }, - "bi": { - "name": "Bislama", - "nativeName": "Bislama" - }, - "bs": { - "name": "Bosnian", - "nativeName": "bosanski jezik" - }, - "br": { - "name": "Breton", - "nativeName": "brezhoneg" - }, - "bg": { - "name": "Bulgarian", - "nativeName": "български език" - }, - "my": { - "name": "Burmese", - "nativeName": "ဗမာစာ" - }, - "ca": { - "name": "Catalan; Valencian", - "nativeName": "Català" - }, - "ch": { - "name": "Chamorro", - "nativeName": "Chamoru" - }, - "ce": { - "name": "Chechen", - "nativeName": "нохчийн мотт" - }, - "ny": { - "name": "Chichewa; Chewa; Nyanja", - "nativeName": "chiCheŵa, chinyanja" - }, - "zh": { - "name": "Chinese", - "nativeName": "中文 (Zhōngwén), 汉语, 漢語" - }, - "cv": { - "name": "Chuvash", - "nativeName": "чӑваш чӗлхи" - }, - "kw": { - "name": "Cornish", - "nativeName": "Kernewek" - }, - "co": { - "name": "Corsican", - "nativeName": "corsu, lingua corsa" - }, - "cr": { - "name": "Cree", - "nativeName": "ᓀᐦᐃᔭᐍᐏᐣ" - }, - "hr": { - "name": "Croatian", - "nativeName": "hrvatski" - }, - "cs": { - "name": "Czech", - "nativeName": "česky, čeština" - }, - "da": { - "name": "Danish", - "nativeName": "dansk" - }, - "dv": { - "name": "Divehi; Dhivehi; Maldivian;", - "nativeName": "ދިވެހި" - }, - "nl": { - "name": "Dutch", - "nativeName": "Nederlands, Vlaams" - }, - "en": { - "name": "English", - "nativeName": "English" - }, - "eo": { - "name": "Esperanto", - "nativeName": "Esperanto" - }, - "et": { - "name": "Estonian", - "nativeName": "eesti, eesti keel" - }, - "ee": { - "name": "Ewe", - "nativeName": "Eʋegbe" - }, - "fo": { - "name": "Faroese", - "nativeName": "føroyskt" - }, - "fj": { - "name": "Fijian", - "nativeName": "vosa Vakaviti" - }, - "fi": { - "name": "Finnish", - "nativeName": "suomi, suomen kieli" - }, - "fr": { - "name": "French", - "nativeName": "français, langue française" - }, - "ff": { - "name": "Fula; Fulah; Pulaar; Pular", - "nativeName": "Fulfulde, Pulaar, Pular" - }, - "gl": { - "name": "Galician", - "nativeName": "Galego" - }, - "ka": { - "name": "Georgian", - "nativeName": "ქართული" - }, - "de": { - "name": "German", - "nativeName": "Deutsch" - }, - "el": { - "name": "Greek, Modern", - "nativeName": "Ελληνικά" - }, - "gn": { - "name": "Guaraní", - "nativeName": "Avañeẽ" - }, - "gu": { - "name": "Gujarati", - "nativeName": "ગુજરાતી" - }, - "ht": { - "name": "Haitian; Haitian Creole", - "nativeName": "Kreyòl ayisyen" - }, - "ha": { - "name": "Hausa", - "nativeName": "Hausa, هَوُسَ" - }, - "he": { - "name": "Hebrew (modern)", - "nativeName": "עברית" - }, - "hz": { - "name": "Herero", - "nativeName": "Otjiherero" - }, - "hi": { - "name": "Hindi", - "nativeName": "हिन्दी, हिंदी" - }, - "ho": { - "name": "Hiri Motu", - "nativeName": "Hiri Motu" - }, - "hu": { - "name": "Hungarian", - "nativeName": "Magyar" - }, - "ia": { - "name": "Interlingua", - "nativeName": "Interlingua" - }, - "id": { - "name": "Indonesian", - "nativeName": "Bahasa Indonesia" - }, - "ie": { - "name": "Interlingue", - "nativeName": "Originally called Occidental; then Interlingue after WWII" - }, - "ga": { - "name": "Irish", - "nativeName": "Gaeilge" - }, - "ig": { - "name": "Igbo", - "nativeName": "Asụsụ Igbo" - }, - "ik": { - "name": "Inupiaq", - "nativeName": "Iñupiaq, Iñupiatun" - }, - "io": { - "name": "Ido", - "nativeName": "Ido" - }, - "is": { - "name": "Icelandic", - "nativeName": "Íslenska" - }, - "it": { - "name": "Italian", - "nativeName": "Italiano" - }, - "iu": { - "name": "Inuktitut", - "nativeName": "ᐃᓄᒃᑎᑐᑦ" - }, - "ja": { - "name": "Japanese", - "nativeName": "日本語 (にほんご/にっぽんご)" - }, - "jv": { - "name": "Javanese", - "nativeName": "basa Jawa" - }, - "kl": { - "name": "Kalaallisut, Greenlandic", - "nativeName": "kalaallisut, kalaallit oqaasii" - }, - "kn": { - "name": "Kannada", - "nativeName": "ಕನ್ನಡ" - }, - "kr": { - "name": "Kanuri", - "nativeName": "Kanuri" - }, - "ks": { - "name": "Kashmiri", - "nativeName": "कश्मीरी, كشميري‎" - }, - "kk": { - "name": "Kazakh", - "nativeName": "Қазақ тілі" - }, - "km": { - "name": "Khmer", - "nativeName": "ភាសាខ្មែរ" - }, - "ki": { - "name": "Kikuyu, Gikuyu", - "nativeName": "Gĩkũyũ" - }, - "rw": { - "name": "Kinyarwanda", - "nativeName": "Ikinyarwanda" - }, - "ky": { - "name": "Kirghiz, Kyrgyz", - "nativeName": "кыргыз тили" - }, - "kv": { - "name": "Komi", - "nativeName": "коми кыв" - }, - "kg": { - "name": "Kongo", - "nativeName": "KiKongo" - }, - "ko": { - "name": "Korean", - "nativeName": "한국어 (韓國語), 조선말 (朝鮮語)" - }, - "ku": { - "name": "Kurdish", - "nativeName": "Kurdî, كوردی‎" - }, - "kj": { - "name": "Kwanyama, Kuanyama", - "nativeName": "Kuanyama" - }, - "la": { - "name": "Latin", - "nativeName": "latine, lingua latina" - }, - "lb": { - "name": "Luxembourgish, Letzeburgesch", - "nativeName": "Lëtzebuergesch" - }, - "lg": { - "name": "Luganda", - "nativeName": "Luganda" - }, - "li": { - "name": "Limburgish, Limburgan, Limburger", - "nativeName": "Limburgs" - }, - "ln": { - "name": "Lingala", - "nativeName": "Lingála" - }, - "lo": { - "name": "Lao", - "nativeName": "ພາສາລາວ" - }, - "lt": { - "name": "Lithuanian", - "nativeName": "lietuvių kalba" - }, - "lu": { - "name": "Luba-Katanga", - "nativeName": "" - }, - "lv": { - "name": "Latvian", - "nativeName": "latviešu valoda" - }, - "gv": { - "name": "Manx", - "nativeName": "Gaelg, Gailck" - }, - "mk": { - "name": "Macedonian", - "nativeName": "македонски јазик" - }, - "mg": { - "name": "Malagasy", - "nativeName": "Malagasy fiteny" - }, - "ms": { - "name": "Malay", - "nativeName": "bahasa Melayu, بهاس ملايو‎" - }, - "ml": { - "name": "Malayalam", - "nativeName": "മലയാളം" - }, - "mt": { - "name": "Maltese", - "nativeName": "Malti" - }, - "mi": { - "name": "Māori", - "nativeName": "te reo Māori" - }, - "mr": { - "name": "Marathi (Marāṭhī)", - "nativeName": "मराठी" - }, - "mh": { - "name": "Marshallese", - "nativeName": "Kajin M̧ajeļ" - }, - "mn": { - "name": "Mongolian", - "nativeName": "монгол" - }, - "na": { - "name": "Nauru", - "nativeName": "Ekakairũ Naoero" - }, - "nv": { - "name": "Navajo, Navaho", - "nativeName": "Diné bizaad, Dinékʼehǰí" - }, - "nb": { - "name": "Norwegian Bokmål", - "nativeName": "Norsk bokmål" - }, - "nd": { - "name": "North Ndebele", - "nativeName": "isiNdebele" - }, - "ne": { - "name": "Nepali", - "nativeName": "नेपाली" - }, - "ng": { - "name": "Ndonga", - "nativeName": "Owambo" - }, - "nn": { - "name": "Norwegian Nynorsk", - "nativeName": "Norsk nynorsk" - }, - "no": { - "name": "Norwegian", - "nativeName": "Norsk" - }, - "ii": { - "name": "Nuosu", - "nativeName": "ꆈꌠ꒿ Nuosuhxop" - }, - "nr": { - "name": "South Ndebele", - "nativeName": "isiNdebele" - }, - "oc": { - "name": "Occitan", - "nativeName": "Occitan" - }, - "oj": { - "name": "Ojibwe, Ojibwa", - "nativeName": "ᐊᓂᔑᓈᐯᒧᐎᓐ" - }, - "cu": { - "name": "Old Church Slavonic, Church Slavic, Church Slavonic, Old Bulgarian, Old Slavonic", - "nativeName": "ѩзыкъ словѣньскъ" - }, - "om": { - "name": "Oromo", - "nativeName": "Afaan Oromoo" - }, - "or": { - "name": "Oriya", - "nativeName": "ଓଡ଼ିଆ" - }, - "os": { - "name": "Ossetian, Ossetic", - "nativeName": "ирон æвзаг" - }, - "pa": { - "name": "Panjabi, Punjabi", - "nativeName": "ਪੰਜਾਬੀ, پنجابی‎" - }, - "pi": { - "name": "Pāli", - "nativeName": "पाऴि" - }, - "fa": { - "name": "Persian", - "nativeName": "فارسی" - }, - "pl": { - "name": "Polish", - "nativeName": "polski" - }, - "ps": { - "name": "Pashto, Pushto", - "nativeName": "پښتو" - }, - "pt": { - "name": "Portuguese", - "nativeName": "Português" - }, - "qu": { - "name": "Quechua", - "nativeName": "Runa Simi, Kichwa" - }, - "rm": { - "name": "Romansh", - "nativeName": "rumantsch grischun" - }, - "rn": { - "name": "Kirundi", - "nativeName": "kiRundi" - }, - "ro": { - "name": "Romanian, Moldavian, Moldovan", - "nativeName": "română" - }, - "ru": { - "name": "Russian", - "nativeName": "русский язык" - }, - "sa": { - "name": "Sanskrit (Saṁskṛta)", - "nativeName": "संस्कृतम्" - }, - "sc": { - "name": "Sardinian", - "nativeName": "sardu" - }, - "sd": { - "name": "Sindhi", - "nativeName": "सिन्धी, سنڌي، سندھی‎" - }, - "se": { - "name": "Northern Sami", - "nativeName": "Davvisámegiella" - }, - "sm": { - "name": "Samoan", - "nativeName": "gagana faa Samoa" - }, - "sg": { - "name": "Sango", - "nativeName": "yângâ tî sängö" - }, - "sr": { - "name": "Serbian", - "nativeName": "српски језик" - }, - "gd": { - "name": "Scottish Gaelic; Gaelic", - "nativeName": "Gàidhlig" - }, - "sn": { - "name": "Shona", - "nativeName": "chiShona" - }, - "si": { - "name": "Sinhala, Sinhalese", - "nativeName": "සිංහල" - }, - "sk": { - "name": "Slovak", - "nativeName": "slovenčina" - }, - "sl": { - "name": "Slovene", - "nativeName": "slovenščina" - }, - "so": { - "name": "Somali", - "nativeName": "Soomaaliga, af Soomaali" - }, - "st": { - "name": "Southern Sotho", - "nativeName": "Sesotho" - }, - "es": { - "name": "Spanish; Castilian", - "nativeName": "español, castellano" - }, - "su": { - "name": "Sundanese", - "nativeName": "Basa Sunda" - }, - "sw": { - "name": "Swahili", - "nativeName": "Kiswahili" - }, - "ss": { - "name": "Swati", - "nativeName": "SiSwati" - }, - "sv": { - "name": "Swedish", - "nativeName": "svenska" - }, - "ta": { - "name": "Tamil", - "nativeName": "தமிழ்" - }, - "te": { - "name": "Telugu", - "nativeName": "తెలుగు" - }, - "tg": { - "name": "Tajik", - "nativeName": "тоҷикӣ, toğikī, تاجیکی‎" - }, - "th": { - "name": "Thai", - "nativeName": "ไทย" - }, - "ti": { - "name": "Tigrinya", - "nativeName": "ትግርኛ" - }, - "bo": { - "name": "Tibetan Standard, Tibetan, Central", - "nativeName": "བོད་ཡིག" - }, - "tk": { - "name": "Turkmen", - "nativeName": "Türkmen, Түркмен" - }, - "tl": { - "name": "Tagalog", - "nativeName": "Wikang Tagalog, ᜏᜒᜃᜅ᜔ ᜆᜄᜎᜓᜄ᜔" - }, - "tn": { - "name": "Tswana", - "nativeName": "Setswana" - }, - "to": { - "name": "Tonga (Tonga Islands)", - "nativeName": "faka Tonga" - }, - "tr": { - "name": "Turkish", - "nativeName": "Türkçe" - }, - "ts": { - "name": "Tsonga", - "nativeName": "Xitsonga" - }, - "tt": { - "name": "Tatar", - "nativeName": "татарча, tatarça, تاتارچا‎" - }, - "tw": { - "name": "Twi", - "nativeName": "Twi" - }, - "ty": { - "name": "Tahitian", - "nativeName": "Reo Tahiti" - }, - "ug": { - "name": "Uighur, Uyghur", - "nativeName": "Uyƣurqə, ئۇيغۇرچە‎" - }, - "uk": { - "name": "Ukrainian", - "nativeName": "українська" - }, - "ur": { - "name": "Urdu", - "nativeName": "اردو" - }, - "uz": { - "name": "Uzbek", - "nativeName": "zbek, Ўзбек, أۇزبېك‎" - }, - "ve": { - "name": "Venda", - "nativeName": "Tshivenḓa" - }, - "vi": { - "name": "Vietnamese", - "nativeName": "Tiếng Việt" - }, - "vo": { - "name": "Volapük", - "nativeName": "Volapük" - }, - "wa": { - "name": "Walloon", - "nativeName": "Walon" - }, - "cy": { - "name": "Welsh", - "nativeName": "Cymraeg" - }, - "wo": { - "name": "Wolof", - "nativeName": "Wollof" - }, - "fy": { - "name": "Western Frisian", - "nativeName": "Frysk" - }, - "xh": { - "name": "Xhosa", - "nativeName": "isiXhosa" - }, - "yi": { - "name": "Yiddish", - "nativeName": "ייִדיש" - }, - "yo": { - "name": "Yoruba", - "nativeName": "Yorùbá" - }, - "za": { - "name": "Zhuang, Chuang", - "nativeName": "Saɯ cueŋƅ, Saw cuengh" - } -}; -export const country_codes = [ - { - "name": "Afghanistan", - "dial_code": "+93", - "code": "AF" - }, - { - "name": "Aland Islands", - "dial_code": "+358", - "code": "AX" - }, - { - "name": "Albania", - "dial_code": "+355", - "code": "AL" - }, - { - "name": "Algeria", - "dial_code": "+213", - "code": "DZ" - }, - { - "name": "AmericanSamoa", - "dial_code": "+1684", - "code": "AS" - }, - { - "name": "Andorra", - "dial_code": "+376", - "code": "AD" - }, - { - "name": "Angola", - "dial_code": "+244", - "code": "AO" - }, - { - "name": "Anguilla", - "dial_code": "+1264", - "code": "AI" - }, - { - "name": "Antarctica", - "dial_code": "+672", - "code": "AQ" - }, - { - "name": "Antigua and Barbuda", - "dial_code": "+1268", - "code": "AG" - }, - { - "name": "Argentina", - "dial_code": "+54", - "code": "AR" - }, - { - "name": "Armenia", - "dial_code": "+374", - "code": "AM" - }, - { - "name": "Aruba", - "dial_code": "+297", - "code": "AW" - }, - { - "name": "Australia", - "dial_code": "+61", - "code": "AU" - }, - { - "name": "Austria", - "dial_code": "+43", - "code": "AT" - }, - { - "name": "Azerbaijan", - "dial_code": "+994", - "code": "AZ" - }, - { - "name": "Bahamas", - "dial_code": "+1242", - "code": "BS" - }, - { - "name": "Bahrain", - "dial_code": "+973", - "code": "BH" - }, - { - "name": "Bangladesh", - "dial_code": "+880", - "code": "BD" - }, - { - "name": "Barbados", - "dial_code": "+1246", - "code": "BB" - }, - { - "name": "Belarus", - "dial_code": "+375", - "code": "BY" - }, - { - "name": "Belgium", - "dial_code": "+32", - "code": "BE" - }, - { - "name": "Belize", - "dial_code": "+501", - "code": "BZ" - }, - { - "name": "Benin", - "dial_code": "+229", - "code": "BJ" - }, - { - "name": "Bermuda", - "dial_code": "+1441", - "code": "BM" - }, - { - "name": "Bhutan", - "dial_code": "+975", - "code": "BT" - }, - { - "name": "Bolivia, Plurinational State of", - "dial_code": "+591", - "code": "BO" - }, - { - "name": "Bosnia and Herzegovina", - "dial_code": "+387", - "code": "BA" - }, - { - "name": "Botswana", - "dial_code": "+267", - "code": "BW" - }, - { - "name": "Brazil", - "dial_code": "+55", - "code": "BR" - }, - { - "name": "British Indian Ocean Territory", - "dial_code": "+246", - "code": "IO" - }, - { - "name": "Brunei Darussalam", - "dial_code": "+673", - "code": "BN" - }, - { - "name": "Bulgaria", - "dial_code": "+359", - "code": "BG" - }, - { - "name": "Burkina Faso", - "dial_code": "+226", - "code": "BF" - }, - { - "name": "Burundi", - "dial_code": "+257", - "code": "BI" - }, - { - "name": "Cambodia", - "dial_code": "+855", - "code": "KH" - }, - { - "name": "Cameroon", - "dial_code": "+237", - "code": "CM" - }, - { - "name": "Canada", - "dial_code": "+1", - "code": "CA" - }, - { - "name": "Cape Verde", - "dial_code": "+238", - "code": "CV" - }, - { - "name": "Cayman Islands", - "dial_code": "+ 345", - "code": "KY" - }, - { - "name": "Central African Republic", - "dial_code": "+236", - "code": "CF" - }, - { - "name": "Chad", - "dial_code": "+235", - "code": "TD" - }, - { - "name": "Chile", - "dial_code": "+56", - "code": "CL" - }, - { - "name": "China", - "dial_code": "+86", - "code": "CN" - }, - { - "name": "Christmas Island", - "dial_code": "+61", - "code": "CX" - }, - { - "name": "Cocos (Keeling) Islands", - "dial_code": "+61", - "code": "CC" - }, - { - "name": "Colombia", - "dial_code": "+57", - "code": "CO" - }, - { - "name": "Comoros", - "dial_code": "+269", - "code": "KM" - }, - { - "name": "Congo", - "dial_code": "+242", - "code": "CG" - }, - { - "name": "Congo, The Democratic Republic of the Congo", - "dial_code": "+243", - "code": "CD" - }, - { - "name": "Cook Islands", - "dial_code": "+682", - "code": "CK" - }, - { - "name": "Costa Rica", - "dial_code": "+506", - "code": "CR" - }, - { - "name": "Cote d'Ivoire", - "dial_code": "+225", - "code": "CI" - }, - { - "name": "Croatia", - "dial_code": "+385", - "code": "HR" - }, - { - "name": "Cuba", - "dial_code": "+53", - "code": "CU" - }, - { - "name": "Cyprus", - "dial_code": "+357", - "code": "CY" - }, - { - "name": "Czech Republic", - "dial_code": "+420", - "code": "CZ" - }, - { - "name": "Denmark", - "dial_code": "+45", - "code": "DK" - }, - { - "name": "Djibouti", - "dial_code": "+253", - "code": "DJ" - }, - { - "name": "Dominica", - "dial_code": "+1767", - "code": "DM" - }, - { - "name": "Dominican Republic", - "dial_code": "+1849", - "code": "DO" - }, - { - "name": "Ecuador", - "dial_code": "+593", - "code": "EC" - }, - { - "name": "Egypt", - "dial_code": "+20", - "code": "EG" - }, - { - "name": "El Salvador", - "dial_code": "+503", - "code": "SV" - }, - { - "name": "Equatorial Guinea", - "dial_code": "+240", - "code": "GQ" - }, - { - "name": "Eritrea", - "dial_code": "+291", - "code": "ER" - }, - { - "name": "Estonia", - "dial_code": "+372", - "code": "EE" - }, - { - "name": "Ethiopia", - "dial_code": "+251", - "code": "ET" - }, - { - "name": "Falkland Islands (Malvinas)", - "dial_code": "+500", - "code": "FK" - }, - { - "name": "Faroe Islands", - "dial_code": "+298", - "code": "FO" - }, - { - "name": "Fiji", - "dial_code": "+679", - "code": "FJ" - }, - { - "name": "Finland", - "dial_code": "+358", - "code": "FI" - }, - { - "name": "France", - "dial_code": "+33", - "code": "FR" - }, - { - "name": "French Guiana", - "dial_code": "+594", - "code": "GF" - }, - { - "name": "French Polynesia", - "dial_code": "+689", - "code": "PF" - }, - { - "name": "Gabon", - "dial_code": "+241", - "code": "GA" - }, - { - "name": "Gambia", - "dial_code": "+220", - "code": "GM" - }, - { - "name": "Georgia", - "dial_code": "+995", - "code": "GE" - }, - { - "name": "Germany", - "dial_code": "+49", - "code": "DE" - }, - { - "name": "Ghana", - "dial_code": "+233", - "code": "GH" - }, - { - "name": "Gibraltar", - "dial_code": "+350", - "code": "GI" - }, - { - "name": "Greece", - "dial_code": "+30", - "code": "GR" - }, - { - "name": "Greenland", - "dial_code": "+299", - "code": "GL" - }, - { - "name": "Grenada", - "dial_code": "+1473", - "code": "GD" - }, - { - "name": "Guadeloupe", - "dial_code": "+590", - "code": "GP" - }, - { - "name": "Guam", - "dial_code": "+1671", - "code": "GU" - }, - { - "name": "Guatemala", - "dial_code": "+502", - "code": "GT" - }, - { - "name": "Guernsey", - "dial_code": "+44", - "code": "GG" - }, - { - "name": "Guinea", - "dial_code": "+224", - "code": "GN" - }, - { - "name": "Guinea-Bissau", - "dial_code": "+245", - "code": "GW" - }, - { - "name": "Guyana", - "dial_code": "+595", - "code": "GY" - }, - { - "name": "Haiti", - "dial_code": "+509", - "code": "HT" - }, - { - "name": "Holy See (Vatican City State)", - "dial_code": "+379", - "code": "VA" - }, - { - "name": "Honduras", - "dial_code": "+504", - "code": "HN" - }, - { - "name": "Hong Kong", - "dial_code": "+852", - "code": "HK" - }, - { - "name": "Hungary", - "dial_code": "+36", - "code": "HU" - }, - { - "name": "Iceland", - "dial_code": "+354", - "code": "IS" - }, - { - "name": "India", - "dial_code": "+91", - "code": "IN" - }, - { - "name": "Indonesia", - "dial_code": "+62", - "code": "ID" - }, - { - "name": "Iran, Islamic Republic of Persian Gulf", - "dial_code": "+98", - "code": "IR" - }, - { - "name": "Iraq", - "dial_code": "+964", - "code": "IQ" - }, - { - "name": "Ireland", - "dial_code": "+353", - "code": "IE" - }, - { - "name": "Isle of Man", - "dial_code": "+44", - "code": "IM" - }, - { - "name": "Israel", - "dial_code": "+972", - "code": "IL" - }, - { - "name": "Italy", - "dial_code": "+39", - "code": "IT" - }, - { - "name": "Jamaica", - "dial_code": "+1876", - "code": "JM" - }, - { - "name": "Japan", - "dial_code": "+81", - "code": "JP" - }, - { - "name": "Jersey", - "dial_code": "+44", - "code": "JE" - }, - { - "name": "Jordan", - "dial_code": "+962", - "code": "JO" - }, - { - "name": "Kazakhstan", - "dial_code": "+77", - "code": "KZ" - }, - { - "name": "Kenya", - "dial_code": "+254", - "code": "KE" - }, - { - "name": "Kiribati", - "dial_code": "+686", - "code": "KI" - }, - { - "name": "Korea, Democratic People's Republic of Korea", - "dial_code": "+850", - "code": "KP" - }, - { - "name": "Korea, Republic of South Korea", - "dial_code": "+82", - "code": "KR" - }, - { - "name": "Kuwait", - "dial_code": "+965", - "code": "KW" - }, - { - "name": "Kyrgyzstan", - "dial_code": "+996", - "code": "KG" - }, - { - "name": "Laos", - "dial_code": "+856", - "code": "LA" - }, - { - "name": "Latvia", - "dial_code": "+371", - "code": "LV" - }, - { - "name": "Lebanon", - "dial_code": "+961", - "code": "LB" - }, - { - "name": "Lesotho", - "dial_code": "+266", - "code": "LS" - }, - { - "name": "Liberia", - "dial_code": "+231", - "code": "LR" - }, - { - "name": "Libyan Arab Jamahiriya", - "dial_code": "+218", - "code": "LY" - }, - { - "name": "Liechtenstein", - "dial_code": "+423", - "code": "LI" - }, - { - "name": "Lithuania", - "dial_code": "+370", - "code": "LT" - }, - { - "name": "Luxembourg", - "dial_code": "+352", - "code": "LU" - }, - { - "name": "Macao", - "dial_code": "+853", - "code": "MO" - }, - { - "name": "Macedonia", - "dial_code": "+389", - "code": "MK" - }, - { - "name": "Madagascar", - "dial_code": "+261", - "code": "MG" - }, - { - "name": "Malawi", - "dial_code": "+265", - "code": "MW" - }, - { - "name": "Malaysia", - "dial_code": "+60", - "code": "MY" - }, - { - "name": "Maldives", - "dial_code": "+960", - "code": "MV" - }, - { - "name": "Mali", - "dial_code": "+223", - "code": "ML" - }, - { - "name": "Malta", - "dial_code": "+356", - "code": "MT" - }, - { - "name": "Marshall Islands", - "dial_code": "+692", - "code": "MH" - }, - { - "name": "Martinique", - "dial_code": "+596", - "code": "MQ" - }, - { - "name": "Mauritania", - "dial_code": "+222", - "code": "MR" - }, - { - "name": "Mauritius", - "dial_code": "+230", - "code": "MU" - }, - { - "name": "Mayotte", - "dial_code": "+262", - "code": "YT" - }, - { - "name": "Mexico", - "dial_code": "+52", - "code": "MX" - }, - { - "name": "Micronesia, Federated States of Micronesia", - "dial_code": "+691", - "code": "FM" - }, - { - "name": "Moldova", - "dial_code": "+373", - "code": "MD" - }, - { - "name": "Monaco", - "dial_code": "+377", - "code": "MC" - }, - { - "name": "Mongolia", - "dial_code": "+976", - "code": "MN" - }, - { - "name": "Montenegro", - "dial_code": "+382", - "code": "ME" - }, - { - "name": "Montserrat", - "dial_code": "+1664", - "code": "MS" - }, - { - "name": "Morocco", - "dial_code": "+212", - "code": "MA" - }, - { - "name": "Mozambique", - "dial_code": "+258", - "code": "MZ" - }, - { - "name": "Myanmar", - "dial_code": "+95", - "code": "MM" - }, - { - "name": "Namibia", - "dial_code": "+264", - "code": "NA" - }, - { - "name": "Nauru", - "dial_code": "+674", - "code": "NR" - }, - { - "name": "Nepal", - "dial_code": "+977", - "code": "NP" - }, - { - "name": "Netherlands", - "dial_code": "+31", - "code": "NL" - }, - { - "name": "Netherlands Antilles", - "dial_code": "+599", - "code": "AN" - }, - { - "name": "New Caledonia", - "dial_code": "+687", - "code": "NC" - }, - { - "name": "New Zealand", - "dial_code": "+64", - "code": "NZ" - }, - { - "name": "Nicaragua", - "dial_code": "+505", - "code": "NI" - }, - { - "name": "Niger", - "dial_code": "+227", - "code": "NE" - }, - { - "name": "Nigeria", - "dial_code": "+234", - "code": "NG" - }, - { - "name": "Niue", - "dial_code": "+683", - "code": "NU" - }, - { - "name": "Norfolk Island", - "dial_code": "+672", - "code": "NF" - }, - { - "name": "Northern Mariana Islands", - "dial_code": "+1670", - "code": "MP" - }, - { - "name": "Norway", - "dial_code": "+47", - "code": "NO" - }, - { - "name": "Oman", - "dial_code": "+968", - "code": "OM" - }, - { - "name": "Pakistan", - "dial_code": "+92", - "code": "PK" - }, - { - "name": "Palau", - "dial_code": "+680", - "code": "PW" - }, - { - "name": "Palestinian Territory, Occupied", - "dial_code": "+970", - "code": "PS" - }, - { - "name": "Panama", - "dial_code": "+507", - "code": "PA" - }, - { - "name": "Papua New Guinea", - "dial_code": "+675", - "code": "PG" - }, - { - "name": "Paraguay", - "dial_code": "+595", - "code": "PY" - }, - { - "name": "Peru", - "dial_code": "+51", - "code": "PE" - }, - { - "name": "Philippines", - "dial_code": "+63", - "code": "PH" - }, - { - "name": "Pitcairn", - "dial_code": "+872", - "code": "PN" - }, - { - "name": "Poland", - "dial_code": "+48", - "code": "PL" - }, - { - "name": "Portugal", - "dial_code": "+351", - "code": "PT" - }, - { - "name": "Puerto Rico", - "dial_code": "+1939", - "code": "PR" - }, - { - "name": "Qatar", - "dial_code": "+974", - "code": "QA" - }, - { - "name": "Romania", - "dial_code": "+40", - "code": "RO" - }, - { - "name": "Russia", - "dial_code": "+7", - "code": "RU" - }, - { - "name": "Rwanda", - "dial_code": "+250", - "code": "RW" - }, - { - "name": "Reunion", - "dial_code": "+262", - "code": "RE" - }, - { - "name": "Saint Barthelemy", - "dial_code": "+590", - "code": "BL" - }, - { - "name": "Saint Helena, Ascension and Tristan Da Cunha", - "dial_code": "+290", - "code": "SH" - }, - { - "name": "Saint Kitts and Nevis", - "dial_code": "+1869", - "code": "KN" - }, - { - "name": "Saint Lucia", - "dial_code": "+1758", - "code": "LC" - }, - { - "name": "Saint Martin", - "dial_code": "+590", - "code": "MF" - }, - { - "name": "Saint Pierre and Miquelon", - "dial_code": "+508", - "code": "PM" - }, - { - "name": "Saint Vincent and the Grenadines", - "dial_code": "+1784", - "code": "VC" - }, - { - "name": "Samoa", - "dial_code": "+685", - "code": "WS" - }, - { - "name": "San Marino", - "dial_code": "+378", - "code": "SM" - }, - { - "name": "Sao Tome and Principe", - "dial_code": "+239", - "code": "ST" - }, - { - "name": "Saudi Arabia", - "dial_code": "+966", - "code": "SA" - }, - { - "name": "Senegal", - "dial_code": "+221", - "code": "SN" - }, - { - "name": "Serbia", - "dial_code": "+381", - "code": "RS" - }, - { - "name": "Seychelles", - "dial_code": "+248", - "code": "SC" - }, - { - "name": "Sierra Leone", - "dial_code": "+232", - "code": "SL" - }, - { - "name": "Singapore", - "dial_code": "+65", - "code": "SG" - }, - { - "name": "Slovakia", - "dial_code": "+421", - "code": "SK" - }, - { - "name": "Slovenia", - "dial_code": "+386", - "code": "SI" - }, - { - "name": "Solomon Islands", - "dial_code": "+677", - "code": "SB" - }, - { - "name": "Somalia", - "dial_code": "+252", - "code": "SO" - }, - { - "name": "South Africa", - "dial_code": "+27", - "code": "ZA" - }, - { - "name": "South Sudan", - "dial_code": "+211", - "code": "SS" - }, - { - "name": "South Georgia and the South Sandwich Islands", - "dial_code": "+500", - "code": "GS" - }, - { - "name": "Spain", - "dial_code": "+34", - "code": "ES" - }, - { - "name": "Sri Lanka", - "dial_code": "+94", - "code": "LK" - }, - { - "name": "Sudan", - "dial_code": "+249", - "code": "SD" - }, - { - "name": "Suriname", - "dial_code": "+597", - "code": "SR" - }, - { - "name": "Svalbard and Jan Mayen", - "dial_code": "+47", - "code": "SJ" - }, - { - "name": "Swaziland", - "dial_code": "+268", - "code": "SZ" - }, - { - "name": "Sweden", - "dial_code": "+46", - "code": "SE" - }, - { - "name": "Switzerland", - "dial_code": "+41", - "code": "CH" - }, - { - "name": "Syrian Arab Republic", - "dial_code": "+963", - "code": "SY" - }, - { - "name": "Taiwan", - "dial_code": "+886", - "code": "TW" - }, - { - "name": "Tajikistan", - "dial_code": "+992", - "code": "TJ" - }, - { - "name": "Tanzania, United Republic of Tanzania", - "dial_code": "+255", - "code": "TZ" - }, - { - "name": "Thailand", - "dial_code": "+66", - "code": "TH" - }, - { - "name": "Timor-Leste", - "dial_code": "+670", - "code": "TL" - }, - { - "name": "Togo", - "dial_code": "+228", - "code": "TG" - }, - { - "name": "Tokelau", - "dial_code": "+690", - "code": "TK" - }, - { - "name": "Tonga", - "dial_code": "+676", - "code": "TO" - }, - { - "name": "Trinidad and Tobago", - "dial_code": "+1868", - "code": "TT" - }, - { - "name": "Tunisia", - "dial_code": "+216", - "code": "TN" - }, - { - "name": "Turkey", - "dial_code": "+90", - "code": "TR" - }, - { - "name": "Turkmenistan", - "dial_code": "+993", - "code": "TM" - }, - { - "name": "Turks and Caicos Islands", - "dial_code": "+1649", - "code": "TC" - }, - { - "name": "Tuvalu", - "dial_code": "+688", - "code": "TV" - }, - { - "name": "Uganda", - "dial_code": "+256", - "code": "UG" - }, - { - "name": "Ukraine", - "dial_code": "+380", - "code": "UA" - }, - { - "name": "United Arab Emirates", - "dial_code": "+971", - "code": "AE" - }, - { - "name": "United Kingdom", - "dial_code": "+44", - "code": "GB" - }, - { - "name": "United States", - "dial_code": "+1", - "code": "US" - }, - { - "name": "Uruguay", - "dial_code": "+598", - "code": "UY" - }, - { - "name": "Uzbekistan", - "dial_code": "+998", - "code": "UZ" - }, - { - "name": "Vanuatu", - "dial_code": "+678", - "code": "VU" - }, - { - "name": "Venezuela, Bolivarian Republic of Venezuela", - "dial_code": "+58", - "code": "VE" - }, - { - "name": "Vietnam", - "dial_code": "+84", - "code": "VN" - }, - { - "name": "Virgin Islands, British", - "dial_code": "+1284", - "code": "VG" - }, - { - "name": "Virgin Islands, U.S.", - "dial_code": "+1340", - "code": "VI" - }, - { - "name": "Wallis and Futuna", - "dial_code": "+681", - "code": "WF" - }, - { - "name": "Yemen", - "dial_code": "+967", - "code": "YE" - }, - { - "name": "Zambia", - "dial_code": "+260", - "code": "ZM" - }, - { - "name": "Zimbabwe", - "dial_code": "+263", - "code": "ZW" - } -]; +/** + * @author Phil Teare + * using wikipedia data + * @link https://stackoverflow.com/questions/3217492/list-of-language-codes-in-yaml-or-json + * @link https://loc.gov/standards/iso639-2/ISO-639-2_utf-8.txt + * @link http://country.io/data/ + */ +export const iso_lang_codes = { + "ab": { + "name": "Abkhaz", + "nativeName": "аҧсуа" + }, + "aa": { + "name": "Afar", + "nativeName": "Afaraf" + }, + "af": { + "name": "Afrikaans", + "nativeName": "Afrikaans" + }, + "ak": { + "name": "Akan", + "nativeName": "Akan" + }, + "sq": { + "name": "Albanian", + "nativeName": "Shqip" + }, + "am": { + "name": "Amharic", + "nativeName": "አማርኛ" + }, + "ar": { + "name": "Arabic", + "nativeName": "العربية" + }, + "an": { + "name": "Aragonese", + "nativeName": "Aragonés" + }, + "hy": { + "name": "Armenian", + "nativeName": "Հայերեն" + }, + "as": { + "name": "Assamese", + "nativeName": "অসমীয়া" + }, + "av": { + "name": "Avaric", + "nativeName": "авар мацӀ, магӀарул мацӀ" + }, + "ae": { + "name": "Avestan", + "nativeName": "avesta" + }, + "ay": { + "name": "Aymara", + "nativeName": "aymar aru" + }, + "az": { + "name": "Azerbaijani", + "nativeName": "azərbaycan dili" + }, + "bm": { + "name": "Bambara", + "nativeName": "bamanankan" + }, + "ba": { + "name": "Bashkir", + "nativeName": "башҡорт теле" + }, + "eu": { + "name": "Basque", + "nativeName": "euskara, euskera" + }, + "be": { + "name": "Belarusian", + "nativeName": "Беларуская" + }, + "bn": { + "name": "Bengali", + "nativeName": "বাংলা" + }, + "bh": { + "name": "Bihari", + "nativeName": "भोजपुरी" + }, + "bi": { + "name": "Bislama", + "nativeName": "Bislama" + }, + "bs": { + "name": "Bosnian", + "nativeName": "bosanski jezik" + }, + "br": { + "name": "Breton", + "nativeName": "brezhoneg" + }, + "bg": { + "name": "Bulgarian", + "nativeName": "български език" + }, + "my": { + "name": "Burmese", + "nativeName": "ဗမာစာ" + }, + "ca": { + "name": "Catalan; Valencian", + "nativeName": "Català" + }, + "ch": { + "name": "Chamorro", + "nativeName": "Chamoru" + }, + "ce": { + "name": "Chechen", + "nativeName": "нохчийн мотт" + }, + "ny": { + "name": "Chichewa; Chewa; Nyanja", + "nativeName": "chiCheŵa, chinyanja" + }, + "zh": { + "name": "Chinese", + "nativeName": "中文 (Zhōngwén), 汉语, 漢語" + }, + "cv": { + "name": "Chuvash", + "nativeName": "чӑваш чӗлхи" + }, + "kw": { + "name": "Cornish", + "nativeName": "Kernewek" + }, + "co": { + "name": "Corsican", + "nativeName": "corsu, lingua corsa" + }, + "cr": { + "name": "Cree", + "nativeName": "ᓀᐦᐃᔭᐍᐏᐣ" + }, + "hr": { + "name": "Croatian", + "nativeName": "hrvatski" + }, + "cs": { + "name": "Czech", + "nativeName": "česky, čeština" + }, + "da": { + "name": "Danish", + "nativeName": "dansk" + }, + "dv": { + "name": "Divehi; Dhivehi; Maldivian;", + "nativeName": "ދިވެހި" + }, + "nl": { + "name": "Dutch", + "nativeName": "Nederlands, Vlaams" + }, + "en": { + "name": "English", + "nativeName": "English" + }, + "eo": { + "name": "Esperanto", + "nativeName": "Esperanto" + }, + "et": { + "name": "Estonian", + "nativeName": "eesti, eesti keel" + }, + "ee": { + "name": "Ewe", + "nativeName": "Eʋegbe" + }, + "fo": { + "name": "Faroese", + "nativeName": "føroyskt" + }, + "fj": { + "name": "Fijian", + "nativeName": "vosa Vakaviti" + }, + "fi": { + "name": "Finnish", + "nativeName": "suomi, suomen kieli" + }, + "fr": { + "name": "French", + "nativeName": "français, langue française" + }, + "ff": { + "name": "Fula; Fulah; Pulaar; Pular", + "nativeName": "Fulfulde, Pulaar, Pular" + }, + "gl": { + "name": "Galician", + "nativeName": "Galego" + }, + "ka": { + "name": "Georgian", + "nativeName": "ქართული" + }, + "de": { + "name": "German", + "nativeName": "Deutsch" + }, + "el": { + "name": "Greek, Modern", + "nativeName": "Ελληνικά" + }, + "gn": { + "name": "Guaraní", + "nativeName": "Avañeẽ" + }, + "gu": { + "name": "Gujarati", + "nativeName": "ગુજરાતી" + }, + "ht": { + "name": "Haitian; Haitian Creole", + "nativeName": "Kreyòl ayisyen" + }, + "ha": { + "name": "Hausa", + "nativeName": "Hausa, هَوُسَ" + }, + "he": { + "name": "Hebrew (modern)", + "nativeName": "עברית" + }, + "hz": { + "name": "Herero", + "nativeName": "Otjiherero" + }, + "hi": { + "name": "Hindi", + "nativeName": "हिन्दी, हिंदी" + }, + "ho": { + "name": "Hiri Motu", + "nativeName": "Hiri Motu" + }, + "hu": { + "name": "Hungarian", + "nativeName": "Magyar" + }, + "ia": { + "name": "Interlingua", + "nativeName": "Interlingua" + }, + "id": { + "name": "Indonesian", + "nativeName": "Bahasa Indonesia" + }, + "ie": { + "name": "Interlingue", + "nativeName": "Originally called Occidental; then Interlingue after WWII" + }, + "ga": { + "name": "Irish", + "nativeName": "Gaeilge" + }, + "ig": { + "name": "Igbo", + "nativeName": "Asụsụ Igbo" + }, + "ik": { + "name": "Inupiaq", + "nativeName": "Iñupiaq, Iñupiatun" + }, + "io": { + "name": "Ido", + "nativeName": "Ido" + }, + "is": { + "name": "Icelandic", + "nativeName": "Íslenska" + }, + "it": { + "name": "Italian", + "nativeName": "Italiano" + }, + "iu": { + "name": "Inuktitut", + "nativeName": "ᐃᓄᒃᑎᑐᑦ" + }, + "ja": { + "name": "Japanese", + "nativeName": "日本語 (にほんご/にっぽんご)" + }, + "jv": { + "name": "Javanese", + "nativeName": "basa Jawa" + }, + "kl": { + "name": "Kalaallisut, Greenlandic", + "nativeName": "kalaallisut, kalaallit oqaasii" + }, + "kn": { + "name": "Kannada", + "nativeName": "ಕನ್ನಡ" + }, + "kr": { + "name": "Kanuri", + "nativeName": "Kanuri" + }, + "ks": { + "name": "Kashmiri", + "nativeName": "कश्मीरी, كشميري‎" + }, + "kk": { + "name": "Kazakh", + "nativeName": "Қазақ тілі" + }, + "km": { + "name": "Khmer", + "nativeName": "ភាសាខ្មែរ" + }, + "ki": { + "name": "Kikuyu, Gikuyu", + "nativeName": "Gĩkũyũ" + }, + "rw": { + "name": "Kinyarwanda", + "nativeName": "Ikinyarwanda" + }, + "ky": { + "name": "Kirghiz, Kyrgyz", + "nativeName": "кыргыз тили" + }, + "kv": { + "name": "Komi", + "nativeName": "коми кыв" + }, + "kg": { + "name": "Kongo", + "nativeName": "KiKongo" + }, + "ko": { + "name": "Korean", + "nativeName": "한국어 (韓國語), 조선말 (朝鮮語)" + }, + "ku": { + "name": "Kurdish", + "nativeName": "Kurdî, كوردی‎" + }, + "kj": { + "name": "Kwanyama, Kuanyama", + "nativeName": "Kuanyama" + }, + "la": { + "name": "Latin", + "nativeName": "latine, lingua latina" + }, + "lb": { + "name": "Luxembourgish, Letzeburgesch", + "nativeName": "Lëtzebuergesch" + }, + "lg": { + "name": "Luganda", + "nativeName": "Luganda" + }, + "li": { + "name": "Limburgish, Limburgan, Limburger", + "nativeName": "Limburgs" + }, + "ln": { + "name": "Lingala", + "nativeName": "Lingála" + }, + "lo": { + "name": "Lao", + "nativeName": "ພາສາລາວ" + }, + "lt": { + "name": "Lithuanian", + "nativeName": "lietuvių kalba" + }, + "lu": { + "name": "Luba-Katanga", + "nativeName": "" + }, + "lv": { + "name": "Latvian", + "nativeName": "latviešu valoda" + }, + "gv": { + "name": "Manx", + "nativeName": "Gaelg, Gailck" + }, + "mk": { + "name": "Macedonian", + "nativeName": "македонски јазик" + }, + "mg": { + "name": "Malagasy", + "nativeName": "Malagasy fiteny" + }, + "ms": { + "name": "Malay", + "nativeName": "bahasa Melayu, بهاس ملايو‎" + }, + "ml": { + "name": "Malayalam", + "nativeName": "മലയാളം" + }, + "mt": { + "name": "Maltese", + "nativeName": "Malti" + }, + "mi": { + "name": "Māori", + "nativeName": "te reo Māori" + }, + "mr": { + "name": "Marathi (Marāṭhī)", + "nativeName": "मराठी" + }, + "mh": { + "name": "Marshallese", + "nativeName": "Kajin M̧ajeļ" + }, + "mn": { + "name": "Mongolian", + "nativeName": "монгол" + }, + "na": { + "name": "Nauru", + "nativeName": "Ekakairũ Naoero" + }, + "nv": { + "name": "Navajo, Navaho", + "nativeName": "Diné bizaad, Dinékʼehǰí" + }, + "nb": { + "name": "Norwegian Bokmål", + "nativeName": "Norsk bokmål" + }, + "nd": { + "name": "North Ndebele", + "nativeName": "isiNdebele" + }, + "ne": { + "name": "Nepali", + "nativeName": "नेपाली" + }, + "ng": { + "name": "Ndonga", + "nativeName": "Owambo" + }, + "nn": { + "name": "Norwegian Nynorsk", + "nativeName": "Norsk nynorsk" + }, + "no": { + "name": "Norwegian", + "nativeName": "Norsk" + }, + "ii": { + "name": "Nuosu", + "nativeName": "ꆈꌠ꒿ Nuosuhxop" + }, + "nr": { + "name": "South Ndebele", + "nativeName": "isiNdebele" + }, + "oc": { + "name": "Occitan", + "nativeName": "Occitan" + }, + "oj": { + "name": "Ojibwe, Ojibwa", + "nativeName": "ᐊᓂᔑᓈᐯᒧᐎᓐ" + }, + "cu": { + "name": "Old Church Slavonic, Church Slavic, Church Slavonic, Old Bulgarian, Old Slavonic", + "nativeName": "ѩзыкъ словѣньскъ" + }, + "om": { + "name": "Oromo", + "nativeName": "Afaan Oromoo" + }, + "or": { + "name": "Oriya", + "nativeName": "ଓଡ଼ିଆ" + }, + "os": { + "name": "Ossetian, Ossetic", + "nativeName": "ирон æвзаг" + }, + "pa": { + "name": "Panjabi, Punjabi", + "nativeName": "ਪੰਜਾਬੀ, پنجابی‎" + }, + "pi": { + "name": "Pāli", + "nativeName": "पाऴि" + }, + "fa": { + "name": "Persian", + "nativeName": "فارسی" + }, + "pl": { + "name": "Polish", + "nativeName": "polski" + }, + "ps": { + "name": "Pashto, Pushto", + "nativeName": "پښتو" + }, + "pt": { + "name": "Portuguese", + "nativeName": "Português" + }, + "qu": { + "name": "Quechua", + "nativeName": "Runa Simi, Kichwa" + }, + "rm": { + "name": "Romansh", + "nativeName": "rumantsch grischun" + }, + "rn": { + "name": "Kirundi", + "nativeName": "kiRundi" + }, + "ro": { + "name": "Romanian, Moldavian, Moldovan", + "nativeName": "română" + }, + "ru": { + "name": "Russian", + "nativeName": "русский язык" + }, + "sa": { + "name": "Sanskrit (Saṁskṛta)", + "nativeName": "संस्कृतम्" + }, + "sc": { + "name": "Sardinian", + "nativeName": "sardu" + }, + "sd": { + "name": "Sindhi", + "nativeName": "सिन्धी, سنڌي، سندھی‎" + }, + "se": { + "name": "Northern Sami", + "nativeName": "Davvisámegiella" + }, + "sm": { + "name": "Samoan", + "nativeName": "gagana faa Samoa" + }, + "sg": { + "name": "Sango", + "nativeName": "yângâ tî sängö" + }, + "sr": { + "name": "Serbian", + "nativeName": "српски језик" + }, + "gd": { + "name": "Scottish Gaelic; Gaelic", + "nativeName": "Gàidhlig" + }, + "sn": { + "name": "Shona", + "nativeName": "chiShona" + }, + "si": { + "name": "Sinhala, Sinhalese", + "nativeName": "සිංහල" + }, + "sk": { + "name": "Slovak", + "nativeName": "slovenčina" + }, + "sl": { + "name": "Slovene", + "nativeName": "slovenščina" + }, + "so": { + "name": "Somali", + "nativeName": "Soomaaliga, af Soomaali" + }, + "st": { + "name": "Southern Sotho", + "nativeName": "Sesotho" + }, + "es": { + "name": "Spanish; Castilian", + "nativeName": "español, castellano" + }, + "su": { + "name": "Sundanese", + "nativeName": "Basa Sunda" + }, + "sw": { + "name": "Swahili", + "nativeName": "Kiswahili" + }, + "ss": { + "name": "Swati", + "nativeName": "SiSwati" + }, + "sv": { + "name": "Swedish", + "nativeName": "svenska" + }, + "ta": { + "name": "Tamil", + "nativeName": "தமிழ்" + }, + "te": { + "name": "Telugu", + "nativeName": "తెలుగు" + }, + "tg": { + "name": "Tajik", + "nativeName": "тоҷикӣ, toğikī, تاجیکی‎" + }, + "th": { + "name": "Thai", + "nativeName": "ไทย" + }, + "ti": { + "name": "Tigrinya", + "nativeName": "ትግርኛ" + }, + "bo": { + "name": "Tibetan Standard, Tibetan, Central", + "nativeName": "བོད་ཡིག" + }, + "tk": { + "name": "Turkmen", + "nativeName": "Türkmen, Түркмен" + }, + "tl": { + "name": "Tagalog", + "nativeName": "Wikang Tagalog, ᜏᜒᜃᜅ᜔ ᜆᜄᜎᜓᜄ᜔" + }, + "tn": { + "name": "Tswana", + "nativeName": "Setswana" + }, + "to": { + "name": "Tonga (Tonga Islands)", + "nativeName": "faka Tonga" + }, + "tr": { + "name": "Turkish", + "nativeName": "Türkçe" + }, + "ts": { + "name": "Tsonga", + "nativeName": "Xitsonga" + }, + "tt": { + "name": "Tatar", + "nativeName": "татарча, tatarça, تاتارچا‎" + }, + "tw": { + "name": "Twi", + "nativeName": "Twi" + }, + "ty": { + "name": "Tahitian", + "nativeName": "Reo Tahiti" + }, + "ug": { + "name": "Uighur, Uyghur", + "nativeName": "Uyƣurqə, ئۇيغۇرچە‎" + }, + "uk": { + "name": "Ukrainian", + "nativeName": "українська" + }, + "ur": { + "name": "Urdu", + "nativeName": "اردو" + }, + "uz": { + "name": "Uzbek", + "nativeName": "zbek, Ўзбек, أۇزبېك‎" + }, + "ve": { + "name": "Venda", + "nativeName": "Tshivenḓa" + }, + "vi": { + "name": "Vietnamese", + "nativeName": "Tiếng Việt" + }, + "vo": { + "name": "Volapük", + "nativeName": "Volapük" + }, + "wa": { + "name": "Walloon", + "nativeName": "Walon" + }, + "cy": { + "name": "Welsh", + "nativeName": "Cymraeg" + }, + "wo": { + "name": "Wolof", + "nativeName": "Wollof" + }, + "fy": { + "name": "Western Frisian", + "nativeName": "Frysk" + }, + "xh": { + "name": "Xhosa", + "nativeName": "isiXhosa" + }, + "yi": { + "name": "Yiddish", + "nativeName": "ייִדיש" + }, + "yo": { + "name": "Yoruba", + "nativeName": "Yorùbá" + }, + "za": { + "name": "Zhuang, Chuang", + "nativeName": "Saɯ cueŋƅ, Saw cuengh" + } +}; +export const country_codes = [ + { + "name": "Afghanistan", + "dial_code": "+93", + "code": "AF" + }, + { + "name": "Aland Islands", + "dial_code": "+358", + "code": "AX" + }, + { + "name": "Albania", + "dial_code": "+355", + "code": "AL" + }, + { + "name": "Algeria", + "dial_code": "+213", + "code": "DZ" + }, + { + "name": "AmericanSamoa", + "dial_code": "+1684", + "code": "AS" + }, + { + "name": "Andorra", + "dial_code": "+376", + "code": "AD" + }, + { + "name": "Angola", + "dial_code": "+244", + "code": "AO" + }, + { + "name": "Anguilla", + "dial_code": "+1264", + "code": "AI" + }, + { + "name": "Antarctica", + "dial_code": "+672", + "code": "AQ" + }, + { + "name": "Antigua and Barbuda", + "dial_code": "+1268", + "code": "AG" + }, + { + "name": "Argentina", + "dial_code": "+54", + "code": "AR" + }, + { + "name": "Armenia", + "dial_code": "+374", + "code": "AM" + }, + { + "name": "Aruba", + "dial_code": "+297", + "code": "AW" + }, + { + "name": "Australia", + "dial_code": "+61", + "code": "AU" + }, + { + "name": "Austria", + "dial_code": "+43", + "code": "AT" + }, + { + "name": "Azerbaijan", + "dial_code": "+994", + "code": "AZ" + }, + { + "name": "Bahamas", + "dial_code": "+1242", + "code": "BS" + }, + { + "name": "Bahrain", + "dial_code": "+973", + "code": "BH" + }, + { + "name": "Bangladesh", + "dial_code": "+880", + "code": "BD" + }, + { + "name": "Barbados", + "dial_code": "+1246", + "code": "BB" + }, + { + "name": "Belarus", + "dial_code": "+375", + "code": "BY" + }, + { + "name": "Belgium", + "dial_code": "+32", + "code": "BE" + }, + { + "name": "Belize", + "dial_code": "+501", + "code": "BZ" + }, + { + "name": "Benin", + "dial_code": "+229", + "code": "BJ" + }, + { + "name": "Bermuda", + "dial_code": "+1441", + "code": "BM" + }, + { + "name": "Bhutan", + "dial_code": "+975", + "code": "BT" + }, + { + "name": "Bolivia, Plurinational State of", + "dial_code": "+591", + "code": "BO" + }, + { + "name": "Bosnia and Herzegovina", + "dial_code": "+387", + "code": "BA" + }, + { + "name": "Botswana", + "dial_code": "+267", + "code": "BW" + }, + { + "name": "Brazil", + "dial_code": "+55", + "code": "BR" + }, + { + "name": "British Indian Ocean Territory", + "dial_code": "+246", + "code": "IO" + }, + { + "name": "Brunei Darussalam", + "dial_code": "+673", + "code": "BN" + }, + { + "name": "Bulgaria", + "dial_code": "+359", + "code": "BG" + }, + { + "name": "Burkina Faso", + "dial_code": "+226", + "code": "BF" + }, + { + "name": "Burundi", + "dial_code": "+257", + "code": "BI" + }, + { + "name": "Cambodia", + "dial_code": "+855", + "code": "KH" + }, + { + "name": "Cameroon", + "dial_code": "+237", + "code": "CM" + }, + { + "name": "Canada", + "dial_code": "+1", + "code": "CA" + }, + { + "name": "Cape Verde", + "dial_code": "+238", + "code": "CV" + }, + { + "name": "Cayman Islands", + "dial_code": "+ 345", + "code": "KY" + }, + { + "name": "Central African Republic", + "dial_code": "+236", + "code": "CF" + }, + { + "name": "Chad", + "dial_code": "+235", + "code": "TD" + }, + { + "name": "Chile", + "dial_code": "+56", + "code": "CL" + }, + { + "name": "China", + "dial_code": "+86", + "code": "CN" + }, + { + "name": "Christmas Island", + "dial_code": "+61", + "code": "CX" + }, + { + "name": "Cocos (Keeling) Islands", + "dial_code": "+61", + "code": "CC" + }, + { + "name": "Colombia", + "dial_code": "+57", + "code": "CO" + }, + { + "name": "Comoros", + "dial_code": "+269", + "code": "KM" + }, + { + "name": "Congo", + "dial_code": "+242", + "code": "CG" + }, + { + "name": "Congo, The Democratic Republic of the Congo", + "dial_code": "+243", + "code": "CD" + }, + { + "name": "Cook Islands", + "dial_code": "+682", + "code": "CK" + }, + { + "name": "Costa Rica", + "dial_code": "+506", + "code": "CR" + }, + { + "name": "Cote d'Ivoire", + "dial_code": "+225", + "code": "CI" + }, + { + "name": "Croatia", + "dial_code": "+385", + "code": "HR" + }, + { + "name": "Cuba", + "dial_code": "+53", + "code": "CU" + }, + { + "name": "Cyprus", + "dial_code": "+357", + "code": "CY" + }, + { + "name": "Czech Republic", + "dial_code": "+420", + "code": "CZ" + }, + { + "name": "Denmark", + "dial_code": "+45", + "code": "DK" + }, + { + "name": "Djibouti", + "dial_code": "+253", + "code": "DJ" + }, + { + "name": "Dominica", + "dial_code": "+1767", + "code": "DM" + }, + { + "name": "Dominican Republic", + "dial_code": "+1849", + "code": "DO" + }, + { + "name": "Ecuador", + "dial_code": "+593", + "code": "EC" + }, + { + "name": "Egypt", + "dial_code": "+20", + "code": "EG" + }, + { + "name": "El Salvador", + "dial_code": "+503", + "code": "SV" + }, + { + "name": "Equatorial Guinea", + "dial_code": "+240", + "code": "GQ" + }, + { + "name": "Eritrea", + "dial_code": "+291", + "code": "ER" + }, + { + "name": "Estonia", + "dial_code": "+372", + "code": "EE" + }, + { + "name": "Ethiopia", + "dial_code": "+251", + "code": "ET" + }, + { + "name": "Falkland Islands (Malvinas)", + "dial_code": "+500", + "code": "FK" + }, + { + "name": "Faroe Islands", + "dial_code": "+298", + "code": "FO" + }, + { + "name": "Fiji", + "dial_code": "+679", + "code": "FJ" + }, + { + "name": "Finland", + "dial_code": "+358", + "code": "FI" + }, + { + "name": "France", + "dial_code": "+33", + "code": "FR" + }, + { + "name": "French Guiana", + "dial_code": "+594", + "code": "GF" + }, + { + "name": "French Polynesia", + "dial_code": "+689", + "code": "PF" + }, + { + "name": "Gabon", + "dial_code": "+241", + "code": "GA" + }, + { + "name": "Gambia", + "dial_code": "+220", + "code": "GM" + }, + { + "name": "Georgia", + "dial_code": "+995", + "code": "GE" + }, + { + "name": "Germany", + "dial_code": "+49", + "code": "DE" + }, + { + "name": "Ghana", + "dial_code": "+233", + "code": "GH" + }, + { + "name": "Gibraltar", + "dial_code": "+350", + "code": "GI" + }, + { + "name": "Greece", + "dial_code": "+30", + "code": "GR" + }, + { + "name": "Greenland", + "dial_code": "+299", + "code": "GL" + }, + { + "name": "Grenada", + "dial_code": "+1473", + "code": "GD" + }, + { + "name": "Guadeloupe", + "dial_code": "+590", + "code": "GP" + }, + { + "name": "Guam", + "dial_code": "+1671", + "code": "GU" + }, + { + "name": "Guatemala", + "dial_code": "+502", + "code": "GT" + }, + { + "name": "Guernsey", + "dial_code": "+44", + "code": "GG" + }, + { + "name": "Guinea", + "dial_code": "+224", + "code": "GN" + }, + { + "name": "Guinea-Bissau", + "dial_code": "+245", + "code": "GW" + }, + { + "name": "Guyana", + "dial_code": "+595", + "code": "GY" + }, + { + "name": "Haiti", + "dial_code": "+509", + "code": "HT" + }, + { + "name": "Holy See (Vatican City State)", + "dial_code": "+379", + "code": "VA" + }, + { + "name": "Honduras", + "dial_code": "+504", + "code": "HN" + }, + { + "name": "Hong Kong", + "dial_code": "+852", + "code": "HK" + }, + { + "name": "Hungary", + "dial_code": "+36", + "code": "HU" + }, + { + "name": "Iceland", + "dial_code": "+354", + "code": "IS" + }, + { + "name": "India", + "dial_code": "+91", + "code": "IN" + }, + { + "name": "Indonesia", + "dial_code": "+62", + "code": "ID" + }, + { + "name": "Iran, Islamic Republic of Persian Gulf", + "dial_code": "+98", + "code": "IR" + }, + { + "name": "Iraq", + "dial_code": "+964", + "code": "IQ" + }, + { + "name": "Ireland", + "dial_code": "+353", + "code": "IE" + }, + { + "name": "Isle of Man", + "dial_code": "+44", + "code": "IM" + }, + { + "name": "Israel", + "dial_code": "+972", + "code": "IL" + }, + { + "name": "Italy", + "dial_code": "+39", + "code": "IT" + }, + { + "name": "Jamaica", + "dial_code": "+1876", + "code": "JM" + }, + { + "name": "Japan", + "dial_code": "+81", + "code": "JP" + }, + { + "name": "Jersey", + "dial_code": "+44", + "code": "JE" + }, + { + "name": "Jordan", + "dial_code": "+962", + "code": "JO" + }, + { + "name": "Kazakhstan", + "dial_code": "+77", + "code": "KZ" + }, + { + "name": "Kenya", + "dial_code": "+254", + "code": "KE" + }, + { + "name": "Kiribati", + "dial_code": "+686", + "code": "KI" + }, + { + "name": "Korea, Democratic People's Republic of Korea", + "dial_code": "+850", + "code": "KP" + }, + { + "name": "Korea, Republic of South Korea", + "dial_code": "+82", + "code": "KR" + }, + { + "name": "Kuwait", + "dial_code": "+965", + "code": "KW" + }, + { + "name": "Kyrgyzstan", + "dial_code": "+996", + "code": "KG" + }, + { + "name": "Laos", + "dial_code": "+856", + "code": "LA" + }, + { + "name": "Latvia", + "dial_code": "+371", + "code": "LV" + }, + { + "name": "Lebanon", + "dial_code": "+961", + "code": "LB" + }, + { + "name": "Lesotho", + "dial_code": "+266", + "code": "LS" + }, + { + "name": "Liberia", + "dial_code": "+231", + "code": "LR" + }, + { + "name": "Libyan Arab Jamahiriya", + "dial_code": "+218", + "code": "LY" + }, + { + "name": "Liechtenstein", + "dial_code": "+423", + "code": "LI" + }, + { + "name": "Lithuania", + "dial_code": "+370", + "code": "LT" + }, + { + "name": "Luxembourg", + "dial_code": "+352", + "code": "LU" + }, + { + "name": "Macao", + "dial_code": "+853", + "code": "MO" + }, + { + "name": "Macedonia", + "dial_code": "+389", + "code": "MK" + }, + { + "name": "Madagascar", + "dial_code": "+261", + "code": "MG" + }, + { + "name": "Malawi", + "dial_code": "+265", + "code": "MW" + }, + { + "name": "Malaysia", + "dial_code": "+60", + "code": "MY" + }, + { + "name": "Maldives", + "dial_code": "+960", + "code": "MV" + }, + { + "name": "Mali", + "dial_code": "+223", + "code": "ML" + }, + { + "name": "Malta", + "dial_code": "+356", + "code": "MT" + }, + { + "name": "Marshall Islands", + "dial_code": "+692", + "code": "MH" + }, + { + "name": "Martinique", + "dial_code": "+596", + "code": "MQ" + }, + { + "name": "Mauritania", + "dial_code": "+222", + "code": "MR" + }, + { + "name": "Mauritius", + "dial_code": "+230", + "code": "MU" + }, + { + "name": "Mayotte", + "dial_code": "+262", + "code": "YT" + }, + { + "name": "Mexico", + "dial_code": "+52", + "code": "MX" + }, + { + "name": "Micronesia, Federated States of Micronesia", + "dial_code": "+691", + "code": "FM" + }, + { + "name": "Moldova", + "dial_code": "+373", + "code": "MD" + }, + { + "name": "Monaco", + "dial_code": "+377", + "code": "MC" + }, + { + "name": "Mongolia", + "dial_code": "+976", + "code": "MN" + }, + { + "name": "Montenegro", + "dial_code": "+382", + "code": "ME" + }, + { + "name": "Montserrat", + "dial_code": "+1664", + "code": "MS" + }, + { + "name": "Morocco", + "dial_code": "+212", + "code": "MA" + }, + { + "name": "Mozambique", + "dial_code": "+258", + "code": "MZ" + }, + { + "name": "Myanmar", + "dial_code": "+95", + "code": "MM" + }, + { + "name": "Namibia", + "dial_code": "+264", + "code": "NA" + }, + { + "name": "Nauru", + "dial_code": "+674", + "code": "NR" + }, + { + "name": "Nepal", + "dial_code": "+977", + "code": "NP" + }, + { + "name": "Netherlands", + "dial_code": "+31", + "code": "NL" + }, + { + "name": "Netherlands Antilles", + "dial_code": "+599", + "code": "AN" + }, + { + "name": "New Caledonia", + "dial_code": "+687", + "code": "NC" + }, + { + "name": "New Zealand", + "dial_code": "+64", + "code": "NZ" + }, + { + "name": "Nicaragua", + "dial_code": "+505", + "code": "NI" + }, + { + "name": "Niger", + "dial_code": "+227", + "code": "NE" + }, + { + "name": "Nigeria", + "dial_code": "+234", + "code": "NG" + }, + { + "name": "Niue", + "dial_code": "+683", + "code": "NU" + }, + { + "name": "Norfolk Island", + "dial_code": "+672", + "code": "NF" + }, + { + "name": "Northern Mariana Islands", + "dial_code": "+1670", + "code": "MP" + }, + { + "name": "Norway", + "dial_code": "+47", + "code": "NO" + }, + { + "name": "Oman", + "dial_code": "+968", + "code": "OM" + }, + { + "name": "Pakistan", + "dial_code": "+92", + "code": "PK" + }, + { + "name": "Palau", + "dial_code": "+680", + "code": "PW" + }, + { + "name": "Palestinian Territory, Occupied", + "dial_code": "+970", + "code": "PS" + }, + { + "name": "Panama", + "dial_code": "+507", + "code": "PA" + }, + { + "name": "Papua New Guinea", + "dial_code": "+675", + "code": "PG" + }, + { + "name": "Paraguay", + "dial_code": "+595", + "code": "PY" + }, + { + "name": "Peru", + "dial_code": "+51", + "code": "PE" + }, + { + "name": "Philippines", + "dial_code": "+63", + "code": "PH" + }, + { + "name": "Pitcairn", + "dial_code": "+872", + "code": "PN" + }, + { + "name": "Poland", + "dial_code": "+48", + "code": "PL" + }, + { + "name": "Portugal", + "dial_code": "+351", + "code": "PT" + }, + { + "name": "Puerto Rico", + "dial_code": "+1939", + "code": "PR" + }, + { + "name": "Qatar", + "dial_code": "+974", + "code": "QA" + }, + { + "name": "Romania", + "dial_code": "+40", + "code": "RO" + }, + { + "name": "Russia", + "dial_code": "+7", + "code": "RU" + }, + { + "name": "Rwanda", + "dial_code": "+250", + "code": "RW" + }, + { + "name": "Reunion", + "dial_code": "+262", + "code": "RE" + }, + { + "name": "Saint Barthelemy", + "dial_code": "+590", + "code": "BL" + }, + { + "name": "Saint Helena, Ascension and Tristan Da Cunha", + "dial_code": "+290", + "code": "SH" + }, + { + "name": "Saint Kitts and Nevis", + "dial_code": "+1869", + "code": "KN" + }, + { + "name": "Saint Lucia", + "dial_code": "+1758", + "code": "LC" + }, + { + "name": "Saint Martin", + "dial_code": "+590", + "code": "MF" + }, + { + "name": "Saint Pierre and Miquelon", + "dial_code": "+508", + "code": "PM" + }, + { + "name": "Saint Vincent and the Grenadines", + "dial_code": "+1784", + "code": "VC" + }, + { + "name": "Samoa", + "dial_code": "+685", + "code": "WS" + }, + { + "name": "San Marino", + "dial_code": "+378", + "code": "SM" + }, + { + "name": "Sao Tome and Principe", + "dial_code": "+239", + "code": "ST" + }, + { + "name": "Saudi Arabia", + "dial_code": "+966", + "code": "SA" + }, + { + "name": "Senegal", + "dial_code": "+221", + "code": "SN" + }, + { + "name": "Serbia", + "dial_code": "+381", + "code": "RS" + }, + { + "name": "Seychelles", + "dial_code": "+248", + "code": "SC" + }, + { + "name": "Sierra Leone", + "dial_code": "+232", + "code": "SL" + }, + { + "name": "Singapore", + "dial_code": "+65", + "code": "SG" + }, + { + "name": "Slovakia", + "dial_code": "+421", + "code": "SK" + }, + { + "name": "Slovenia", + "dial_code": "+386", + "code": "SI" + }, + { + "name": "Solomon Islands", + "dial_code": "+677", + "code": "SB" + }, + { + "name": "Somalia", + "dial_code": "+252", + "code": "SO" + }, + { + "name": "South Africa", + "dial_code": "+27", + "code": "ZA" + }, + { + "name": "South Sudan", + "dial_code": "+211", + "code": "SS" + }, + { + "name": "South Georgia and the South Sandwich Islands", + "dial_code": "+500", + "code": "GS" + }, + { + "name": "Spain", + "dial_code": "+34", + "code": "ES" + }, + { + "name": "Sri Lanka", + "dial_code": "+94", + "code": "LK" + }, + { + "name": "Sudan", + "dial_code": "+249", + "code": "SD" + }, + { + "name": "Suriname", + "dial_code": "+597", + "code": "SR" + }, + { + "name": "Svalbard and Jan Mayen", + "dial_code": "+47", + "code": "SJ" + }, + { + "name": "Swaziland", + "dial_code": "+268", + "code": "SZ" + }, + { + "name": "Sweden", + "dial_code": "+46", + "code": "SE" + }, + { + "name": "Switzerland", + "dial_code": "+41", + "code": "CH" + }, + { + "name": "Syrian Arab Republic", + "dial_code": "+963", + "code": "SY" + }, + { + "name": "Taiwan", + "dial_code": "+886", + "code": "TW" + }, + { + "name": "Tajikistan", + "dial_code": "+992", + "code": "TJ" + }, + { + "name": "Tanzania, United Republic of Tanzania", + "dial_code": "+255", + "code": "TZ" + }, + { + "name": "Thailand", + "dial_code": "+66", + "code": "TH" + }, + { + "name": "Timor-Leste", + "dial_code": "+670", + "code": "TL" + }, + { + "name": "Togo", + "dial_code": "+228", + "code": "TG" + }, + { + "name": "Tokelau", + "dial_code": "+690", + "code": "TK" + }, + { + "name": "Tonga", + "dial_code": "+676", + "code": "TO" + }, + { + "name": "Trinidad and Tobago", + "dial_code": "+1868", + "code": "TT" + }, + { + "name": "Tunisia", + "dial_code": "+216", + "code": "TN" + }, + { + "name": "Turkey", + "dial_code": "+90", + "code": "TR" + }, + { + "name": "Turkmenistan", + "dial_code": "+993", + "code": "TM" + }, + { + "name": "Turks and Caicos Islands", + "dial_code": "+1649", + "code": "TC" + }, + { + "name": "Tuvalu", + "dial_code": "+688", + "code": "TV" + }, + { + "name": "Uganda", + "dial_code": "+256", + "code": "UG" + }, + { + "name": "Ukraine", + "dial_code": "+380", + "code": "UA" + }, + { + "name": "United Arab Emirates", + "dial_code": "+971", + "code": "AE" + }, + { + "name": "United Kingdom", + "dial_code": "+44", + "code": "GB" + }, + { + "name": "United States", + "dial_code": "+1", + "code": "US" + }, + { + "name": "Uruguay", + "dial_code": "+598", + "code": "UY" + }, + { + "name": "Uzbekistan", + "dial_code": "+998", + "code": "UZ" + }, + { + "name": "Vanuatu", + "dial_code": "+678", + "code": "VU" + }, + { + "name": "Venezuela, Bolivarian Republic of Venezuela", + "dial_code": "+58", + "code": "VE" + }, + { + "name": "Vietnam", + "dial_code": "+84", + "code": "VN" + }, + { + "name": "Virgin Islands, British", + "dial_code": "+1284", + "code": "VG" + }, + { + "name": "Virgin Islands, U.S.", + "dial_code": "+1340", + "code": "VI" + }, + { + "name": "Wallis and Futuna", + "dial_code": "+681", + "code": "WF" + }, + { + "name": "Yemen", + "dial_code": "+967", + "code": "YE" + }, + { + "name": "Zambia", + "dial_code": "+260", + "code": "ZM" + }, + { + "name": "Zimbabwe", + "dial_code": "+263", + "code": "ZW" + } +]; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL2NvZGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUNILE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRztJQUMxQixJQUFJLEVBQUU7UUFDRixNQUFNLEVBQUUsUUFBUTtRQUNoQixZQUFZLEVBQUUsT0FBTztLQUN4QjtJQUNELElBQUksRUFBRTtRQUNGLE1BQU0sRUFBRSxNQUFNO1FBQ2QsWUFBWSxFQUFFLFFBQVE7S0FDekI7SUFDRCxJQUFJLEVBQUU7UUFDRixNQUFNLEVBQUUsV0FBVztRQUNuQixZQUFZLEVBQUUsV0FBVztLQUM1QjtJQUNELElBQUksRUFBRTtRQUNGLE1BQU0sRUFBRSxNQUFNO1FBQ2QsWUFBWSxFQUFFLE1BQU07S0FDdkI7SUFDRCxJQUFJLEVBQUU7UUFDRixNQUFNLEVBQUUsVUFBVTtRQUNsQixZQUFZLEVBQUUsT0FBTztLQUN4QjtJQUNELElBQUksRUFBRTtRQUNGLE1BQU0sRUFBRSxTQUFTO1FBQ2pCLFlBQVksRUFBRSxNQUFNO0tBQ3ZCO0lBQ0QsSUFBSSxFQUFFO1FBQ0YsTUFBTSxFQUFFLFFBQVE7UUFDaEIsWUFBWSxFQUFFLFNBQVM7S0FDMUI7SUFDRCxJQUFJLEVBQUU7UUFDRixNQUFNLEVBQUUsV0FBVztRQUNuQixZQUFZLEVBQUUsVUFBVTtLQUMzQjtJQUNELElBQUksRUFBRTtRQUNGLE1BQU0sRUFBRSxVQUFVO1FBQ2xCLFlBQVksRUFBRSxTQUFTO0tBQzFCO0lBQ0QsSUFBSSxFQUFFO1FBQ0YsTUFBTSxFQUFFLFVBQVU7UUFDbEIsWUFBWSxFQUFFLFNBQVM7S0FDMUI7SUFDRCxJQUFJLEVBQUU7UUFDRixNQUFNLEVBQUUsUUFBUTtRQUNoQixZQUFZLEVBQUUsMEJBQTBCO0tBQzNDO0lBQ0QsSUFBSSxFQUFFO1FBQ0YsTUFBTSxFQUFFLFNBQVM7UUFDakIsWUFBWSxFQUFFLFFBQVE7S0FDekI7SUFD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 \ No newline at end of file diff --git a/packages/i18n/dist/lib/deepl.d.ts b/packages/i18n/dist/lib/deepl.d.ts index b41b66cd..527f8b65 100644 --- a/packages/i18n/dist/lib/deepl.d.ts +++ b/packages/i18n/dist/lib/deepl.d.ts @@ -1,37 +1,37 @@ -export interface IGlossary { - glossaryId: string; - name: string; - ready: boolean; - sourceLang: DeepLLanguages; - targetLang: DeepLLanguages; - creationTime: string; - entryCount: number; - entries: string; - hash: string; -} -export interface IDeepLOptions { - free_api: Boolean; - auth_key: string; - text: string; - source_lang?: DeepLLanguages; - target_lang: DeepLLanguages; - split_sentences?: '0' | '1' | 'nonewlines'; - preserve_formatting?: '0' | '1'; - formality?: 'default' | 'more' | 'less'; - tag_handling?: string[]; - non_splitting_tags?: string[]; - outline_detection?: string; - splitting_tags?: string[]; - ignore_tags?: string[]; - glossary_id?: string; -} -export interface IDeepLResponse { - translations: { - detected_source_language: string; - text: string; - }[]; -} -export declare const translate_deeplT: (parameters: IDeepLOptions) => Promise; -export declare const translate_deepl: (parameters: IDeepLOptions) => Promise; -export declare const create_glossary: (parameters: IDeepLOptions) => Promise; -export type DeepLLanguages = 'BG' | 'CS' | 'DA' | 'DE' | 'EL' | 'EN-GB' | 'EN-US' | 'EN' | 'ES' | 'ET' | 'FI' | 'FR' | 'HU' | 'IT' | 'JA' | 'LT' | 'LV' | 'NL' | 'PL' | 'PT-PT' | 'PT-BR' | 'PT' | 'RO' | 'RU' | 'SK' | 'SL' | 'SV' | 'ZH'; +export interface IGlossary { + glossaryId: string; + name: string; + ready: boolean; + sourceLang: DeepLLanguages; + targetLang: DeepLLanguages; + creationTime: string; + entryCount: number; + entries: string; + hash: string; +} +export interface IDeepLOptions { + free_api: Boolean; + auth_key: string; + text: string; + source_lang?: DeepLLanguages; + target_lang: DeepLLanguages; + split_sentences?: '0' | '1' | 'nonewlines'; + preserve_formatting?: '0' | '1'; + formality?: 'default' | 'more' | 'less'; + tag_handling?: string[]; + non_splitting_tags?: string[]; + outline_detection?: string; + splitting_tags?: string[]; + ignore_tags?: string[]; + glossary_id?: string; +} +export interface IDeepLResponse { + translations: { + detected_source_language: string; + text: string; + }[]; +} +export declare const translate_deeplT: (parameters: IDeepLOptions) => Promise; +export declare const translate_deepl: (parameters: IDeepLOptions) => Promise; +export declare const create_glossary: (parameters: IDeepLOptions) => Promise; +export type DeepLLanguages = 'BG' | 'CS' | 'DA' | 'DE' | 'EL' | 'EN-GB' | 'EN-US' | 'EN' | 'ES' | 'ET' | 'FI' | 'FR' | 'HU' | 'IT' | 'JA' | 'LT' | 'LV' | 'NL' | 'PL' | 'PT-PT' | 'PT-BR' | 'PT' | 'RO' | 'RU' | 'SK' | 'SL' | 'SV' | 'ZH'; diff --git a/packages/i18n/dist/lib/deepl.js b/packages/i18n/dist/lib/deepl.js index 237288d0..318afa16 100644 --- a/packages/i18n/dist/lib/deepl.js +++ b/packages/i18n/dist/lib/deepl.js @@ -1,53 +1,44 @@ -//import axios, { AxiosError} from 'axios'; -import { stringify } from 'querystring'; -import { default as axios } from 'axios'; -export const translate_deeplT = async (parameters) => { - // const sub_domain = parameters.free_api ? 'api-free' : 'api'; - try { - const params = "preserve_formatting=1&tag_handling=xml&auth_key=4f6441ab-8e09-48d3-9031-3ca5cd463f79&formality=default&free_api=false&text=Variant&target_lang=de&source_lang=en"; - const ret = axios(`https://api.deepl.com/v2/translate`, params); - return ret; - // return (ret as any).data - /* - const ret = await axios.post( - `https://${sub_domain}.deepl.com/v2/translate`, - params, {}) as any - return (ret as any).data - */ - } - catch (error) { - console.error(error.message); - } -}; -export const translate_deepl = async (parameters) => { - const sub_domain = parameters.free_api ? 'api-free' : 'api'; - try { - let params = stringify(parameters); - return axios.post(`https://${sub_domain}.deepl.com/v2/translate`, params, {}); - // return (ret as any).data - /* - const ret = await axios.post( - `https://${sub_domain}.deepl.com/v2/translate`, - params, {}) as any - return (ret as any).data - */ - } - catch (error) { - console.error('error : translate_deepl', error.message); - //console.error(error.message) - } -}; -export const create_glossary = async (parameters) => { - const sub_domain = parameters.free_api ? 'api-free' : 'api'; - try { - const params = stringify(parameters); - "auth_key=34dbf59f-adeb-1959-d906-502e0ec6afb8&free_api=false&name=pp&target_lang=DE&source_lang=EN&entries=Mould%2CKunststoffform%0D%0AShredder%2CGranulator%0D%0A&entries_format=csv"; - const ret = await axios.post(`https://${sub_domain}.deepl.com/v2/glossaries`, params); - return ret.data; - } - catch (error) { - //@todo : never called - console.error(error.response.data); - } -}; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVlcGwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL2RlZXBsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDJDQUEyQztBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQ3ZDLE9BQU8sRUFBRSxPQUFPLElBQUksS0FBSyxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBeUN6QyxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxLQUFLLEVBQ2pDLFVBQXlCLEVBQzNCLEVBQUU7SUFDQSwrREFBK0Q7SUFDL0QsSUFBSTtRQUNBLE1BQU0sTUFBTSxHQUFHLGtLQUFrSyxDQUFBO1FBQ2pMLE1BQU0sR0FBRyxHQUFJLEtBQUssQ0FDZCxvQ0FBb0MsRUFDcEMsTUFBYSxDQUFRLENBQUE7UUFFekIsT0FBTyxHQUFHLENBQUE7UUFDViwyQkFBMkI7UUFDbkM7Ozs7O2tCQUtVO0tBQ0w7SUFBQyxPQUFPLEtBQUssRUFBRTtRQUNaLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFBO0tBQy9CO0FBQ0wsQ0FBQyxDQUFBO0FBQ0QsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLEtBQUssRUFDaEMsVUFBeUIsRUFDM0IsRUFBRTtJQUNBLE1BQU0sVUFBVSxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQzVELElBQUk7UUFDQSxJQUFJLE1BQU0sR0FBRyxTQUFTLENBQUMsVUFBaUIsQ0FBQyxDQUFBO1FBQ3pDLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FDYixXQUFXLFVBQVUseUJBQXlCLEVBQzlDLE1BQU0sRUFBRSxFQUFFLENBQVEsQ0FBQTtRQUN0QiwyQkFBMkI7UUFDbkM7Ozs7O2tCQUtVO0tBQ0w7SUFBQyxPQUFPLEtBQUssRUFBRTtRQUNaLE9BQU8sQ0FBQyxLQUFLLENBQUMseUJBQXlCLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBQ3ZELDhCQUE4QjtLQUNqQztBQUNMLENBQUMsQ0FBQTtBQUVELE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxLQUFLLEVBQ2hDLFVBQXlCLEVBQzNCLEVBQUU7SUFDQSxNQUFNLFVBQVUsR0FBRyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQTtJQUMzRCxJQUFJO1FBQ0EsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLFVBQWlCLENBQUMsQ0FBQTtRQUMzQyx1TEFBdUwsQ0FBQTtRQUN2TCxNQUFNLEdBQUcsR0FBRyxNQUFPLEtBQUssQ0FBQyxJQUFJLENBQ3pCLFdBQVcsVUFBVSwwQkFBMEIsRUFDL0MsTUFBTSxDQUFTLENBQUE7UUFFbkIsT0FBUSxHQUFXLENBQUMsSUFBSSxDQUFBO0tBRTNCO0lBQUMsT0FBTyxLQUFLLEVBQUU7UUFDWixzQkFBc0I7UUFDdEIsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFBO0tBQ3JDO0FBQ0wsQ0FBQyxDQUFBIn0= \ No newline at end of file +import { stringify } from 'querystring'; +import { default as axios } from 'axios'; +export const translate_deeplT = async (parameters) => { + try { + const params = "preserve_formatting=1&tag_handling=xml&auth_key=4f6441ab-8e09-48d3-9031-3ca5cd463f79&formality=default&free_api=false&text=Variant&target_lang=de&source_lang=en"; + const ret = axios(`https://api.deepl.com/v2/translate`, params); + return ret; + } + catch (error) { + console.error(error.message); + } +}; +export const translate_deepl = async (parameters) => { + const sub_domain = parameters.free_api ? 'api-free' : 'api'; + try { + let params = stringify(parameters); + return axios.post(`https://${sub_domain}.deepl.com/v2/translate`, params, {}); + // return (ret as any).data + /* + const ret = await axios.post( + `https://${sub_domain}.deepl.com/v2/translate`, + params, {}) as any + return (ret as any).data + */ + } + catch (error) { + console.error('error : translate_deepl', error.message); + //console.error(error.message) + } +}; +export const create_glossary = async (parameters) => { + const sub_domain = parameters.free_api ? 'api-free' : 'api'; + try { + const params = stringify(parameters); + "auth_key=34dbf59f-adeb-1959-d906-502e0ec6afb8&free_api=false&name=pp&target_lang=DE&source_lang=EN&entries=Mould%2CKunststoffform%0D%0AShredder%2CGranulator%0D%0A&entries_format=csv"; + const ret = await axios.post(`https://${sub_domain}.deepl.com/v2/glossaries`, params); + return ret.data; + } + catch (error) { + //@todo : never called + console.error(error.response.data); + } +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVlcGwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL2RlZXBsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFDdkMsT0FBTyxFQUFFLE9BQU8sSUFBSSxLQUFLLEVBQUUsTUFBTSxPQUFPLENBQUE7QUF5Q3hDLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLEtBQUssRUFDakMsVUFBeUIsRUFDM0IsRUFBRTtJQUNBLElBQUksQ0FBQztRQUNELE1BQU0sTUFBTSxHQUFHLGtLQUFrSyxDQUFBO1FBQ2pMLE1BQU0sR0FBRyxHQUFJLEtBQUssQ0FDZCxvQ0FBb0MsRUFDcEMsTUFBYSxDQUFRLENBQUE7UUFDekIsT0FBTyxHQUFHLENBQUE7SUFDZCxDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNiLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQ2hDLENBQUM7QUFDTCxDQUFDLENBQUE7QUFDRCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsS0FBSyxFQUNoQyxVQUF5QixFQUMzQixFQUFFO0lBQ0EsTUFBTSxVQUFVLEdBQUcsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDNUQsSUFBSSxDQUFDO1FBQ0QsSUFBSSxNQUFNLEdBQUcsU0FBUyxDQUFDLFVBQWlCLENBQUMsQ0FBQTtRQUN6QyxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQ2IsV0FBVyxVQUFVLHlCQUF5QixFQUM5QyxNQUFNLEVBQUUsRUFBRSxDQUFRLENBQUE7UUFDdEIsMkJBQTJCO1FBQ25DOzs7OztrQkFLVTtJQUNOLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2IsT0FBTyxDQUFDLEtBQUssQ0FBQyx5QkFBeUIsRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDdkQsOEJBQThCO0lBQ2xDLENBQUM7QUFDTCxDQUFDLENBQUE7QUFFRCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsS0FBSyxFQUNoQyxVQUF5QixFQUMzQixFQUFFO0lBQ0EsTUFBTSxVQUFVLEdBQUcsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUE7SUFDM0QsSUFBSSxDQUFDO1FBQ0QsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLFVBQWlCLENBQUMsQ0FBQTtRQUMzQyx1TEFBdUwsQ0FBQTtRQUN2TCxNQUFNLEdBQUcsR0FBRyxNQUFPLEtBQUssQ0FBQyxJQUFJLENBQ3pCLFdBQVcsVUFBVSwwQkFBMEIsRUFDL0MsTUFBTSxDQUFTLENBQUE7UUFFbkIsT0FBUSxHQUFXLENBQUMsSUFBSSxDQUFBO0lBRTVCLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2Isc0JBQXNCO1FBQ3RCLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUN0QyxDQUFDO0FBQ0wsQ0FBQyxDQUFBIn0= \ No newline at end of file diff --git a/packages/i18n/dist/lib/filters.d.ts b/packages/i18n/dist/lib/filters.d.ts index be5bfa85..d7e91bc4 100644 --- a/packages/i18n/dist/lib/filters.d.ts +++ b/packages/i18n/dist/lib/filters.d.ts @@ -1 +1 @@ -export declare const Filters: {}; +export declare const Filters: {}; diff --git a/packages/i18n/dist/lib/filters.js b/packages/i18n/dist/lib/filters.js index 29d51d52..6ed4f869 100644 --- a/packages/i18n/dist/lib/filters.js +++ b/packages/i18n/dist/lib/filters.js @@ -1,2 +1,2 @@ -export const Filters = {}; +export const Filters = {}; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvZmlsdGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsRUFFdEIsQ0FBQSJ9 \ No newline at end of file diff --git a/packages/i18n/dist/lib/glossary.d.ts b/packages/i18n/dist/lib/glossary.d.ts index 56ec4936..ec89c378 100644 --- a/packages/i18n/dist/lib/glossary.d.ts +++ b/packages/i18n/dist/lib/glossary.d.ts @@ -1,16 +1,15 @@ -import * as deeplN from 'deepl-node'; -import * as deepl from './deepl.js'; -import { IOptions } from '../types.js'; -export declare const name: (srcLang: any, dstLang: any) => string; -export declare const glossaryMetaPath: (storeRoot: any, srcLang: any, dstLang: any) => string; -export declare const glossaryPath: (storeRoot: any, srcLang: any, dstLang: any) => string; -export declare const meta: (storeRoot: string, srcLang: string, dstLang: string) => deepl.IGlossary | null; -export declare const data: (storeRoot: string, srcLang: string, dstLang: string) => string | null; -export declare const hash: (storeRoot: string, srcLang: string, dstLang: string) => string; -export declare const update_hash: (storeRoot: string, srcLang: string, dstLang: string) => void; -export declare const id2: (options: IOptions, dOptions: deepl.IDeepLOptions, storeRoot: string, srcLang: string, dstLang: string) => Promise; -export declare const create: (srcLang: string, dstLang: string, options: IOptions) => Promise; -export declare const pairs: (dOptions: deepl.IDeepLOptions, file: string) => Promise; -export declare const update: (srcLang: string, dstLang: string, options: IOptions) => Promise; -export declare const id: (root: string) => string; -export declare const _data: (storeRoot: string, srcLang: string, dstLang: string) => any; +import * as deeplN from 'deepl-node'; +import * as deepl from './deepl.js'; +import { IOptions } from '../types.js'; +export declare const name: (srcLang: any, dstLang: any) => string; +export declare const glossaryMetaPath: (storeRoot: any, srcLang: any, dstLang: any) => string; +export declare const glossaryPath: (storeRoot: any, srcLang: any, dstLang: any) => string; +export declare const meta: (storeRoot: string, srcLang: string, dstLang: string) => deepl.IGlossary | null; +export declare const data: (storeRoot: string, srcLang: string, dstLang: string) => string | null; +export declare const hash: (storeRoot: string, srcLang: string, dstLang: string) => string; +export declare const update_hash: (storeRoot: string, srcLang: string, dstLang: string) => void; +export declare const create: (srcLang: string, dstLang: string, options: IOptions) => Promise; +export declare const pairs: (dOptions: deepl.IDeepLOptions, file: string) => Promise; +export declare const update: (srcLang: string, dstLang: string, options: IOptions) => Promise; +export declare const id: (root: string) => string; +export declare const _data: (storeRoot: string, srcLang: string, dstLang: string) => any; diff --git a/packages/i18n/dist/lib/glossary.js b/packages/i18n/dist/lib/glossary.js index 7a31f687..1a29207b 100644 --- a/packages/i18n/dist/lib/glossary.js +++ b/packages/i18n/dist/lib/glossary.js @@ -1,101 +1,98 @@ -import * as path from 'path'; -import * as deeplN from 'deepl-node'; -import { isFile, resolve } from "@polymech/commons"; -import { sync as read } from "@polymech/fs/read"; -import { sync as exists } from "@polymech/fs/exists"; -import { sync as write } from "@polymech/fs/write"; -import { GLOSSARY_INFO_FILE, GLOSSARY_FILE_NAME } from '../constants.js'; -import { hash as md5 } from './strings.js'; -import { logger } from '../index.js'; -export const name = (srcLang, dstLang) => `OSR-${srcLang}-${dstLang}`; -export const glossaryMetaPath = (storeRoot, srcLang, dstLang) => path.resolve(resolve(`${storeRoot}/glossary/${srcLang}/${dstLang}/${GLOSSARY_INFO_FILE}`)); -export const glossaryPath = (storeRoot, srcLang, dstLang) => path.resolve(resolve(`${storeRoot}/glossary/${srcLang}/${dstLang}/${GLOSSARY_FILE_NAME}`)); -export const meta = (storeRoot, srcLang, dstLang) => { - const filePath = glossaryMetaPath(storeRoot, srcLang, dstLang); - if (exists(filePath)) { - return read(filePath, 'json'); - } - return null; -}; -export const data = (storeRoot, srcLang, dstLang) => { - const filePath = glossaryPath(storeRoot, srcLang, dstLang); - if (exists(filePath)) { - return read(filePath, 'string'); - } - return null; -}; -export const hash = (storeRoot, srcLang, dstLang) => { - const _data = data(storeRoot, srcLang, dstLang); - return _data ? md5(JSON.stringify(_data)) : null; -}; -export const update_hash = (storeRoot, srcLang, dstLang) => { - const glossary_meta = glossaryMetaPath(storeRoot, srcLang, dstLang); - const glossary = meta(storeRoot, srcLang, dstLang); - if (glossary) { - glossary.hash = hash(storeRoot, srcLang, dstLang); - write(glossary_meta, glossary); - } -}; -export const id2 = async (options, dOptions, storeRoot, srcLang, dstLang) => { - return meta(storeRoot, srcLang, dstLang)?.glossaryId; -}; -export const create = async (srcLang = 'EN', dstLang = 'DE', options) => { - const _name = name(srcLang, dstLang); - const translator = new deeplN.Translator(options.api_key); - const glossary_meta_path = glossaryMetaPath(options.storeRoot, srcLang, dstLang); - const glossary_data_path = glossaryPath(options.storeRoot, srcLang, dstLang); - const glossary_meta = meta(options.storeRoot, srcLang, dstLang); - if (!exists(glossary_data_path)) { - write(glossary_data_path, 'TEST,TEST'); - } - if (exists(glossary_meta_path) && glossary_meta && glossary_meta.glossaryId) { - try { - await translator.deleteGlossary(glossary_meta.glossaryId); - } - catch (e) { - logger.warn('Delete glossary failed:', _name, e.message); - } - } - const ret = await translator.createGlossaryWithCsv(_name, srcLang, dstLang, glossary_data_path); - if (!ret) { - logger.error('Create glossary failed', glossary_data_path, options); - return null; - } - write(glossary_meta_path, ret); - update_hash(options.storeRoot, srcLang, dstLang); - return ret; -}; -export const pairs = async (dOptions, file) => { - const translator = new deeplN.Translator(dOptions.auth_key); - const ret = await translator.getGlossaryLanguagePairs(); - logger.info('Supported glossary pairs', ret); - write(file, ret); - return ret; -}; -export const update = async (srcLang, dstLang, options) => { - const metaPath = glossaryMetaPath(options.storeRoot, srcLang, dstLang); - const dataPath = glossaryPath(options.storeRoot, srcLang, dstLang); - let glossaryMeta = meta(options.storeRoot, srcLang, dstLang); - if (!glossaryMeta || !exists(metaPath) || !exists(dataPath)) { - glossaryMeta = await create(srcLang, dstLang, options); - return glossaryMeta; - } - if (glossaryMeta.hash !== hash(options.storeRoot, srcLang, dstLang)) { - glossaryMeta = await create(srcLang, dstLang, options); - } - return glossaryMeta; -}; -export const id = (root) => { - root = path.resolve(resolve(root)); - if (exists(root) && isFile(root)) { - return (read(root, 'json') || {}).glossaryId; - } -}; -export const _data = (storeRoot, srcLang, dstLang) => { - storeRoot = path.resolve(resolve(storeRoot)); - if (!id(storeRoot)) { - const filePath = glossaryMetaPath(storeRoot, srcLang, dstLang); - return read(filePath, 'string'); - } -}; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xvc3NhcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL2dsb3NzYXJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFBO0FBQzVCLE9BQU8sS0FBSyxNQUFNLE1BQU0sWUFBWSxDQUFBO0FBQ3BDLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDbkQsT0FBTyxFQUFFLElBQUksSUFBSSxJQUFJLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUNoRCxPQUFPLEVBQUUsSUFBSSxJQUFJLE1BQU0sRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBR3BELE9BQU8sRUFBRSxJQUFJLElBQUksS0FBSyxFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFDbEQsT0FBTyxFQUNILGtCQUFrQixFQUNsQixrQkFBa0IsRUFDckIsTUFBTSxpQkFBaUIsQ0FBQTtBQUd4QixPQUFPLEVBQUUsSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUMxQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBRXBDLE1BQU0sQ0FBQyxNQUFNLElBQUksR0FBRyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sT0FBTyxJQUFJLE9BQU8sRUFBRSxDQUFBO0FBRXJFLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLENBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUM1RCxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLFNBQVMsYUFBYSxPQUFPLElBQUksT0FBTyxJQUFJLGtCQUFrQixFQUFFLENBQUMsQ0FBQyxDQUFBO0FBRTlGLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FDeEQsSUFBSSxDQUFD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 \ No newline at end of file +import * as path from 'path'; +import * as deeplN from 'deepl-node'; +import { isFile, resolve } from "@polymech/commons"; +import { sync as read } from "@polymech/fs/read"; +import { sync as exists } from "@polymech/fs/exists"; +import { sync as write } from "@polymech/fs/write"; +import { GLOSSARY_INFO_FILE, GLOSSARY_FILE_NAME } from '../constants.js'; +import { hash as md5 } from './strings.js'; +import { logger } from '../index.js'; +export const name = (srcLang, dstLang) => `OSR-${srcLang}-${dstLang}`; +export const glossaryMetaPath = (storeRoot, srcLang, dstLang) => path.resolve(resolve(`${storeRoot}/glossary/${srcLang}/${dstLang}/${GLOSSARY_INFO_FILE}`)); +export const glossaryPath = (storeRoot, srcLang, dstLang) => path.resolve(resolve(`${storeRoot}/glossary/${srcLang}/${dstLang}/${GLOSSARY_FILE_NAME}`)); +export const meta = (storeRoot, srcLang, dstLang) => { + const filePath = glossaryMetaPath(storeRoot, srcLang, dstLang); + if (exists(filePath)) { + return read(filePath, 'json'); + } + return null; +}; +export const data = (storeRoot, srcLang, dstLang) => { + const filePath = glossaryPath(storeRoot, srcLang, dstLang); + if (exists(filePath)) { + return read(filePath, 'string'); + } + return null; +}; +export const hash = (storeRoot, srcLang, dstLang) => { + const _data = data(storeRoot, srcLang, dstLang); + return _data ? md5(JSON.stringify(_data)) : null; +}; +export const update_hash = (storeRoot, srcLang, dstLang) => { + const glossary_meta = glossaryMetaPath(storeRoot, srcLang, dstLang); + const glossary = meta(storeRoot, srcLang, dstLang); + if (glossary) { + glossary.hash = hash(storeRoot, srcLang, dstLang); + write(glossary_meta, glossary); + } +}; +export const create = async (srcLang = 'EN', dstLang = 'DE', options) => { + const _name = name(srcLang, dstLang); + const translator = new deeplN.Translator(options.api_key); + const glossary_meta_path = glossaryMetaPath(options.storeRoot, srcLang, dstLang); + const glossary_data_path = glossaryPath(options.storeRoot, srcLang, dstLang); + const glossary_meta = meta(options.storeRoot, srcLang, dstLang); + if (!exists(glossary_data_path)) { + write(glossary_data_path, 'TEST,TEST'); + } + if (exists(glossary_meta_path) && glossary_meta && glossary_meta.glossaryId) { + try { + await translator.deleteGlossary(glossary_meta.glossaryId); + } + catch (e) { + logger.warn('Delete glossary failed:', _name, e.message); + } + } + const ret = await translator.createGlossaryWithCsv(_name, srcLang, dstLang, glossary_data_path); + if (!ret) { + logger.error('Create glossary failed', glossary_data_path, options); + return null; + } + write(glossary_meta_path, ret); + update_hash(options.storeRoot, srcLang, dstLang); + return ret; +}; +export const pairs = async (dOptions, file) => { + const translator = new deeplN.Translator(dOptions.auth_key); + const ret = await translator.getGlossaryLanguagePairs(); + logger.info('Supported glossary pairs', ret); + write(file, ret); + return ret; +}; +export const update = async (srcLang, dstLang, options) => { + const metaPath = glossaryMetaPath(options.storeRoot, srcLang, dstLang); + const dataPath = glossaryPath(options.storeRoot, srcLang, dstLang); + let glossaryMeta = meta(options.storeRoot, srcLang, dstLang); + if (!glossaryMeta || !exists(metaPath) || !exists(dataPath)) { + glossaryMeta = await create(srcLang, dstLang, options); + return glossaryMeta; + } + if (glossaryMeta.hash !== hash(options.storeRoot, srcLang, dstLang)) { + glossaryMeta = await create(srcLang, dstLang, options); + } + return glossaryMeta; +}; +export const id = (root) => { + root = path.resolve(resolve(root)); + if (exists(root) && isFile(root)) { + return (read(root, 'json') || {}).glossaryId; + } +}; +export const _data = (storeRoot, srcLang, dstLang) => { + storeRoot = path.resolve(resolve(storeRoot)); + if (!id(storeRoot)) { + const filePath = glossaryMetaPath(storeRoot, srcLang, dstLang); + return read(filePath, 'string'); + } +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xvc3NhcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL2dsb3NzYXJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFBO0FBQzVCLE9BQU8sS0FBSyxNQUFNLE1BQU0sWUFBWSxDQUFBO0FBRXBDLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDbkQsT0FBTyxFQUFFLElBQUksSUFBSSxJQUFJLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUNoRCxPQUFPLEVBQUUsSUFBSSxJQUFJLE1BQU0sRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBRXBELE9BQU8sRUFBRSxJQUFJLElBQUksS0FBSyxFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFFbEQsT0FBTyxFQUNILGtCQUFrQixFQUNsQixrQkFBa0IsRUFDckIsTUFBTSxpQkFBaUIsQ0FBQTtBQUd4QixPQUFPLEVBQUUsSUFBSSxJQUFJLEdBQUcsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUMxQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBRXBDLE1BQU0sQ0FBQyxNQUFNLElBQUksR0FBRyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sT0FBTyxJQUFJLE9BQU8sRUFBRSxDQUFBO0FBRXJFLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLENBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUM1RCxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLFNBQVMsYUFBYSxPQUFPLElBQUksT0FBTyxJQUFJLGtCQUFrQixFQUFFLENBQUMsQ0FBQyxDQUFBO0FBRTlGLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FDeEQsSUFBSSxDQUFD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QUksQ0FBQyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQy9CLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBd0IsSUFBSSxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUE7SUFDdkUsQ0FBQztBQUNMLENBQUMsQ0FBQTtBQUNELE1BQU0sQ0FBQyxNQUFNLEtBQUssR0FBRyxDQUFDLFNBQWlCLEVBQUUsT0FBZSxFQUFFLE9BQWUsRUFBTyxFQUFFO0lBQzlFLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFBO0lBQzVDLElBQUksQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztRQUNqQixNQUFNLFFBQVEsR0FBRyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFBO1FBQzlELE9BQU8sSUFBSSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQTtJQUNuQyxDQUFDO0FBQ0wsQ0FBQyxDQUFBIn0= \ No newline at end of file diff --git a/packages/i18n/dist/lib/index.d.ts b/packages/i18n/dist/lib/index.d.ts index 26991371..4a0772a5 100644 --- a/packages/i18n/dist/lib/index.d.ts +++ b/packages/i18n/dist/lib/index.d.ts @@ -1,5 +1,5 @@ -export * from './deepl.js'; -export * from './codes.js'; -export * from './filters.js'; -export * from './store.js'; -export * from './translate.js'; +export * from './deepl.js'; +export * from './codes.js'; +export * from './filters.js'; +export * from './store.js'; +export * from './translate.js'; diff --git a/packages/i18n/dist/lib/index.js b/packages/i18n/dist/lib/index.js index 36d41c47..a84636d2 100644 --- a/packages/i18n/dist/lib/index.js +++ b/packages/i18n/dist/lib/index.js @@ -1,6 +1,6 @@ -export * from './deepl.js'; -export * from './codes.js'; -export * from './filters.js'; -export * from './store.js'; -export * from './translate.js'; +export * from './deepl.js'; +export * from './codes.js'; +export * from './filters.js'; +export * from './store.js'; +export * from './translate.js'; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsWUFBWSxDQUFBO0FBQzFCLGNBQWMsWUFBWSxDQUFBO0FBQzFCLGNBQWMsY0FBYyxDQUFBO0FBQzVCLGNBQWMsWUFBWSxDQUFBO0FBQzFCLGNBQWMsZ0JBQWdCLENBQUEifQ== \ No newline at end of file diff --git a/packages/i18n/dist/lib/store.d.ts b/packages/i18n/dist/lib/store.d.ts index e6964b0f..bed29422 100644 --- a/packages/i18n/dist/lib/store.d.ts +++ b/packages/i18n/dist/lib/store.d.ts @@ -1,3 +1,3 @@ -export declare const sortObjectKeysAlpha: (obj: Record) => Record; -export declare const store: (storePath: string, text: string, translation: string, options?: any) => string; -export declare const get: (storePath: string, text: string, options?: any) => any; +export declare const sortObjectKeysAlpha: (obj: Record) => Record; +export declare const store: (storePath: string, text: string, translation: string, options?: any) => string; +export declare const get: (storePath: string, text: string, options?: any) => any; diff --git a/packages/i18n/dist/lib/store.js b/packages/i18n/dist/lib/store.js index 6f924b85..07583d69 100644 --- a/packages/i18n/dist/lib/store.js +++ b/packages/i18n/dist/lib/store.js @@ -1,37 +1,37 @@ -import { sync as write } from '@polymech/fs/write'; -import { sync as read } from '@polymech/fs/read'; -import { resolve } from '@polymech/commons'; -import * as path from 'path'; -const removeNonPrintableCharacters = (text) => text.replace(/[^\x20-\x7E]/g, ''); -const clean = (text = "") => text.trim(); -export const sortObjectKeysAlpha = (obj) => { - const sortedKeys = Object.keys(obj).sort(); - const sortedObj = {}; - sortedKeys.forEach((key) => { - sortedObj[key] = obj[key]; - }); - return sortedObj; -}; -export const store = (storePath, text, translation, options = {}) => { - if (storePath && options && options.store) { - storePath = path.resolve(resolve(options.store, options.alt, { - DST_LANG: options.dstLang - })); - } - const store = read(storePath, 'json') || {}; - store[text] = clean(translation); - write(storePath, sortObjectKeysAlpha(store)); - return translation; -}; -export const get = (storePath, text, options = {}) => { - if (storePath && options && options.store) { - storePath = path.resolve(resolve(options.store, options.alt, { - DST_LANG: options.dstLang - })); - } - const store = read(storePath, 'json') || {}; - if (store[text]) { - return store[text]; - } -}; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL3N0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLElBQUksS0FBSyxFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFDbEQsT0FBTyxFQUFFLElBQUksSUFBSSxJQUFJLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUNoRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDM0MsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUE7QUFFNUIsTUFBTSw0QkFBNEIsR0FBRyxDQUFDLElBQVksRUFBVSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDLENBQUE7QUFFaEcsTUFBTSxLQUFLLEdBQUcsQ0FBQyxPQUFlLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFBO0FBRWhELE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLENBQUMsR0FBd0IsRUFBdUIsRUFBRTtJQUNwRixNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzNDLE1BQU0sU0FBUyxHQUF3QixFQUFFLENBQUM7SUFDMUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1FBQzFCLFNBQVMsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDM0IsQ0FBQyxDQUFDLENBQUM7SUFDSCxPQUFPLFNBQVMsQ0FBQztBQUNsQixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxTQUFnQixFQUFFLElBQVksRUFBRSxXQUFrQixFQUFFLFVBQWMsRUFBRSxFQUFFLEVBQUU7SUFDN0YsSUFBSSxTQUFTLElBQUksT0FBTyxJQUFJLE9BQU8sQ0FBQyxLQUFLLEVBQUU7UUFDcEMsU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLEdBQUcsRUFBRTtZQUN6RCxRQUFRLEVBQUUsT0FBTyxDQUFDLE9BQU87U0FDNUIsQ0FBQyxDQUFDLENBQUE7S0FDTjtJQUNKLE1BQU0sS0FBSyxHQUFPLElBQUksQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFBO0lBQy9DLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUE7SUFDaEMsS0FBSyxDQUFDLFNBQVMsRUFBRSxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFBO0lBQzVDLE9BQU8sV0FBVyxDQUFBO0FBQ25CLENBQUMsQ0FBQTtBQUVELE1BQU0sQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDLFNBQWdCLEVBQUUsSUFBWSxFQUFFLFVBQWMsRUFBRSxFQUFFLEVBQUU7SUFDdkUsSUFBSSxTQUFTLElBQUksT0FBTyxJQUFJLE9BQU8sQ0FBQyxLQUFLLEVBQUU7UUFDcEMsU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLEdBQUcsRUFBRTtZQUN6RCxRQUFRLEVBQUUsT0FBTyxDQUFDLE9BQU87U0FDNUIsQ0FBQyxDQUFDLENBQUE7S0FDTjtJQUNKLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFBO0lBQzNDLElBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFDO1FBQ2QsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUE7S0FDbEI7QUFDRixDQUFDLENBQUEifQ== \ No newline at end of file +import { sync as write } from '@polymech/fs/write'; +import { sync as read } from '@polymech/fs/read'; +import { resolve } from '@polymech/commons'; +import * as path from 'path'; +const removeNonPrintableCharacters = (text) => text.replace(/[^\x20-\x7E]/g, ''); +const clean = (text = "") => text.trim(); +export const sortObjectKeysAlpha = (obj) => { + const sortedKeys = Object.keys(obj).sort(); + const sortedObj = {}; + sortedKeys.forEach((key) => { + sortedObj[key] = obj[key]; + }); + return sortedObj; +}; +export const store = (storePath, text, translation, options = {}) => { + if (storePath && options && options.store) { + storePath = path.resolve(resolve(options.store, options.alt, { + DST_LANG: options.dstLang + })); + } + const store = read(storePath, 'json') || {}; + store[text] = clean(translation); + write(storePath, sortObjectKeysAlpha(store)); + return translation; +}; +export const get = (storePath, text, options = {}) => { + if (storePath && options && options.store) { + storePath = path.resolve(resolve(options.store, options.alt, { + DST_LANG: options.dstLang + })); + } + const store = read(storePath, 'json') || {}; + if (store[text]) { + return store[text]; + } +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL3N0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLElBQUksS0FBSyxFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFDbEQsT0FBTyxFQUFFLElBQUksSUFBSSxJQUFJLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUNoRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDM0MsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUE7QUFFNUIsTUFBTSw0QkFBNEIsR0FBRyxDQUFDLElBQVksRUFBVSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDLENBQUE7QUFFaEcsTUFBTSxLQUFLLEdBQUcsQ0FBQyxPQUFlLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFBO0FBRWhELE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLENBQUMsR0FBd0IsRUFBdUIsRUFBRTtJQUNwRixNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzNDLE1BQU0sU0FBUyxHQUF3QixFQUFFLENBQUM7SUFDMUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1FBQzFCLFNBQVMsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDM0IsQ0FBQyxDQUFDLENBQUM7SUFDSCxPQUFPLFNBQVMsQ0FBQztBQUNsQixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxTQUFnQixFQUFFLElBQVksRUFBRSxXQUFrQixFQUFFLFVBQWMsRUFBRSxFQUFFLEVBQUU7SUFDN0YsSUFBSSxTQUFTLElBQUksT0FBTyxJQUFJLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNyQyxTQUFTLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsR0FBRyxFQUFFO1lBQ3pELFFBQVEsRUFBRSxPQUFPLENBQUMsT0FBTztTQUM1QixDQUFDLENBQUMsQ0FBQTtJQUNQLENBQUM7SUFDSixNQUFNLEtBQUssR0FBTyxJQUFJLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQTtJQUMvQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFBO0lBQ2hDLEtBQUssQ0FBQyxTQUFTLEVBQUUsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQTtJQUM1QyxPQUFPLFdBQVcsQ0FBQTtBQUNuQixDQUFDLENBQUE7QUFFRCxNQUFNLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxTQUFnQixFQUFFLElBQVksRUFBRSxVQUFjLEVBQUUsRUFBRSxFQUFFO0lBQ3ZFLElBQUksU0FBUyxJQUFJLE9BQU8sSUFBSSxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDckMsU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLEdBQUcsRUFBRTtZQUN6RCxRQUFRLEVBQUUsT0FBTyxDQUFDLE9BQU87U0FDNUIsQ0FBQyxDQUFDLENBQUE7SUFDUCxDQUFDO0lBQ0osTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUE7SUFDM0MsSUFBRyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUMsQ0FBQztRQUNmLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQ25CLENBQUM7QUFDRixDQUFDLENBQUEifQ== \ No newline at end of file diff --git a/packages/i18n/dist/lib/strings.d.ts b/packages/i18n/dist/lib/strings.d.ts index 0e963c0a..4fcaf090 100644 --- a/packages/i18n/dist/lib/strings.d.ts +++ b/packages/i18n/dist/lib/strings.d.ts @@ -1,2 +1,2 @@ -export declare const clean: (text?: string) => string; -export declare const hash: (text: string) => string; +export declare const clean: (text?: string) => string; +export declare const hash: (text: string) => string; diff --git a/packages/i18n/dist/lib/strings.js b/packages/i18n/dist/lib/strings.js index ebfd04ef..df7fb280 100644 --- a/packages/i18n/dist/lib/strings.js +++ b/packages/i18n/dist/lib/strings.js @@ -1,4 +1,4 @@ -import { createHash } from 'crypto'; -export const clean = (text = "") => text.trim(); -export const hash = (text) => createHash('md5').update(clean(text)).digest('base64'); +import { createHash } from 'crypto'; +export const clean = (text = "") => text.trim(); +export const hash = (text) => createHash('md5').update(clean(text)).digest('base64'); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5ncy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvc3RyaW5ncy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sUUFBUSxDQUFBO0FBQ25DLE1BQU0sQ0FBQyxNQUFNLEtBQUssR0FBRyxDQUFDLE9BQWUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUE7QUFDdkQsTUFBTSxDQUFDLE1BQU0sSUFBSSxHQUFHLENBQUMsSUFBWSxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQSJ9 \ No newline at end of file diff --git a/packages/i18n/dist/lib/test_data.d.ts b/packages/i18n/dist/lib/test_data.d.ts index a763f140..8127aef9 100644 --- a/packages/i18n/dist/lib/test_data.d.ts +++ b/packages/i18n/dist/lib/test_data.d.ts @@ -1 +1 @@ -export declare const xls2Cols: () => string[][]; +export declare const xls2Cols: () => string[][]; diff --git a/packages/i18n/dist/lib/test_data.js b/packages/i18n/dist/lib/test_data.js index e51635ff..bd810489 100644 --- a/packages/i18n/dist/lib/test_data.js +++ b/packages/i18n/dist/lib/test_data.js @@ -1,129 +1,129 @@ -export const xls2Cols = () => { - return [ - [ - "", - "", - ], - [ - "Model Number", - "WSGP-230", - ], - [ - "Plastic Processed", - "HDPE/PP", - ], - [ - "Plastic Processed", - "PE/PP", - ], - [ - "Plastic Processed", - "LDPE", - ], - [ - "Plastic Processed", - "ABS", - ], - [ - "Condition", - "random2" - ], - [ - "Output (kg/h)", - "100 - 150 kg/h", - ], - [ - "Video outgoing-inspection", - "Provided", - ], - [ - "Machinery Test Report", - "Provided", - ], - [ - "Warranty of core components", - "1 Year", - ], - [ - "Core Components", - "PLC", - ], - [ - "Core Components", - "Motor", - ], - [ - "Place of Origin", - "Guangdong, China", - ], - [ - "Brand Name", - "Wensui", - ], - [ - "Type", - "Recycling Granulator", - ], - [ - "Screw Design", - "Single", - ], - [ - "Voltage", - "380V", - ], - [ - "Dimension(L*W*H)", - "97*61*120cm", - ], - [ - "Power (kW)", - "4kw", - ], - [ - "Weight", - "290", - ], - [ - "Warranty", - "1 Year", - ], - [ - "Showroom Location", - "Canada", - ], - [ - "Applicable Industries", - "Plastic Industry", - ], - [ - "Material Processed", - "PP/PE", - ], - [ - "Fixed Blade", - "2pcs", - ], - [ - "Rotary Blade", - "6pcs", - ], - [ - "Chamber Size", - "230*215 mm", - ], - [ - "Capacity", - "150 kg/h", - ], - [ - "Keywords", - "pe pipe recycling machine", - ], - [ - "Application", - "Recycling Extrusion Pelletizing", - ], - ]; -}; +export const xls2Cols = () => { + return [ + [ + "", + "", + ], + [ + "Model Number", + "WSGP-230", + ], + [ + "Plastic Processed", + "HDPE/PP", + ], + [ + "Plastic Processed", + "PE/PP", + ], + [ + "Plastic Processed", + "LDPE", + ], + [ + "Plastic Processed", + "ABS", + ], + [ + "Condition", + "random2" + ], + [ + "Output (kg/h)", + "100 - 150 kg/h", + ], + [ + "Video outgoing-inspection", + "Provided", + ], + [ + "Machinery Test Report", + "Provided", + ], + [ + "Warranty of core components", + "1 Year", + ], + [ + "Core Components", + "PLC", + ], + [ + "Core Components", + "Motor", + ], + [ + "Place of Origin", + "Guangdong, China", + ], + [ + "Brand Name", + "Wensui", + ], + [ + "Type", + "Recycling Granulator", + ], + [ + "Screw Design", + "Single", + ], + [ + "Voltage", + "380V", + ], + [ + "Dimension(L*W*H)", + "97*61*120cm", + ], + [ + "Power (kW)", + "4kw", + ], + [ + "Weight", + "290", + ], + [ + "Warranty", + "1 Year", + ], + [ + "Showroom Location", + "Canada", + ], + [ + "Applicable Industries", + "Plastic Industry", + ], + [ + "Material Processed", + "PP/PE", + ], + [ + "Fixed Blade", + "2pcs", + ], + [ + "Rotary Blade", + "6pcs", + ], + [ + "Chamber Size", + "230*215 mm", + ], + [ + "Capacity", + "150 kg/h", + ], + [ + "Keywords", + "pe pipe recycling machine", + ], + [ + "Application", + "Recycling Extrusion Pelletizing", + ], + ]; +}; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdF9kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi90ZXN0X2RhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLEdBQUcsRUFBRTtJQUN6QixPQUFPO1FBQ0g7WUFDSSxFQUFFO1lBQ0YsRUFBRTtTQUNMO1FBQ0Q7WUFDSSxjQUFjO1lBQ2QsVUFBVTtTQUNiO1FBQ0Q7WUFDSSxtQkFBbUI7WUFDbkIsU0FBUztTQUNaO1FBQ0Q7WUFDSSxtQkFBbUI7WUFDbkIsT0FBTztTQUNWO1FBQ0Q7WUFDSSxtQkFBbUI7WUFDbkIsTUFBTTtTQUNUO1FBQ0Q7WUFDSSxtQkFBbUI7WUFDbkIsS0FBSztTQUNSO1FBQ0Q7WUFDSSxXQUFXO1lBQ1gsU0FBUztTQUNaO1FBQ0Q7WUFDSSxlQUFlO1lBQ2YsZ0JBQWdCO1NBQ25CO1FBQ0Q7WUFDSSwyQkFBMkI7WUFDM0IsVUFBVTtTQUNiO1FBQ0Q7WUFDSSx1QkFBdUI7WUFDdkIsVUFBVTtTQUNiO1FBQ0Q7WUFDSSw2QkFBNkI7WUFDN0IsUUFBUTtTQUNYO1FBQ0Q7WUFDSSxpQkFBaUI7WUFDakIsS0FBSztTQUNSO1FBQ0Q7WUFDSSxpQkFBaUI7WUFDakIsT0FBTztTQUNWO1FBQ0Q7WUFDSSxpQkFBaUI7WUFDakIsa0JBQWtCO1NBQ3JCO1FBQ0Q7WUFDSSxZQUFZO1lBQ1osUUFBUTtTQUNYO1FBQ0Q7WUFDSSxNQUFNO1lBQ04sc0JBQXNCO1NBQ3pCO1FBQ0Q7WUFDSSxjQUFjO1lBQ2QsUUFBUTtTQUNYO1FBQ0Q7WUFDSSxTQUFTO1lBQ1QsTUFBTTtTQUNUO1FBQ0Q7WUFDSSxrQkFBa0I7WUFDbEIsYUFBYTtTQUNoQjtRQUNEO1lBQ0ksWUFBWTtZQUNaLEtBQUs7U0FDUjtRQUNEO1lBQ0ksUUFBUTtZQUNSLEtBQUs7U0FDUjtRQUNEO1lBQ0ksVUFBVTtZQUNWLFFBQVE7U0FDWDtRQUNEO1lBQ0ksbUJBQW1CO1lBQ25CLFFBQVE7U0FDWDtRQUNEO1lBQ0ksdUJBQXVCO1lBQ3ZCLGtCQUFrQjtTQUNyQjtRQUNEO1lBQ0ksb0JBQW9CO1lBQ3BCLE9BQU87U0FDVjtRQUNEO1lBQ0ksYUFBYTtZQUNiLE1BQU07U0FDVDtRQUNEO1lBQ0ksY0FBYztZQUNkLE1BQU07U0FDVDtRQUNEO1lBQ0ksY0FBYztZQUNkLFlBQVk7U0FDZjtRQUNEO1lBQ0ksVUFBVTtZQUNWLFVBQVU7U0FDYjtRQUNEO1lBQ0ksVUFBVTtZQUNWLDJCQUEyQjtTQUM5QjtRQUNEO1lBQ0ksYUFBYTtZQUNiLGlDQUFpQztTQUNwQztLQUNKLENBQUE7QUFDTCxDQUFDLENBQUEifQ== \ No newline at end of file diff --git a/packages/i18n/dist/lib/translate.d.ts b/packages/i18n/dist/lib/translate.d.ts index c694ef66..77606ac5 100644 --- a/packages/i18n/dist/lib/translate.d.ts +++ b/packages/i18n/dist/lib/translate.d.ts @@ -1,29 +1,29 @@ -import * as TOML from '@iarna/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; +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.js b/packages/i18n/dist/lib/translate.js index f2a4c044..a9b268cf 100644 --- a/packages/i18n/dist/lib/translate.js +++ b/packages/i18n/dist/lib/translate.js @@ -1,440 +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 { 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi90cmFuc2xhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUE7QUFDNUIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUN4QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sUUFBUSxDQUFBO0FBRW5DLE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFFeEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQzdDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUVsRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDM0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLDJCQUEyQixDQUFBO0FBQ2pGLE9BQU8sRUFBRSxJQUFJLElBQUksSUFBSSxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDaEQsT0FBTyxFQUFFLElBQUksSUFBSSxLQUFLLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQUNsRCxPQUFPLEVBQUUsSUFBSSxJQUFJLE1BQU0sRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQ3BELE9BQU8sRUFBRSxJQUFJLElBQUksS0FBSyxFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFDaEQsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUE7QUFDNUIsT0FBTyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFDdkMsT0FBTyxJQUFJLE1BQU0sT0FBTyxDQUFBO0FBQ3hCLE9BQU8sRUFBRSxNQUFNLElBQUksV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFDNUQsT0FBTyxFQUFFLFFBQVEsRUFBRyxNQUFN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 \ No newline at end of file +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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi90cmFuc2xhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUE7QUFDNUIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUN4QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sUUFBUSxDQUFBO0FBRW5DLE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFFeEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQzdDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUVsRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDM0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLDJCQUEyQixDQUFBO0FBQ2pGLE9BQU8sRUFBRSxJQUFJLElBQUksSUFBSSxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDaEQsT0FBTyxFQUFFLElBQUksSUFBSSxLQUFLLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQUNsRCxPQUFPLEVBQUUsSUFBSSxJQUFJLE1BQU0sRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQ3BELE9BQU8sRUFBRSxJQUFJLElBQUksS0FBSyxFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFDaEQsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUE7QUFDNUIsT0FBTyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFDdkMsT0FBTyxJQUFJLE1BQU0sT0FBTyxDQUFBO0FBQ3hCLE9BQU8sRUFBRSxNQUFNLElBQUksV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFDNUQsT0FBTyxFQUFFLFFBQVEsRUFBRyxNQUFN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 \ No newline at end of file diff --git a/packages/i18n/dist/main.d.ts b/packages/i18n/dist/main.d.ts index d1ebc9c7..b7988016 100644 --- a/packages/i18n/dist/main.d.ts +++ b/packages/i18n/dist/main.d.ts @@ -1,2 +1,2 @@ -#!/usr/bin/env node -export {}; +#!/usr/bin/env node +export {}; diff --git a/packages/i18n/dist/main.js b/packages/i18n/dist/main.js index eb10964b..a211b3b6 100644 --- a/packages/i18n/dist/main.js +++ b/packages/i18n/dist/main.js @@ -1,19 +1,19 @@ -#!/usr/bin/env node -import { defaults } from './_cli.js'; -defaults(); -import * as cli from 'yargs'; -import { register as registerInfo } from './commands/info.js'; -registerInfo(cli); -import { register as registerTranslate } from './commands/translate.js'; -registerTranslate(cli); -import { register as registerGlossary } from './commands/glossary.js'; -registerGlossary(cli); -const argv = cli.argv; -if (argv.help) { - cli.showHelp(); - process.exit(); -} -else if (argv.v || argv.version) { - process.exit(); -} -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9tYWluLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFDQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQUMsUUFBUSxFQUFFLENBQUE7QUFDaEQsT0FBTyxLQUFLLEdBQUcsTUFBTSxPQUFPLENBQUE7QUFDNUIsT0FBTyxFQUFFLFFBQVEsSUFBSSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQTtBQUNoRixPQUFPLEVBQUUsUUFBUSxJQUFJLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQTtBQUMvRixPQUFPLEVBQUUsUUFBUSxJQUFJLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQTtBQUU1RixNQUFNLElBQUksR0FBUSxHQUFHLENBQUMsSUFBSSxDQUFBO0FBRTFCLElBQUksSUFBSSxDQUFDLElBQUksRUFBRTtJQUNYLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNmLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztDQUNsQjtLQUFNLElBQUksSUFBSSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO0lBQy9CLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztDQUNsQiJ9 \ No newline at end of file +#!/usr/bin/env node +import { defaults } from './_cli.js'; +defaults(); +import * as cli from 'yargs'; +import { register as registerInfo } from './commands/info.js'; +registerInfo(cli); +import { register as registerTranslate } from './commands/translate.js'; +registerTranslate(cli); +import { register as registerGlossary } from './commands/glossary.js'; +registerGlossary(cli); +const argv = cli.argv; +if (argv.help) { + cli.showHelp(); + process.exit(); +} +else if (argv.v || argv.version) { + process.exit(); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9tYWluLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFDQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQUMsUUFBUSxFQUFFLENBQUE7QUFDaEQsT0FBTyxLQUFLLEdBQUcsTUFBTSxPQUFPLENBQUE7QUFDNUIsT0FBTyxFQUFFLFFBQVEsSUFBSSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQTtBQUNoRixPQUFPLEVBQUUsUUFBUSxJQUFJLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQTtBQUMvRixPQUFPLEVBQUUsUUFBUSxJQUFJLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQTtBQUU1RixNQUFNLElBQUksR0FBUSxHQUFHLENBQUMsSUFBSSxDQUFBO0FBRTFCLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ1osR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2YsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ25CLENBQUM7S0FBTSxJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2hDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUNuQixDQUFDIn0= \ No newline at end of file diff --git a/packages/i18n/dist/options.d.ts b/packages/i18n/dist/options.d.ts index 7d4caa82..0352b557 100644 --- a/packages/i18n/dist/options.d.ts +++ b/packages/i18n/dist/options.d.ts @@ -1,4 +1,4 @@ -import { IOptions } from './types.js'; -export declare const clone: (obj: any) => any; -export declare const targets: (f: string, options: IOptions) => any[]; -export declare const parse: (options: IOptions, argv: any) => IOptions; +import { IOptions } from './types.js'; +export declare const clone: (obj: any) => any; +export declare const targets: (f: string, options: IOptions) => any[]; +export declare const parse: (options: IOptions, argv: any) => IOptions; diff --git a/packages/i18n/dist/options.js b/packages/i18n/dist/options.js index 80fe31c8..67ab5a2e 100644 --- a/packages/i18n/dist/options.js +++ b/packages/i18n/dist/options.js @@ -1,143 +1,143 @@ -import * as path from 'path'; -import { resolve, resolveConfig } from '@polymech/commons'; -import { isString } from '@polymech/core/primitives'; -import { pathInfo, DEFAULT_ROOTS } from '@polymech/commons'; -import { Filters } from './lib/filters.js'; -export const clone = (obj) => { - if (null == obj || "object" != typeof obj) - return obj; - var copy = obj.constructor(); - for (var attr in obj) { - if (obj.hasOwnProperty(attr)) - copy[attr] = obj[attr]; - } - return copy; -}; -export const targets = (f, options) => { - const srcParts = path.parse(f); - const variables = { - ...clone(options.pathVariables), - ...DEFAULT_ROOTS - }; - const targets = []; - variables.SRC_NAME = srcParts.name; - variables.SRC_DIR = srcParts.dir; - variables.SRC_EXT = srcParts.ext; - if (variables.ROOT) { - variables.SRC_REL = path.relative(variables.ROOT, srcParts.dir); - } - const dashed = srcParts.name.split('-'); - if (dashed.length > 1) { - for (let i = 0; i < dashed.length; i++) { - variables[`SRC_NAME-${i}`] = dashed[i]; - } - } - const dotted = srcParts.name.split('.'); - if (dotted.length > 1) { - for (let i = 0; i < dotted.length; i++) { - variables[`SRC_NAME.${i}`] = dotted[i]; - } - } - const underscored = srcParts.name.split('_'); - if (underscored.length > 1) { - for (let i = 0; i < underscored.length; i++) { - variables[`SRC_NAME_${i}`] = underscored[i]; - } - } - if (options.targetInfo.IS_GLOB) { - options.targetInfo.GLOB_EXTENSIONS.forEach((e) => { - let targetPath = resolve(options.pathVariables.DST_PATH, options.alt, variables); - targetPath = path.resolve(targetPath.replace(options.pathVariables.DST_FILE_EXT, '') + e); - targets.push(targetPath); - }); - } - else { - let targetPath = resolve(options.pathVariables.DST_PATH, options.alt, variables); - //targetPath = path.resolve(targetPath.replace(options.pathVariables.DST_FILE_EXT, '')); - targets.push(targetPath); - } - return targets; -}; -export const parse = (options, argv) => { - for (const k in argv) { - if (!(k in options.variables) && k !== '_' - && k !== '$0' - && k !== 'variables' - && k !== 'source' - && k !== 'language' - && k !== 'envVariables' - && k !== 'format' - && k !== 'profile' - && k !== 'output' - && k !== 'plugins' - && k !== 'dry' - && k !== 'stdout' - && k !== 'filters' - && k !== 'cache' - && k !== 'text' - && k !== 'keys' - && k !== 'glossary' - && k !== 'logLevel' - && k !== 'bootstrap') { - options.variables[k] = argv[k]; - } - } - options.variables['cwd'] = path.resolve(options.variables['cwd'] ? options.variables['cwd'] : options.cwd); - resolveConfig(options.variables); - let variables = {}; - let srcInfo; - if (options.src) { - srcInfo = pathInfo(resolve(options.src, options.alt, options.variables)); - //we have glob patterns: - if (srcInfo && srcInfo.FILES && srcInfo.FILES.length) { - options.srcInfo = srcInfo; - for (const key in srcInfo) { - if (Object.prototype.hasOwnProperty.call(srcInfo, key)) { - variables['SRC_' + key] = srcInfo[key]; - } - } - } - else { - options.src = resolve(options.src, options.alt, options.variables); - options.srcInfo = srcInfo; - options.srcInfo.FILES = [options.src]; - } - } - if (options.dst) { - const out = resolve(options.dst, options.alt, options.variables); - let targetInfo = pathInfo(out); - //we have glob patterns: - if (options.srcInfo && targetInfo) { - targetInfo.PATH = options.dst; - for (const key in targetInfo) { - if (Object.prototype.hasOwnProperty.call(targetInfo, key)) { - variables['DST_' + key] = targetInfo[key]; - } - } - options.targetInfo = targetInfo; - } - else { - options.dst = resolve(options.dst || '', options.alt, options.variables); - } - } - else { - options.stdout = true; - } - options.pathVariables = variables; - if (isString(argv.filters)) { - const filters = argv.filters.split(','); - options.filters = []; - filters.forEach((f) => { - if (Filters[f]) { - options.filters.push(Filters[f]); - } - }); - } - if (isString(argv.keys)) { - options.keys = argv.keys.split(','); - } - options.logLevel = options.logLevel || 'warn'; - options.storeRoot = options.storeRoot || '${OSR_ROOT}/i18n-store/'; - return options; -}; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9vcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFBO0FBRTVCLE9BQU8sRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDMUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDJCQUEyQixDQUFBO0FBQ3BELE9BQU8sRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFHM0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBRTFDLE1BQU0sQ0FBQyxNQUFNLEtBQUssR0FBRyxDQUFDLEdBQUcsRUFBRSxFQUFFO0lBQ3pCLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxRQUFRLElBQUksT0FBTyxHQUFHO1FBQUUsT0FBTyxHQUFHLENBQUM7SUFDdEQsSUFBSSxJQUFJLEdBQUcsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQzdCLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFO1FBQ2xCLElBQUksR0FBRyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUM7WUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ3hEO0lBQ0QsT0FBTyxJQUFJLENBQUM7QUFDaEIsQ0FBQyxDQUFBO0FBRUQsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLENBQUMsQ0FBUyxFQUFFLE9BQWlCLEVBQUUsRUFBRTtJQUNwRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQzlCLE1BQU0sU0FBUyxHQUFHO1FBQ2QsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQztRQUMvQixHQUFHLGFBQWE7S0FDbkIsQ0FBQTtJQUNELE1BQU0sT0FBTyxHQUFHLEVB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 \ No newline at end of file +import * as path from 'path'; +import { resolve, resolveConfig } from '@polymech/commons'; +import { isString } from '@polymech/core/primitives'; +import { pathInfo, DEFAULT_ROOTS } from '@polymech/commons'; +import { Filters } from './lib/filters.js'; +export const clone = (obj) => { + if (null == obj || "object" != typeof obj) + return obj; + var copy = obj.constructor(); + for (var attr in obj) { + if (obj.hasOwnProperty(attr)) + copy[attr] = obj[attr]; + } + return copy; +}; +export const targets = (f, options) => { + const srcParts = path.parse(f); + const variables = { + ...clone(options.pathVariables), + ...DEFAULT_ROOTS + }; + const targets = []; + variables.SRC_NAME = srcParts.name; + variables.SRC_DIR = srcParts.dir; + variables.SRC_EXT = srcParts.ext; + if (variables.ROOT) { + variables.SRC_REL = path.relative(variables.ROOT, srcParts.dir); + } + const dashed = srcParts.name.split('-'); + if (dashed.length > 1) { + for (let i = 0; i < dashed.length; i++) { + variables[`SRC_NAME-${i}`] = dashed[i]; + } + } + const dotted = srcParts.name.split('.'); + if (dotted.length > 1) { + for (let i = 0; i < dotted.length; i++) { + variables[`SRC_NAME.${i}`] = dotted[i]; + } + } + const underscored = srcParts.name.split('_'); + if (underscored.length > 1) { + for (let i = 0; i < underscored.length; i++) { + variables[`SRC_NAME_${i}`] = underscored[i]; + } + } + if (options.targetInfo.IS_GLOB) { + options.targetInfo.GLOB_EXTENSIONS.forEach((e) => { + let targetPath = resolve(options.pathVariables.DST_PATH, options.alt, variables); + targetPath = path.resolve(targetPath.replace(options.pathVariables.DST_FILE_EXT, '') + e); + targets.push(targetPath); + }); + } + else { + let targetPath = resolve(options.pathVariables.DST_PATH, options.alt, variables); + //targetPath = path.resolve(targetPath.replace(options.pathVariables.DST_FILE_EXT, '')); + targets.push(targetPath); + } + return targets; +}; +export const parse = (options, argv) => { + for (const k in argv) { + if (!(k in options.variables) && k !== '_' + && k !== '$0' + && k !== 'variables' + && k !== 'source' + && k !== 'language' + && k !== 'envVariables' + && k !== 'format' + && k !== 'profile' + && k !== 'output' + && k !== 'plugins' + && k !== 'dry' + && k !== 'stdout' + && k !== 'filters' + && k !== 'cache' + && k !== 'text' + && k !== 'keys' + && k !== 'glossary' + && k !== 'logLevel' + && k !== 'bootstrap') { + options.variables[k] = argv[k]; + } + } + options.variables['cwd'] = path.resolve(options.variables['cwd'] ? options.variables['cwd'] : options.cwd); + resolveConfig(options.variables); + let variables = {}; + let srcInfo; + if (options.src) { + srcInfo = pathInfo(resolve(options.src, options.alt, options.variables)); + //we have glob patterns: + if (srcInfo && srcInfo.FILES && srcInfo.FILES.length) { + options.srcInfo = srcInfo; + for (const key in srcInfo) { + if (Object.prototype.hasOwnProperty.call(srcInfo, key)) { + variables['SRC_' + key] = srcInfo[key]; + } + } + } + else { + options.src = resolve(options.src, options.alt, options.variables); + options.srcInfo = srcInfo; + options.srcInfo.FILES = [options.src]; + } + } + if (options.dst) { + const out = resolve(options.dst, options.alt, options.variables); + let targetInfo = pathInfo(out); + //we have glob patterns: + if (options.srcInfo && targetInfo) { + targetInfo.PATH = options.dst; + for (const key in targetInfo) { + if (Object.prototype.hasOwnProperty.call(targetInfo, key)) { + variables['DST_' + key] = targetInfo[key]; + } + } + options.targetInfo = targetInfo; + } + else { + options.dst = resolve(options.dst || '', options.alt, options.variables); + } + } + else { + options.stdout = true; + } + options.pathVariables = variables; + if (isString(argv.filters)) { + const filters = argv.filters.split(','); + options.filters = []; + filters.forEach((f) => { + if (Filters[f]) { + options.filters.push(Filters[f]); + } + }); + } + if (isString(argv.keys)) { + options.keys = argv.keys.split(','); + } + options.logLevel = options.logLevel || 'warn'; + options.storeRoot = options.storeRoot || '${OSR_ROOT}/i18n-store/'; + return options; +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9vcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFBO0FBRTVCLE9BQU8sRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDMUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDJCQUEyQixDQUFBO0FBQ3BELE9BQU8sRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFHM0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBRTFDLE1BQU0sQ0FBQyxNQUFNLEtBQUssR0FBRyxDQUFDLEdBQUcsRUFBRSxFQUFFO0lBQ3pCLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxRQUFRLElBQUksT0FBTyxHQUFHO1FBQUUsT0FBTyxHQUFHLENBQUM7SUFDdEQsSUFBSSxJQUFJLEdBQUcsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQzdCLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLENBQUM7UUFDbkIsSUFBSSxHQUFHLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQztZQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUNELE9BQU8sSUFBSSxDQUFDO0FBQ2hCLENBQUMsQ0FBQTtBQUVELE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxDQUFDLENBQVMsRUFBRSxPQUFpQixFQUFFLEVBQUU7SUFDcEQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUM5QixNQUFNLFNBQVMsR0FBRztRQUNkLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUM7UUFDL0IsR0FBRyxhQUFhO0tBQ25CLENBQUE7SUFDRCxNQUFNLE9B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 \ No newline at end of file diff --git a/packages/i18n/dist/types.d.ts b/packages/i18n/dist/types.d.ts index b694104b..92cd14c6 100644 --- a/packages/i18n/dist/types.d.ts +++ b/packages/i18n/dist/types.d.ts @@ -1,35 +1,35 @@ -import { Hash } from '@polymech/core'; -import { PATH_INFO } from '@polymech/commons/types'; -export type TranslateFilter = (raw: string, translated: string, file?: string) => string; -export type IOptions = { - src?: string; - dst?: string; - variables?: Hash; - cwd?: string; - env?: string; - debug?: boolean; - dry?: boolean; - skip?: boolean; - all?: boolean; - alt?: boolean; - stdout?: boolean; - srcInfo?: PATH_INFO; - targetInfo?: PATH_INFO; - pathVariables?: Hash; - dstLang?: string; - srcLang?: string; - config?: any; - formality?: string; - text?: string; - filters?: TranslateFilter[] | string; - keys?: string[] | string; - query?: string; - glossary?: string | boolean; - createGlossary?: boolean; - cache?: boolean; - dumpJSON?: boolean; - store?: string; - storeRoot?: string; - api_key?: string; - logLevel?: string; -}; +import { Hash } from '@polymech/core'; +import { PATH_INFO } from '@polymech/commons/types'; +export type TranslateFilter = (raw: string, translated: string, file?: string) => string; +export type IOptions = { + src?: string; + dst?: string; + variables?: Hash; + cwd?: string; + env?: string; + debug?: boolean; + dry?: boolean; + skip?: boolean; + all?: boolean; + alt?: boolean; + stdout?: boolean; + srcInfo?: PATH_INFO; + targetInfo?: PATH_INFO; + pathVariables?: Hash; + dstLang?: string; + srcLang?: string; + config?: any; + formality?: string; + text?: string; + filters?: TranslateFilter[] | string; + keys?: string[] | string; + query?: string; + glossary?: string | boolean; + createGlossary?: boolean; + cache?: boolean; + dumpJSON?: boolean; + store?: string; + storeRoot?: string; + api_key?: string; + logLevel?: string; +}; diff --git a/packages/i18n/dist/types.js b/packages/i18n/dist/types.js index b22f0a6d..a0dabde2 100644 --- a/packages/i18n/dist/types.js +++ b/packages/i18n/dist/types.js @@ -1,2 +1,2 @@ -export {}; +export {}; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9 \ No newline at end of file diff --git a/packages/i18n/dist/zod_schema.d.ts b/packages/i18n/dist/zod_schema.d.ts index b3f314c9..27ee2755 100644 --- a/packages/i18n/dist/zod_schema.d.ts +++ b/packages/i18n/dist/zod_schema.d.ts @@ -1,7 +1,7 @@ -import { z } from 'zod'; -export declare const CommonLanguageCodeSchema: z.ZodEnum<["en", "pt", "bg", "cs", "da", "de", "el", "es", "et", "fi", "fr", "hu", "id", "it", "ja", "ko", "lt", "lv", "nb", "nl", "pl", "ro", "ru", "sk", "sl", "sv", "tr", "uk", "zh"]>; -export type CommonLanguageCode = z.infer; -export declare const TargetLanguageCodeSchema: z.ZodUnion<[z.ZodEnum<["en", "pt", "bg", "cs", "da", "de", "el", "es", "et", "fi", "fr", "hu", "id", "it", "ja", "ko", "lt", "lv", "nb", "nl", "pl", "ro", "ru", "sk", "sl", "sv", "tr", "uk", "zh"]>, z.ZodEnum<["en-GB", "en-US", "pt-BR", "pt-PT"]>]>; -export type TargetLanguageCode = z.infer; -export declare const SourceGlossaryLanguageCode: z.ZodEnum<["de", "en", "es", "fr", "ja"]>; -export type SourceGlossaryLanguageCode = z.infer; +import { z } from 'zod'; +export declare const CommonLanguageCodeSchema: z.ZodEnum<["en", "pt", "bg", "cs", "da", "de", "el", "es", "et", "fi", "fr", "hu", "id", "it", "ja", "ko", "lt", "lv", "nb", "nl", "pl", "ro", "ru", "sk", "sl", "sv", "tr", "uk", "zh"]>; +export type CommonLanguageCode = z.infer; +export declare const TargetLanguageCodeSchema: z.ZodUnion<[z.ZodEnum<["en", "pt", "bg", "cs", "da", "de", "el", "es", "et", "fi", "fr", "hu", "id", "it", "ja", "ko", "lt", "lv", "nb", "nl", "pl", "ro", "ru", "sk", "sl", "sv", "tr", "uk", "zh"]>, z.ZodEnum<["en-GB", "en-US", "pt-BR", "pt-PT"]>]>; +export type TargetLanguageCode = z.infer; +export declare const SourceGlossaryLanguageCode: z.ZodEnum<["de", "en", "es", "fr", "ja"]>; +export type SourceGlossaryLanguageCode = z.infer; diff --git a/packages/i18n/dist/zod_schema.js b/packages/i18n/dist/zod_schema.js index ba6a9906..05ddd756 100644 --- a/packages/i18n/dist/zod_schema.js +++ b/packages/i18n/dist/zod_schema.js @@ -1,10 +1,10 @@ -import { z } from 'zod'; -export const CommonLanguageCodeSchema = z.enum([ - 'en', 'pt', - 'bg', 'cs', 'da', 'de', 'el', 'es', 'et', 'fi', 'fr', - 'hu', 'id', 'it', 'ja', 'ko', 'lt', 'lv', 'nb', 'nl', - 'pl', 'ro', 'ru', 'sk', 'sl', 'sv', 'tr', 'uk', 'zh' -]); -export const TargetLanguageCodeSchema = z.union([CommonLanguageCodeSchema, z.enum(['en-GB', 'en-US', 'pt-BR', 'pt-PT'])]); -export const SourceGlossaryLanguageCode = z.enum(['de', 'en', 'es', 'fr', 'ja']); +import { z } from 'zod'; +export const CommonLanguageCodeSchema = z.enum([ + 'en', 'pt', + 'bg', 'cs', 'da', 'de', 'el', 'es', 'et', 'fi', 'fr', + 'hu', 'id', 'it', 'ja', 'ko', 'lt', 'lv', 'nb', 'nl', + 'pl', 'ro', 'ru', 'sk', 'sl', 'sv', 'tr', 'uk', 'zh' +]); +export const TargetLanguageCodeSchema = z.union([CommonLanguageCodeSchema, z.enum(['en-GB', 'en-US', 'pt-BR', 'pt-PT'])]); +export const SourceGlossaryLanguageCode = z.enum(['de', 'en', 'es', 'fr', 'ja']); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiem9kX3NjaGVtYS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy96b2Rfc2NoZW1hLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxLQUFLLENBQUE7QUFFdkIsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUMzQyxJQUFJLEVBQUUsSUFBSTtJQUNWLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUNwRCxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDcEQsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0NBQ3ZELENBQUMsQ0FBQTtBQUlGLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBSyx3QkFBd0IsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7QUFHN0gsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFBIn0= \ No newline at end of file diff --git a/packages/i18n/dist/zod_types.d.ts b/packages/i18n/dist/zod_types.d.ts index b4900090..c48b8936 100644 --- a/packages/i18n/dist/zod_types.d.ts +++ b/packages/i18n/dist/zod_types.d.ts @@ -1 +1 @@ -export declare const foo = "bar"; +export declare const foo = "bar"; diff --git a/packages/i18n/dist/zod_types.js b/packages/i18n/dist/zod_types.js index ead6c47e..027e682f 100644 --- a/packages/i18n/dist/zod_types.js +++ b/packages/i18n/dist/zod_types.js @@ -1,2 +1,2 @@ -export const foo = 'bar'; +export const foo = 'bar'; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiem9kX3R5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3pvZF90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFBIn0= \ No newline at end of file diff --git a/packages/i18n/package-lock.json b/packages/i18n/package-lock.json index 16b6b2fa..01764fdc 100644 --- a/packages/i18n/package-lock.json +++ b/packages/i18n/package-lock.json @@ -9,7 +9,6 @@ "version": "0.2.5", "license": "BSD-3-Clause", "dependencies": { - "@iarna/toml": "^2.2.5", "@polymech/fs": "^0.13.39", "@polymech/osr-cache": "file:../osr-cache", "@polymech/osr-cli-commons": "file:../osr-cli-commons", diff --git a/packages/i18n/package.json b/packages/i18n/package.json index 27fa40e6..9e9fb6de 100644 --- a/packages/i18n/package.json +++ b/packages/i18n/package.json @@ -17,10 +17,13 @@ "./lib": { "import": "./dist/lib/index.js", "require": "./dist/lib/index.cjs" + }, + "./translate": { + "import": "./dist/lib/translate_ex.js", + "require": "./dist/lib/translate_ex.cjs" } }, "dependencies": { - "@iarna/toml": "^2.2.5", "@polymech/cache": "link:..\\cache", "@polymech/commons": "link:..\\commons", "@polymech/core": "link:..\\core", @@ -42,6 +45,7 @@ "p-map": "^7.0.3", "p-throttle": "^4.1.1", "querystring": "^0.2.1", + "smol-toml": "^1.3.1", "ssri": "^10.0.1", "tslog": "^3.3.3", "typescript": "^5.7.3", diff --git a/packages/i18n/src/lib/deepl.ts b/packages/i18n/src/lib/deepl.ts index fcfc30cf..3522b747 100644 --- a/packages/i18n/src/lib/deepl.ts +++ b/packages/i18n/src/lib/deepl.ts @@ -1,7 +1,6 @@ -//import axios, { AxiosError} from 'axios'; import { stringify } from 'querystring' -import { default as axios } from 'axios'; -// https://github.com/DeepLcom/deepl-node/tree/main/src +import { default as axios } from 'axios' + export interface IGlossary { glossaryId: string; name: string; @@ -44,21 +43,12 @@ export interface IDeepLResponse { export const translate_deeplT = async ( parameters: IDeepLOptions ) => { - // const sub_domain = parameters.free_api ? 'api-free' : 'api'; try { const params = "preserve_formatting=1&tag_handling=xml&auth_key=4f6441ab-8e09-48d3-9031-3ca5cd463f79&formality=default&free_api=false&text=Variant&target_lang=de&source_lang=en" const ret = axios ( `https://api.deepl.com/v2/translate`, - params as any) as any - + params as any) as any return ret - // return (ret as any).data -/* - const ret = await axios.post( - `https://${sub_domain}.deepl.com/v2/translate`, - params, {}) as any - return (ret as any).data - */ } catch (error) { console.error(error.message) } diff --git a/packages/i18n/src/lib/glossary.ts b/packages/i18n/src/lib/glossary.ts index 89a8f7b6..d02bc460 100644 --- a/packages/i18n/src/lib/glossary.ts +++ b/packages/i18n/src/lib/glossary.ts @@ -1,12 +1,12 @@ - import * as path from 'path' import * as deeplN from 'deepl-node' + import { isFile, resolve } from "@polymech/commons" import { sync as read } from "@polymech/fs/read" import { sync as exists } from "@polymech/fs/exists" - import * as deepl from './deepl.js' import { sync as write } from "@polymech/fs/write" + import { GLOSSARY_INFO_FILE, GLOSSARY_FILE_NAME @@ -52,14 +52,6 @@ export const update_hash = (storeRoot: string, srcLang: string, dstLang: string) } } -export const id2 = async ( - options: IOptions, - dOptions: deepl.IDeepLOptions, - storeRoot: string, - srcLang: string, - dstLang: string): Promise => { - return (meta(storeRoot, srcLang, dstLang) as deepl.IGlossary)?.glossaryId -} export const create = async ( srcLang: string = 'EN', dstLang: string = 'DE', diff --git a/packages/i18n/src/lib/index.ts b/packages/i18n/src/lib/index.ts index b957a5fe..d61921dd 100644 --- a/packages/i18n/src/lib/index.ts +++ b/packages/i18n/src/lib/index.ts @@ -3,3 +3,4 @@ export * from './codes.js' export * from './filters.js' export * from './store.js' export * from './translate.js' + diff --git a/packages/i18n/src/lib/translate.ts b/packages/i18n/src/lib/translate.ts index 41fb43e9..4ffac3c5 100644 --- a/packages/i18n/src/lib/translate.ts +++ b/packages/i18n/src/lib/translate.ts @@ -18,8 +18,8 @@ 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 '@iarna/toml' +import * as TOML from 'smol-toml' import { targets, parse as parseOptions