@fulmenhq/tsfulmen 0.3.3 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +51 -1
- package/README.md +30 -1
- package/config/crucible-ts/taxonomy/metrics.yaml +1 -1
- package/dist/appidentity/index.js +9 -2209
- package/dist/appidentity/index.js.map +1 -1
- package/dist/assets/index.d.ts +179 -0
- package/dist/assets/index.js +4 -0
- package/dist/assets/index.js.map +1 -0
- package/dist/bin/prometheus-cli.js +15 -9139
- package/dist/bin/prometheus-cli.js.map +1 -1
- package/dist/bin/schema-cli.js +4 -6098
- package/dist/bin/schema-cli.js.map +1 -1
- package/dist/bin/signals-cli.js +15 -1910
- package/dist/bin/signals-cli.js.map +1 -1
- package/dist/chunk-3HISR2XI.js +36 -0
- package/dist/chunk-3HISR2XI.js.map +1 -0
- package/dist/chunk-5HZEJGZ5.js +725 -0
- package/dist/chunk-5HZEJGZ5.js.map +1 -0
- package/dist/chunk-7SVYOPJ3.js +9412 -0
- package/dist/chunk-7SVYOPJ3.js.map +1 -0
- package/dist/chunk-BCO3FUUO.js +682 -0
- package/dist/chunk-BCO3FUUO.js.map +1 -0
- package/dist/chunk-BJDL6JEX.js +208 -0
- package/dist/chunk-BJDL6JEX.js.map +1 -0
- package/dist/chunk-BTUS6PZZ.js +302 -0
- package/dist/chunk-BTUS6PZZ.js.map +1 -0
- package/dist/chunk-CW4CSNVF.js +410 -0
- package/dist/chunk-CW4CSNVF.js.map +1 -0
- package/dist/chunk-HIBZ2AY7.js +194 -0
- package/dist/chunk-HIBZ2AY7.js.map +1 -0
- package/dist/chunk-HS4F3BRR.js +985 -0
- package/dist/chunk-HS4F3BRR.js.map +1 -0
- package/dist/chunk-HY6JQOFN.js +32 -0
- package/dist/chunk-HY6JQOFN.js.map +1 -0
- package/dist/chunk-K2FYT43R.js +837 -0
- package/dist/chunk-K2FYT43R.js.map +1 -0
- package/dist/chunk-K7BMFGQP.js +43 -0
- package/dist/chunk-K7BMFGQP.js.map +1 -0
- package/dist/chunk-LWAH2UG7.js +103 -0
- package/dist/chunk-LWAH2UG7.js.map +1 -0
- package/dist/chunk-OHE2AOH4.js +273 -0
- package/dist/chunk-OHE2AOH4.js.map +1 -0
- package/dist/chunk-P3DNOZOG.js +1488 -0
- package/dist/chunk-P3DNOZOG.js.map +1 -0
- package/dist/chunk-PQ6TKPUN.js +27 -0
- package/dist/chunk-PQ6TKPUN.js.map +1 -0
- package/dist/chunk-QCCN6POA.js +211 -0
- package/dist/chunk-QCCN6POA.js.map +1 -0
- package/dist/chunk-RSLFR4TO.js +631 -0
- package/dist/chunk-RSLFR4TO.js.map +1 -0
- package/dist/chunk-UP2VWCW5.js +33 -0
- package/dist/chunk-UP2VWCW5.js.map +1 -0
- package/dist/chunk-W6TQFTTY.js +130 -0
- package/dist/chunk-W6TQFTTY.js.map +1 -0
- package/dist/chunk-WSMVLWLB.js +269 -0
- package/dist/chunk-WSMVLWLB.js.map +1 -0
- package/dist/config/index.js +6 -1220
- package/dist/config/index.js.map +1 -1
- package/dist/crucible/fulpack/index.js +2 -25
- package/dist/crucible/fulpack/index.js.map +1 -1
- package/dist/crucible/index.js +13 -1129
- package/dist/crucible/index.js.map +1 -1
- package/dist/docscribe/index.js +2 -680
- package/dist/docscribe/index.js.map +1 -1
- package/dist/errors/index.js +5 -1831
- package/dist/errors/index.js.map +1 -1
- package/dist/errors-D7KXV3QW.js +4 -0
- package/dist/errors-D7KXV3QW.js.map +1 -0
- package/dist/errors-RBJX6ETJ.js +8 -0
- package/dist/errors-RBJX6ETJ.js.map +1 -0
- package/dist/export-BWRETGYS.js +6 -0
- package/dist/export-BWRETGYS.js.map +1 -0
- package/dist/foundry/index.js +340 -3949
- package/dist/foundry/index.js.map +1 -1
- package/dist/foundry/similarity/index.js +3 -134
- package/dist/foundry/similarity/index.js.map +1 -1
- package/dist/fulencode/index.js +3 -319
- package/dist/fulencode/index.js.map +1 -1
- package/dist/fulhash/index.js +3 -611
- package/dist/fulhash/index.js.map +1 -1
- package/dist/fulpack/index.js +3 -1515
- package/dist/fulpack/index.js.map +1 -1
- package/dist/hash-YOJYVOWH.js +4 -0
- package/dist/hash-YOJYVOWH.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +14 -4395
- package/dist/index.js.map +1 -1
- package/dist/loader-H5K7HSO5.js +9 -0
- package/dist/loader-H5K7HSO5.js.map +1 -0
- package/dist/logging/index.js +2 -723
- package/dist/logging/index.js.map +1 -1
- package/dist/pathfinder/index.js +18 -2341
- package/dist/pathfinder/index.js.map +1 -1
- package/dist/prom-client-PNEBGD3G.js +4801 -0
- package/dist/prom-client-PNEBGD3G.js.map +1 -0
- package/dist/reports/license-inventory.csv +1 -1
- package/dist/schema/index.d.ts +19 -6
- package/dist/schema/index.js +4 -6148
- package/dist/schema/index.js.map +1 -1
- package/dist/signals/index.js +8 -2767
- package/dist/signals/index.js.map +1 -1
- package/dist/similarity/index.js +3 -134
- package/dist/similarity/index.js.map +1 -1
- package/dist/telemetry/http/index.js +9 -930
- package/dist/telemetry/http/index.js.map +1 -1
- package/dist/telemetry/index.js +4 -1561
- package/dist/telemetry/index.js.map +1 -1
- package/dist/telemetry/prometheus/index.js +7 -8422
- package/dist/telemetry/prometheus/index.js.map +1 -1
- package/dist/validator-U4CKD2Y3.js +6 -0
- package/dist/validator-U4CKD2Y3.js.map +1 -0
- package/package.json +5 -1
- package/schemas/crucible-ts/library/module-manifest/v1.0.0/module-manifest.schema.json +1 -1
- package/schemas/crucible-ts/observability/logging/v1.0.0/definitions.schema.json +1 -1
- package/schemas/crucible-ts/observability/logging/v1.0.0/log-event.schema.json +13 -13
- package/schemas/crucible-ts/observability/logging/v1.0.0/logger-config.schema.json +2 -2
- package/schemas/crucible-ts/observability/logging/v1.0.0/logging-policy.schema.json +1 -1
- package/schemas/crucible-ts/observability/logging/v1.0.0/middleware-config.schema.json +2 -2
- package/schemas/crucible-ts/observability/logging/v1.0.0/severity-filter.schema.json +3 -3
- package/schemas/crucible-ts/upstream/3leaps/crucible/PROVENANCE.md +3 -3
- package/schemas/crucible-ts/upstream/3leaps/crucible/docs/catalog/classifiers/README.md +1 -1
- package/schemas/crucible-ts/upstream/3leaps/crucible/docs/standards/classifiers-framework.md +1 -1
- package/schemas/crucible-ts/upstream/3leaps/crucible/docs/standards/data-sensitivity-classification.md +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/docscribe/normalize.ts","../../src/docscribe/types.ts","../../src/docscribe/frontmatter.ts","../../src/docscribe/headers.ts","../../src/docscribe/format.ts","../../src/docscribe/split.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Normalization utilities for DocScribe module inputs.\n */\n\nconst decoder = new TextDecoder(\"utf-8\", { fatal: false, ignoreBOM: true });\n\nexport type NormalizedInput = {\n readonly content: string;\n readonly original: string | Uint8Array | ArrayBufferLike;\n};\n\nfunction stripBom(value: string): string {\n return value.charCodeAt(0) === 0xfeff ? value.slice(1) : value;\n}\n\nfunction normalizeNewlines(value: string): string {\n return value.replace(/\\r\\n/g, \"\\n\").replace(/\\r/g, \"\\n\");\n}\n\n/**\n * Normalize supported input types to a UTF-8 string with consistent newlines.\n */\nexport function normalizeInput(input: string | Uint8Array | ArrayBufferLike): NormalizedInput {\n let content: string;\n\n if (typeof input === \"string\") {\n content = input;\n } else if (input instanceof Uint8Array) {\n content = decoder.decode(input);\n } else {\n content = decoder.decode(new Uint8Array(input));\n }\n\n const normalized = normalizeNewlines(stripBom(content));\n return { content: normalized, original: input };\n}\n","/**\n * DocScribe module public types.\n */\n\nexport type DocScribePrimitiveValue = string | number | boolean | null;\n\nexport type DocScribeMetadataValue =\n | DocScribePrimitiveValue\n | ReadonlyArray<DocScribeMetadataValue>\n | { readonly [key: string]: DocScribeMetadataValue };\n\nexport interface DocScribeMetadata extends Record<string, DocScribeMetadataValue | undefined> {\n readonly title?: string;\n readonly description?: string;\n readonly author?: string;\n readonly date?: string;\n readonly lastUpdated?: string;\n readonly status?: string;\n readonly tags?: ReadonlyArray<string>;\n readonly version?: string;\n readonly relatedDocs?: ReadonlyArray<string>;\n readonly meta?: DocScribeMetadataValue;\n}\n\nexport interface DocScribeFrontmatterResult {\n readonly metadata: DocScribeMetadata | null;\n readonly body: string;\n readonly range: {\n readonly start: number;\n readonly end: number;\n } | null;\n readonly bodyStartLine: number;\n}\n\nexport interface DocScribeHeader {\n readonly level: number;\n readonly text: string;\n readonly slug: string;\n readonly line: number;\n}\n\nexport type DocScribeFormat = \"markdown\" | \"yaml\" | \"yaml-stream\" | \"json\" | \"toml\" | \"plain\";\n\nexport interface DocScribeInfo {\n readonly format: DocScribeFormat;\n readonly hasFrontmatter: boolean;\n readonly frontmatterRange: {\n readonly start: number;\n readonly end: number;\n } | null;\n readonly metadata: DocScribeMetadata | null;\n readonly headerCount: number;\n readonly estimatedSections: number;\n readonly bodyStartLine: number;\n readonly lineCount: number;\n readonly size: number;\n readonly headers: ReadonlyArray<DocScribeHeader>;\n}\n\nexport interface DocScribeSplit {\n readonly content: string;\n readonly format: DocScribeFormat;\n readonly hasFrontmatter: boolean;\n readonly metadata: DocScribeMetadata | null;\n readonly startLine: number;\n readonly endLine: number;\n readonly index: number;\n}\n\nexport interface DocScribeOptions {\n readonly maxDocuments?: number;\n readonly slugify?: (header: string) => string;\n readonly maxDepth?: number;\n}\n\nexport class DocScribeError extends Error {\n constructor(message: string, options?: ErrorOptions) {\n super(message, options);\n Object.setPrototypeOf(this, new.target.prototype);\n this.name = \"DocScribeError\";\n }\n}\n\nexport class DocScribeParseError extends DocScribeError {\n constructor(message: string, options?: ErrorOptions) {\n super(message, options);\n Object.setPrototypeOf(this, new.target.prototype);\n this.name = \"DocScribeParseError\";\n }\n}\n\nexport class DocScribeUnsupportedFormatError extends DocScribeError {\n constructor(message: string, options?: ErrorOptions) {\n super(message, options);\n Object.setPrototypeOf(this, new.target.prototype);\n this.name = \"DocScribeUnsupportedFormatError\";\n }\n}\n","import { parseDocument } from \"yaml\";\n\nimport { normalizeInput } from \"./normalize.js\";\nimport {\n type DocScribeFrontmatterResult,\n type DocScribeMetadata,\n type DocScribeMetadataValue,\n DocScribeParseError,\n} from \"./types.js\";\n\nconst FRONTMATTER_DELIMITER = \"---\";\nconst STRING_KEYS = new Set<string>([\n \"title\",\n \"description\",\n \"author\",\n \"date\",\n \"lastUpdated\",\n \"status\",\n \"version\",\n]);\n\ninterface FrontmatterBounds {\n readonly start: number;\n readonly openEnd: number;\n readonly closingStart: number;\n readonly closingEnd: number;\n}\n\nexport function parseFrontmatter(\n input: string | Uint8Array | ArrayBufferLike,\n): DocScribeFrontmatterResult {\n const { content } = normalizeInput(input);\n const bounds = locateFrontmatter(content);\n\n if (!bounds) {\n return { metadata: null, body: content, range: null, bodyStartLine: 1 };\n }\n\n const yamlBlock = content.slice(bounds.openEnd, bounds.closingStart);\n const metadata =\n yamlBlock.trim().length === 0 ? ({} as DocScribeMetadata) : parseYamlMetadata(yamlBlock);\n\n const bodyRaw = content.slice(bounds.closingEnd);\n const leadingNewlinesMatch = bodyRaw.match(/^\\n+/);\n const leadingNewlinesLength = leadingNewlinesMatch ? leadingNewlinesMatch[0].length : 0;\n const bodyStartIndex = bounds.closingEnd + leadingNewlinesLength;\n const prefix = content.slice(0, bodyStartIndex);\n const bodyStartLine = prefix.length === 0 ? 1 : prefix.split(\"\\n\").length;\n const body = bodyRaw.slice(leadingNewlinesLength);\n\n return {\n metadata,\n body,\n range: { start: bounds.start, end: bounds.closingEnd },\n bodyStartLine,\n };\n}\n\nexport function stripFrontmatter(input: string | Uint8Array | ArrayBufferLike): string {\n return parseFrontmatter(input).body;\n}\n\nexport function extractMetadata(\n input: string | Uint8Array | ArrayBufferLike,\n): DocScribeMetadata | null {\n return parseFrontmatter(input).metadata;\n}\n\nfunction locateFrontmatter(content: string): FrontmatterBounds | null {\n let cursor = 0;\n\n while (cursor < content.length) {\n const newlineIndex = content.indexOf(\"\\n\", cursor);\n const lineEnd = newlineIndex === -1 ? content.length : newlineIndex;\n const line = content.slice(cursor, lineEnd);\n\n if (line.trim().length === 0) {\n if (newlineIndex === -1) {\n return null;\n }\n cursor = newlineIndex + 1;\n continue;\n }\n\n if (line.trim() !== FRONTMATTER_DELIMITER) {\n return null;\n }\n\n const openStart = cursor;\n const openEnd = newlineIndex === -1 ? content.length : newlineIndex + 1;\n\n let search = openEnd;\n while (search <= content.length) {\n const nextNewline = content.indexOf(\"\\n\", search);\n const segmentEnd = nextNewline === -1 ? content.length : nextNewline;\n const candidate = content.slice(search, segmentEnd).trim();\n\n if (candidate === FRONTMATTER_DELIMITER) {\n const closingStart = search;\n const closingEnd = nextNewline === -1 ? segmentEnd : nextNewline + 1;\n return {\n start: openStart,\n openEnd,\n closingStart,\n closingEnd,\n };\n }\n\n if (nextNewline === -1) {\n break;\n }\n\n search = nextNewline + 1;\n }\n\n return null;\n }\n\n return null;\n}\n\nfunction parseYamlMetadata(source: string): DocScribeMetadata {\n const document = parseDocument(source, { prettyErrors: true });\n\n if (document.errors.length > 0) {\n const error = document.errors[0];\n const location = error.linePos && error.linePos.length > 0 ? error.linePos[0] : null;\n const position = location ? ` (line ${location.line + 1}, column ${location.col + 1})` : \"\";\n throw new DocScribeParseError(`Invalid YAML frontmatter${position}: ${error.message}`, {\n cause: error,\n });\n }\n\n let raw: unknown;\n try {\n raw = document.toJS({ mapAsMap: false });\n } catch (error) {\n throw new DocScribeParseError(\"Failed to parse YAML frontmatter\", {\n cause: error instanceof Error ? error : undefined,\n });\n }\n\n if (raw == null) {\n return {} as DocScribeMetadata;\n }\n\n if (typeof raw !== \"object\" || Array.isArray(raw)) {\n throw new DocScribeParseError(\"YAML frontmatter must be a mapping at the top level\");\n }\n\n return normalizeMetadata(raw as Record<string, unknown>);\n}\n\nfunction normalizeMetadata(raw: Record<string, unknown>): DocScribeMetadata {\n const normalized: Record<string, DocScribeMetadataValue | undefined> = {};\n\n for (const [key, value] of Object.entries(raw)) {\n normalized[key] = normalizeMetadataValue(value);\n }\n\n const base: Record<string, DocScribeMetadataValue | undefined> = {};\n for (const [key, value] of Object.entries(normalized)) {\n if (STRING_KEYS.has(key) || key === \"tags\" || key === \"relatedDocs\") {\n continue;\n }\n base[key] = value;\n }\n\n const metadata: DocScribeMetadata = {\n ...base,\n ...(normalized.title !== undefined ? { title: ensureStringValue(normalized.title) } : {}),\n ...(normalized.description !== undefined\n ? { description: ensureStringValue(normalized.description) }\n : {}),\n ...(normalized.author !== undefined ? { author: ensureStringValue(normalized.author) } : {}),\n ...(normalized.date !== undefined ? { date: ensureStringValue(normalized.date) } : {}),\n ...(normalized.lastUpdated !== undefined\n ? { lastUpdated: ensureStringValue(normalized.lastUpdated) }\n : {}),\n ...(normalized.status !== undefined ? { status: ensureStringValue(normalized.status) } : {}),\n ...(normalized.version !== undefined ? { version: ensureStringValue(normalized.version) } : {}),\n ...(normalized.tags !== undefined\n ? (() => {\n const tags = ensureStringArray(normalized.tags);\n return tags.length > 0 ? { tags } : {};\n })()\n : {}),\n ...(normalized.relatedDocs !== undefined\n ? (() => {\n const related = ensureStringArray(normalized.relatedDocs);\n return related.length > 0 ? { relatedDocs: related } : {};\n })()\n : {}),\n };\n\n return metadata;\n}\n\nfunction normalizeMetadataValue(value: unknown): DocScribeMetadataValue {\n if (value === null) {\n return null;\n }\n\n if (typeof value === \"string\" || typeof value === \"number\" || typeof value === \"boolean\") {\n return value;\n }\n\n if (value instanceof Date) {\n return value.toISOString();\n }\n\n if (Array.isArray(value)) {\n return value.map((item) =>\n normalizeMetadataValue(item),\n ) as ReadonlyArray<DocScribeMetadataValue>;\n }\n\n if (typeof value === \"object\") {\n const result: Record<string, DocScribeMetadataValue> = {};\n for (const [key, nested] of Object.entries(value as Record<string, unknown>)) {\n result[key] = normalizeMetadataValue(nested);\n }\n return result as { readonly [key: string]: DocScribeMetadataValue };\n }\n\n return String(value);\n}\n\nfunction ensureStringValue(value: DocScribeMetadataValue): string {\n if (value === null) {\n return \"\";\n }\n\n if (typeof value === \"string\") {\n return value;\n }\n\n if (typeof value === \"number\" || typeof value === \"boolean\") {\n return String(value);\n }\n\n if (Array.isArray(value)) {\n return value.flatMap((item) => ensureStringArrayItem(item)).join(\", \");\n }\n\n return JSON.stringify(value);\n}\n\nfunction ensureStringArray(value: DocScribeMetadataValue): ReadonlyArray<string> {\n return ensureStringArrayItem(value);\n}\n\nfunction ensureStringArrayItem(value: DocScribeMetadataValue): string[] {\n if (value === null) {\n return [];\n }\n\n if (typeof value === \"string\") {\n return value\n .split(\",\")\n .map((entry) => entry.trim())\n .filter((entry) => entry.length > 0);\n }\n\n if (typeof value === \"number\" || typeof value === \"boolean\") {\n return [String(value)];\n }\n\n if (Array.isArray(value)) {\n return value.flatMap((item) => ensureStringArrayItem(item));\n }\n\n return [JSON.stringify(value)];\n}\n","import { parseFrontmatter } from \"./frontmatter.js\";\nimport { normalizeInput } from \"./normalize.js\";\nimport type { DocScribeHeader, DocScribeOptions } from \"./types.js\";\n\nconst ATX_PATTERN = /^ {0,3}(#{1,6})(?:[ \\t]+|$)(.*)$/;\nconst SETEXT_PATTERN = /^ {0,3}(=+|-+)\\s*$/;\n\nexport function extractHeaders(\n input: string | Uint8Array | ArrayBufferLike,\n options?: DocScribeOptions,\n): DocScribeHeader[] {\n const { content } = normalizeInput(input);\n const parsed = parseFrontmatter(content);\n const body = parsed.body;\n const lineOffset = parsed.bodyStartLine;\n\n const slugify = options?.slugify ?? defaultSlugify;\n const maxDepth = options?.maxDepth ?? 6;\n\n const lines = body.split(\"\\n\");\n const headers: DocScribeHeader[] = [];\n\n let inFence = false;\n let fenceMarker: \"`\" | \"~\" | null = null;\n\n for (let index = 0; index < lines.length; index += 1) {\n const line = lines[index];\n const trimmed = line.trimEnd();\n const lineNumber = lineOffset + index;\n\n const fenceMatch = line.match(/^ {0,3}(```+|~~~+)/);\n if (fenceMatch) {\n const marker = fenceMatch[1][0] as \"`\" | \"~\";\n if (!inFence) {\n inFence = true;\n fenceMarker = marker;\n } else if (fenceMarker === marker) {\n inFence = false;\n fenceMarker = null;\n }\n continue;\n }\n\n if (inFence) {\n continue;\n }\n\n if (/^( {4}|\\t)/.test(line)) {\n continue;\n }\n\n const atxMatch = trimmed.match(ATX_PATTERN);\n if (atxMatch) {\n const level = atxMatch[1].length;\n if (level <= maxDepth) {\n const rawText = atxMatch[2].replace(/#+\\s*$/, \"\").trim();\n const text = rawText.length > 0 ? rawText : \"\";\n const slug = ensureSlug(slugify, text, lineNumber);\n headers.push({ level, text, slug, line: lineNumber });\n }\n continue;\n }\n\n if (trimmed.length === 0) {\n continue;\n }\n\n if (index + 1 >= lines.length) {\n continue;\n }\n\n const nextLine = lines[index + 1];\n const setextMatch = SETEXT_PATTERN.exec(nextLine.trimEnd());\n if (setextMatch) {\n const underline = setextMatch[1];\n const level = underline.startsWith(\"=\") ? 1 : 2;\n if (level <= maxDepth) {\n const text = trimmed.trim();\n if (text.length > 0 && !/^ {0,3}(```|~~~)/.test(text)) {\n const slug = ensureSlug(slugify, text, lineNumber);\n headers.push({ level, text, slug, line: lineNumber });\n }\n }\n index += 1;\n }\n }\n\n return headers;\n}\n\nfunction defaultSlugify(value: string): string {\n return value\n .normalize(\"NFKD\")\n .replace(/[\\u0300-\\u036f]/g, \"\")\n .toLowerCase()\n .replace(/[^a-z0-9\\s-]/g, \"\")\n .trim()\n .replace(/\\s+/g, \"-\")\n .replace(/-+/g, \"-\");\n}\n\nfunction ensureSlug(slugify: (header: string) => string, text: string, lineNumber: number): string {\n const candidate = slugify(text);\n if (candidate && candidate.trim().length > 0) {\n return candidate;\n }\n return `section-${lineNumber}`;\n}\n","import { parseFrontmatter } from \"./frontmatter.js\";\nimport { extractHeaders } from \"./headers.js\";\nimport { normalizeInput } from \"./normalize.js\";\nimport type { DocScribeFormat, DocScribeInfo, DocScribeOptions } from \"./types.js\";\n\nconst JSON_PATTERN = /^[\\s\\t]*[[{]/;\nconst TOML_ASSIGNMENT = /^[A-Za-z0-9_\"'\\-.]+\\s*=\\s*.+$/;\nconst TOML_TABLE = /^\\s*\\[[^\\]]+\\]\\s*$/;\nconst YAML_KEY_PATTERN = /^\\s*[\\w\"'-]+\\s*:\\s*.+$/;\nconst MARKDOWN_HEADING = /(\\n|^)\\s{0,3}#{1,6}\\s+/;\nconst MARKDOWN_LIST = /(\\n|^)\\s{0,3}(?:-|\\*|\\+)\\s+/;\nconst MARKDOWN_SETEXT = /(\\n|^).+\\n\\s{0,3}(?:=+|-+)\\s*(\\n|$)/;\n\nexport function detectFormat(input: string | Uint8Array | ArrayBufferLike): DocScribeFormat {\n const { content } = normalizeInput(input);\n return detectFormatFromContent(content);\n}\n\nexport function inspectDocument(\n input: string | Uint8Array | ArrayBufferLike,\n options?: DocScribeOptions,\n): DocScribeInfo {\n const { content } = normalizeInput(input);\n const format = detectFormatFromContent(content);\n const frontmatter = parseFrontmatter(content);\n const headers = extractHeaders(content, options);\n const headerCount = headers.length;\n const estimatedSections =\n headerCount > 0 ? headerCount : frontmatter.body.trim().length > 0 ? 1 : 0;\n const lineCount = content.length === 0 ? 0 : content.split(\"\\n\").length;\n const size = content.length;\n\n return {\n format,\n hasFrontmatter: frontmatter.metadata !== null,\n frontmatterRange: frontmatter.range,\n metadata: frontmatter.metadata,\n headerCount,\n estimatedSections,\n bodyStartLine: frontmatter.bodyStartLine,\n lineCount,\n size,\n headers,\n };\n}\n\nfunction detectFormatFromContent(content: string): DocScribeFormat {\n const trimmed = content.trim();\n if (trimmed.length === 0) {\n return \"plain\";\n }\n\n if (looksLikeJson(trimmed)) {\n return \"json\";\n }\n\n if (looksLikeToml(trimmed)) {\n return \"toml\";\n }\n\n const yamlSeparatorCount = countYamlSeparators(content);\n if (yamlSeparatorCount >= 1 && isLikelyYamlStream(content)) {\n return \"yaml-stream\";\n }\n\n const markdownIndicators = hasMarkdownIndicators(content);\n\n if (looksLikeYaml(trimmed) && !markdownIndicators) {\n return \"yaml\";\n }\n\n const frontmatter = parseFrontmatter(content);\n if (frontmatter.metadata !== null) {\n const body = frontmatter.body.trim();\n if (markdownIndicators || MARKDOWN_HEADING.test(body) || MARKDOWN_LIST.test(body)) {\n return \"markdown\";\n }\n if (!body) {\n return \"markdown\";\n }\n }\n\n if (markdownIndicators) {\n return \"markdown\";\n }\n\n return \"plain\";\n}\n\nfunction looksLikeJson(trimmed: string): boolean {\n if (!JSON_PATTERN.test(trimmed)) {\n return false;\n }\n try {\n JSON.parse(trimmed);\n return true;\n } catch (_error) {\n return false;\n }\n}\n\nfunction looksLikeToml(content: string): boolean {\n const lines = content.split(\"\\n\");\n let tableCount = 0;\n let assignmentCount = 0;\n for (const rawLine of lines) {\n const line = rawLine.trim();\n if (line === \"\" || line.startsWith(\"#\")) {\n continue;\n }\n if (TOML_TABLE.test(line)) {\n tableCount += 1;\n continue;\n }\n if (TOML_ASSIGNMENT.test(line)) {\n assignmentCount += 1;\n }\n }\n return tableCount > 0 || assignmentCount >= 3;\n}\n\nfunction looksLikeYaml(trimmed: string): boolean {\n if (trimmed.startsWith(\"%YAML\")) {\n return true;\n }\n const lines = trimmed.split(\"\\n\");\n let signal = 0;\n for (const raw of lines.slice(0, 20)) {\n const line = raw.trim();\n if (line === \"\" || line.startsWith(\"#\")) {\n continue;\n }\n if (line === \"---\") {\n signal += 1;\n continue;\n }\n if (YAML_KEY_PATTERN.test(line) || /^-\\s/.test(line)) {\n signal += 1;\n }\n }\n return signal >= 2;\n}\n\nfunction countYamlSeparators(content: string): number {\n const matches = content.match(/(^|\\n)---\\s*(\\n|$)/g);\n return matches ? matches.length : 0;\n}\n\nfunction isLikelyYamlStream(content: string): boolean {\n const lines = content.split(\"\\n\");\n let yamlSignals = 0;\n let markdownSignals = 0;\n\n for (const rawLine of lines) {\n const line = rawLine.trim();\n if (line === \"\" || line === \"---\") {\n continue;\n }\n\n if (\n /^#/.test(line) ||\n /^\\s{0,3}(?:-|\\*|\\+)\\s+/.test(line) ||\n /(\\[[^\\]]+\\]\\([^)]+\\))/.test(line)\n ) {\n markdownSignals += 1;\n }\n\n if (/:\\s/.test(line) || /^-\\s/.test(line)) {\n yamlSignals += 1;\n }\n }\n\n return yamlSignals >= 2 && markdownSignals === 0;\n}\n\nfunction hasMarkdownIndicators(content: string): boolean {\n return (\n MARKDOWN_HEADING.test(content) ||\n MARKDOWN_LIST.test(content) ||\n MARKDOWN_SETEXT.test(content) ||\n /(\\n|^)\\s{0,3}>\\s+/.test(content) ||\n /(\\[[^\\]]+\\]\\([^)]+\\))/.test(content)\n );\n}\n\n// Internal helper exported for testing or reuse\nexport const __internal = {\n detectFormatFromContent,\n looksLikeJson,\n looksLikeToml,\n looksLikeYaml,\n isLikelyYamlStream,\n};\n","import { detectFormat } from \"./format.js\";\nimport { parseFrontmatter } from \"./frontmatter.js\";\nimport { normalizeInput } from \"./normalize.js\";\nimport type { DocScribeFormat, DocScribeOptions, DocScribeSplit } from \"./types.js\";\n\ntype RawSplit = Omit<DocScribeSplit, \"index\">;\n\ntype LineInfo = { line: string; lineNumber: number };\n\ntype AccumulatedDoc = { lines: string[]; startLine: number };\n\nexport function splitDocuments(\n input: string | Uint8Array | ArrayBufferLike,\n options?: DocScribeOptions,\n): DocScribeSplit[] {\n const { content } = normalizeInput(input);\n const trimmed = content.trim();\n\n if (trimmed.length === 0) {\n return [];\n }\n\n const maxDocuments = options?.maxDocuments ?? Number.POSITIVE_INFINITY;\n const format = detectFormat(content);\n\n let splits: DocScribeSplit[];\n if (format === \"yaml-stream\") {\n splits = withIndices(splitYamlStream(content));\n } else if (format === \"markdown\") {\n const markdownSplits = splitMarkdownDocuments(content);\n splits =\n markdownSplits.length > 0\n ? withIndices(markdownSplits)\n : [withIndex(buildSingleSplit(content, format, 1), 0)];\n } else {\n splits = [withIndex(buildSingleSplit(content, format, 1), 0)];\n }\n\n return applyDocumentLimit(splits, maxDocuments);\n}\n\nfunction splitYamlStream(content: string): RawSplit[] {\n const lines = content.split(\"\\n\");\n const docs: AccumulatedDoc[] = [];\n let current: AccumulatedDoc = { lines: [], startLine: 1 };\n let delimiterCount = 0;\n\n const flush = () => {\n if (current.lines.join(\"\\n\").trim().length === 0) {\n current = { lines: [], startLine: current.startLine };\n return;\n }\n docs.push({ ...current, lines: [...current.lines] });\n current = { lines: [], startLine: current.startLine };\n };\n\n for (let index = 0; index < lines.length; index += 1) {\n const lineNumber = index + 1;\n const line = lines[index];\n const trimmed = line.trim();\n\n if (trimmed === \"---\") {\n delimiterCount += 1;\n flush();\n current = { lines: [], startLine: lineNumber + 1 };\n continue;\n }\n\n if (delimiterCount === 0) {\n current.startLine = 1;\n }\n\n current.lines.push(line);\n }\n\n flush();\n\n if (docs.length === 0) {\n return [buildRawSplit(content, \"yaml\", null, 1, content.split(\"\\n\").length)];\n }\n\n return docs\n .map((doc) => {\n const joined = doc.lines.join(\"\\n\");\n const lineCount = doc.lines.length;\n return buildRawSplit(\n joined,\n \"yaml\",\n null,\n doc.startLine,\n doc.startLine + Math.max(lineCount - 1, 0),\n );\n })\n .filter((split) => split.content.trim().length > 0);\n}\n\nfunction splitMarkdownDocuments(content: string): RawSplit[] {\n const frontmatter = parseFrontmatter(content);\n const lines = content.split(\"\\n\");\n const docs: AccumulatedDoc[] = [];\n const frontmatterLimit = frontmatter.metadata ? Math.max(frontmatter.bodyStartLine - 1, 0) : 0;\n\n let current: AccumulatedDoc = { lines: [], startLine: 1 };\n let inFence = false;\n let fenceMarker: \"`\" | \"~\" | null = null;\n\n const flush = () => {\n if (current.lines.join(\"\\n\").trim().length === 0) {\n current = { lines: [], startLine: current.startLine };\n return;\n }\n docs.push({ ...current, lines: [...current.lines] });\n current = { lines: [], startLine: current.startLine };\n };\n\n for (let index = 0; index < lines.length; index += 1) {\n const lineNumber = index + 1;\n const line = lines[index];\n const trimmed = line.trimEnd();\n\n const fenceMatch = line.match(/^ {0,3}(```+|~~~+)/);\n if (fenceMatch) {\n const marker = fenceMatch[1][0] as \"`\" | \"~\";\n if (!inFence) {\n inFence = true;\n fenceMarker = marker;\n } else if (fenceMarker === marker) {\n inFence = false;\n fenceMarker = null;\n }\n }\n\n const isPrimaryFrontmatter = frontmatterLimit > 0 && lineNumber <= frontmatterLimit;\n\n if (!inFence && !isPrimaryFrontmatter && trimmed === \"---\") {\n const prev = findPrevNonEmpty(lines, index - 1);\n const next = findNextNonEmpty(lines, index + 1);\n const prevLooksLikeMetadata = prev ? /:\\s*/.test(prev.line) : false;\n const nextIsHeading = next ? next.line.trim().startsWith(\"#\") : false;\n\n if (next && !prevLooksLikeMetadata && nextIsHeading) {\n flush();\n current = { lines: [], startLine: next.lineNumber };\n continue;\n }\n }\n\n current.lines.push(line);\n }\n\n flush();\n\n return docs\n .map((doc) => {\n const contentValue = doc.lines.join(\"\\n\");\n const parsed = parseFrontmatter(contentValue);\n const lineCount = doc.lines.length;\n return buildRawSplit(\n contentValue,\n \"markdown\",\n parsed.metadata,\n doc.startLine,\n doc.startLine + Math.max(lineCount - 1, 0),\n parsed.metadata !== null,\n );\n })\n .filter((split) => split.content.trim().length > 0);\n}\n\nfunction buildSingleSplit(content: string, format: DocScribeFormat, startLine: number): RawSplit {\n const parsed = parseFrontmatter(content);\n const lineCount = content.length === 0 ? 0 : content.split(\"\\n\").length;\n return buildRawSplit(\n content,\n format,\n parsed.metadata,\n startLine,\n startLine + Math.max(lineCount - 1, 0),\n parsed.metadata !== null,\n );\n}\n\nfunction buildRawSplit(\n content: string,\n format: DocScribeFormat,\n metadata: ReturnType<typeof parseFrontmatter>[\"metadata\"],\n startLine: number,\n endLine: number,\n hasFrontmatter = false,\n): RawSplit {\n return {\n content,\n format,\n hasFrontmatter,\n metadata: metadata ?? null,\n startLine,\n endLine,\n };\n}\n\nfunction applyDocumentLimit(splits: DocScribeSplit[], maxDocuments: number): DocScribeSplit[] {\n if (maxDocuments <= 0) {\n return [];\n }\n\n if (splits.length <= maxDocuments) {\n return splits.map((split, idx) => ({ ...split, index: idx }));\n }\n\n const cutoff = Math.max(maxDocuments - 1, 0);\n const allowed = splits.slice(0, cutoff);\n const remaining = splits.slice(cutoff);\n const merged = mergeSplitGroup(remaining);\n const combined = cutoff === 0 ? [merged] : [...allowed, merged];\n return combined.map((split, idx) => ({ ...split, index: idx }));\n}\n\nfunction mergeSplitGroup(splits: DocScribeSplit[]): DocScribeSplit {\n const first = splits[0];\n const last = splits[splits.length - 1];\n const combinedContent = splits.map((split) => split.content).join(\"\\n---\\n\");\n return {\n content: combinedContent,\n format: first.format,\n hasFrontmatter: first.hasFrontmatter,\n metadata: first.metadata,\n startLine: first.startLine,\n endLine: last.endLine,\n index: 0,\n };\n}\n\nfunction withIndices(rawSplits: RawSplit[]): DocScribeSplit[] {\n return rawSplits.map((split, idx) => withIndex(split, idx));\n}\n\nfunction withIndex(split: RawSplit, index: number): DocScribeSplit {\n return { ...split, index };\n}\n\nfunction findNextNonEmpty(lines: readonly string[], startIndex: number): LineInfo | null {\n for (let index = startIndex; index < lines.length; index += 1) {\n const candidate = lines[index];\n if (candidate.trim().length === 0) {\n continue;\n }\n return { line: candidate, lineNumber: index + 1 };\n }\n return null;\n}\n\nfunction findPrevNonEmpty(lines: readonly string[], startIndex: number): LineInfo | null {\n for (let index = startIndex; index >= 0; index -= 1) {\n const candidate = lines[index];\n if (candidate.trim().length === 0) {\n continue;\n }\n return { line: candidate, lineNumber: index + 1 };\n }\n return null;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"index.js"}
|