@carbonenginejs/runtime-resource 0.1.0 → 0.7.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/FORMAT-PROVENANCE.md +14 -5
- package/README.md +537 -241
- package/dist/CjsMotherLode.js +1244 -29
- package/dist/CjsMotherLode.js.map +1 -1
- package/dist/CjsResMan.js +2537 -272
- package/dist/CjsResMan.js.map +1 -1
- package/dist/CjsResource.js +218 -18
- package/dist/CjsResource.js.map +1 -1
- package/dist/format/CjsBlueReader.js +269 -0
- package/dist/format/CjsBlueReader.js.map +1 -0
- package/dist/format/CjsFormat.js +44 -30
- package/dist/format/CjsFormat.js.map +1 -1
- package/dist/format/CjsReader.js +18 -0
- package/dist/format/CjsReader.js.map +1 -0
- package/dist/format/CjsResourceProbe.js +12 -4
- package/dist/format/CjsResourceProbe.js.map +1 -1
- package/dist/formats/black/CjsBlackFormat.js +12 -6
- package/dist/formats/black/CjsBlackFormat.js.map +1 -1
- package/dist/formats/black/core/CjsBlackReader.js +27 -148
- package/dist/formats/black/core/CjsBlackReader.js.map +1 -1
- package/dist/formats/bnk/CjsBnkFormat.js +140 -147
- package/dist/formats/bnk/CjsBnkFormat.js.map +1 -1
- package/dist/formats/bnk/core/graph.js +140 -0
- package/dist/formats/bnk/core/graph.js.map +1 -0
- package/dist/formats/bnk/core/helpers.js +58 -3
- package/dist/formats/bnk/core/helpers.js.map +1 -1
- package/dist/formats/bnk/core/musicNodes.js +521 -0
- package/dist/formats/bnk/core/musicNodes.js.map +1 -0
- package/dist/formats/bnk/index.js +0 -1
- package/dist/formats/bnk/index.js.map +1 -1
- package/dist/formats/cmf/CjsCmfFormat.js +14 -8
- package/dist/formats/cmf/CjsCmfFormat.js.map +1 -1
- package/dist/formats/dds/CjsDdsFormat.js +12 -6
- package/dist/formats/dds/CjsDdsFormat.js.map +1 -1
- package/dist/formats/fbx/CjsFbxFormat.js +12 -6
- package/dist/formats/fbx/CjsFbxFormat.js.map +1 -1
- package/dist/formats/flac/CjsFlacFormat.js +10 -4
- package/dist/formats/flac/CjsFlacFormat.js.map +1 -1
- package/dist/formats/gif/CjsGifFormat.js +11 -5
- package/dist/formats/gif/CjsGifFormat.js.map +1 -1
- package/dist/formats/gltf/CjsGltfFormat.js +12 -6
- package/dist/formats/gltf/CjsGltfFormat.js.map +1 -1
- package/dist/formats/jpeg/CjsJpegFormat.js +11 -5
- package/dist/formats/jpeg/CjsJpegFormat.js.map +1 -1
- package/dist/formats/mp3/CjsMp3Format.js +11 -5
- package/dist/formats/mp3/CjsMp3Format.js.map +1 -1
- package/dist/formats/mp4/CjsMp4Format.js +10 -4
- package/dist/formats/mp4/CjsMp4Format.js.map +1 -1
- package/dist/formats/obj/CjsObjFormat.js +12 -6
- package/dist/formats/obj/CjsObjFormat.js.map +1 -1
- package/dist/formats/ogg/CjsOggFormat.js +9 -3
- package/dist/formats/ogg/CjsOggFormat.js.map +1 -1
- package/dist/formats/png/CjsPngFormat.js +11 -5
- package/dist/formats/png/CjsPngFormat.js.map +1 -1
- package/dist/formats/red/CjsRedFormat.js +19 -5
- package/dist/formats/red/CjsRedFormat.js.map +1 -1
- package/dist/formats/red/core/CjsRedReader.js +63 -70
- package/dist/formats/red/core/CjsRedReader.js.map +1 -1
- package/dist/formats/red/core/helpers.js +3 -0
- package/dist/formats/red/core/helpers.js.map +1 -1
- package/dist/formats/stl/CjsStlFormat.js +77 -16
- package/dist/formats/stl/CjsStlFormat.js.map +1 -1
- package/dist/formats/stl/core/helpers.js +4 -0
- package/dist/formats/stl/core/helpers.js.map +1 -1
- package/dist/formats/stl/core/stl.js +100 -15
- package/dist/formats/stl/core/stl.js.map +1 -1
- package/dist/formats/tga/CjsTgaFormat.js +11 -5
- package/dist/formats/tga/CjsTgaFormat.js.map +1 -1
- package/dist/formats/wav/CjsWavFormat.js +11 -5
- package/dist/formats/wav/CjsWavFormat.js.map +1 -1
- package/dist/formats/webm/CjsWebmFormat.js +10 -4
- package/dist/formats/webm/CjsWebmFormat.js.map +1 -1
- package/dist/formats/webp/CjsWebpFormat.js +9 -3
- package/dist/formats/webp/CjsWebpFormat.js.map +1 -1
- package/dist/formats/wem/CjsWemFormat.js +50 -6
- package/dist/formats/wem/CjsWemFormat.js.map +1 -1
- package/dist/formats/wem/core/helpers.js +84 -3
- package/dist/formats/wem/core/helpers.js.map +1 -1
- package/dist/formats/wem/core/ptadpcm.js +77 -0
- package/dist/formats/wem/core/ptadpcm.js.map +1 -0
- package/dist/formats/wem/core/resolve.js +121 -0
- package/dist/formats/wem/core/resolve.js.map +1 -0
- package/dist/formats/yaml/CjsYamlFormat.js +11 -5
- package/dist/formats/yaml/CjsYamlFormat.js.map +1 -1
- package/dist/formats/yaml/core/CjsYamlReader.js +3 -2
- package/dist/formats/yaml/core/CjsYamlReader.js.map +1 -1
- package/dist/index.js +28 -32
- package/dist/index.js.map +1 -1
- package/dist/{generated/resources → resources}/AudioGeometryResData.js +2 -2
- package/dist/resources/AudioGeometryResData.js.map +1 -0
- package/dist/{generated/resources → resources}/GStateBindingCallbackData.js +2 -2
- package/dist/resources/GStateBindingCallbackData.js.map +1 -0
- package/dist/{generated/resources → resources}/MeshDecalData.js +2 -2
- package/dist/resources/MeshDecalData.js.map +1 -0
- package/dist/{generated/resources → resources}/MeshDecalLodData.js +2 -2
- package/dist/resources/MeshDecalLodData.js.map +1 -0
- package/dist/resources/Tr2GrannyIntersectionResult.js +60 -0
- package/dist/resources/Tr2GrannyIntersectionResult.js.map +1 -0
- package/dist/{generated/resources → resources}/Tr2MaterialArea.js +2 -2
- package/dist/resources/Tr2MaterialArea.js.map +1 -0
- package/dist/{generated/resources → resources}/Tr2MaterialMesh.js +2 -2
- package/dist/resources/Tr2MaterialMesh.js.map +1 -0
- package/dist/{generated/resources → resources}/Tr2MaterialRes.js +2 -2
- package/dist/resources/Tr2MaterialRes.js.map +1 -0
- package/dist/{generated/resources → resources}/Tr2ShaderPermutation.js +2 -2
- package/dist/resources/Tr2ShaderPermutation.js.map +1 -0
- package/dist/{generated/resources → resources}/Tr2TextureLodManager.js +50 -10
- package/dist/resources/Tr2TextureLodManager.js.map +1 -0
- package/dist/{generated/resources → resources}/Tr2TextureLodUpdateRequest.js +2 -2
- package/dist/resources/Tr2TextureLodUpdateRequest.js.map +1 -0
- package/dist/{generated/resources → resources}/Tr2TexturePackChannel.js +2 -2
- package/dist/resources/Tr2TexturePackChannel.js.map +1 -0
- package/dist/resources/Tr2TexturePipeline.js +68 -0
- package/dist/resources/Tr2TexturePipeline.js.map +1 -0
- package/dist/{generated/resources → resources}/Tr2TexturePipelineParams.js +2 -2
- package/dist/resources/Tr2TexturePipelineParams.js.map +1 -0
- package/dist/{generated/resources → resources}/Tr2TexturePipelineStepCompress.js +3 -3
- package/dist/resources/Tr2TexturePipelineStepCompress.js.map +1 -0
- package/dist/{generated/resources → resources}/Tr2TexturePipelineStepLimitSize.js +2 -2
- package/dist/resources/Tr2TexturePipelineStepLimitSize.js.map +1 -0
- package/dist/{generated/resources → resources}/Tr2TexturePipelineStepLoad.js +2 -2
- package/dist/resources/Tr2TexturePipelineStepLoad.js.map +1 -0
- package/dist/{generated/resources → resources}/Tr2TexturePipelineStepPack.js +3 -3
- package/dist/resources/Tr2TexturePipelineStepPack.js.map +1 -0
- package/dist/{generated/resources → resources}/TriGeometryResAreaData.js +2 -2
- package/dist/resources/TriGeometryResAreaData.js.map +1 -0
- package/dist/{generated/resources → resources}/TriGeometryResJointData.js +2 -2
- package/dist/resources/TriGeometryResJointData.js.map +1 -0
- package/dist/{generated/resources → resources}/TriGeometryResLodData.js +2 -2
- package/dist/resources/TriGeometryResLodData.js.map +1 -0
- package/dist/{generated/resources → resources}/TriGeometryResMeshData.js +2 -2
- package/dist/resources/TriGeometryResMeshData.js.map +1 -0
- package/dist/{generated/resources → resources}/TriGeometryResSkeletonData.js +2 -2
- package/dist/resources/TriGeometryResSkeletonData.js.map +1 -0
- package/dist/{generated/resources → resources}/TriJointBinding.js +2 -2
- package/dist/resources/TriJointBinding.js.map +1 -0
- package/dist/{generated/resources → resources}/TriMorphTargetGeometryConstants.js +2 -2
- package/dist/resources/TriMorphTargetGeometryConstants.js.map +1 -0
- package/dist/{generated/resources → resources}/TriRtGeometryConstants.js +2 -2
- package/dist/resources/TriRtGeometryConstants.js.map +1 -0
- package/dist/resources/enums.js.map +1 -0
- package/dist/resources/texturePipelineBehavior.js +320 -0
- package/dist/resources/texturePipelineBehavior.js.map +1 -0
- package/format-notices/bnk/NOTICE +7 -4
- package/package.json +51 -51
- package/resource-lifecycle.md +262 -70
- package/dist/generated/resources/AudioGeometryResData.js.map +0 -1
- package/dist/generated/resources/CmfVertexReader.js +0 -46
- package/dist/generated/resources/CmfVertexReader.js.map +0 -1
- package/dist/generated/resources/GStateBindingCallbackData.js.map +0 -1
- package/dist/generated/resources/MeshDecalData.js.map +0 -1
- package/dist/generated/resources/MeshDecalLodData.js.map +0 -1
- package/dist/generated/resources/Tr2AsyncSave.js +0 -46
- package/dist/generated/resources/Tr2AsyncSave.js.map +0 -1
- package/dist/generated/resources/Tr2CmfContents.js +0 -37
- package/dist/generated/resources/Tr2CmfContents.js.map +0 -1
- package/dist/generated/resources/Tr2GrannyIntersectionResult.js +0 -58
- package/dist/generated/resources/Tr2GrannyIntersectionResult.js.map +0 -1
- package/dist/generated/resources/Tr2LoadPrepareFence.js +0 -37
- package/dist/generated/resources/Tr2LoadPrepareFence.js.map +0 -1
- package/dist/generated/resources/Tr2MaterialArea.js.map +0 -1
- package/dist/generated/resources/Tr2MaterialMesh.js.map +0 -1
- package/dist/generated/resources/Tr2MaterialRes.js.map +0 -1
- package/dist/generated/resources/Tr2ShaderPermutation.js.map +0 -1
- package/dist/generated/resources/Tr2TextureLodManager.js.map +0 -1
- package/dist/generated/resources/Tr2TextureLodUpdateRequest.js.map +0 -1
- package/dist/generated/resources/Tr2TexturePackChannel.js.map +0 -1
- package/dist/generated/resources/Tr2TexturePipeline.js +0 -44
- package/dist/generated/resources/Tr2TexturePipeline.js.map +0 -1
- package/dist/generated/resources/Tr2TexturePipelineParams.js.map +0 -1
- package/dist/generated/resources/Tr2TexturePipelineStepCompress.js.map +0 -1
- package/dist/generated/resources/Tr2TexturePipelineStepLimitSize.js.map +0 -1
- package/dist/generated/resources/Tr2TexturePipelineStepLoad.js.map +0 -1
- package/dist/generated/resources/Tr2TexturePipelineStepPack.js.map +0 -1
- package/dist/generated/resources/TriGeometryResAreaData.js.map +0 -1
- package/dist/generated/resources/TriGeometryResJointData.js.map +0 -1
- package/dist/generated/resources/TriGeometryResLodData.js.map +0 -1
- package/dist/generated/resources/TriGeometryResMeshData.js.map +0 -1
- package/dist/generated/resources/TriGeometryResSkeletonData.js.map +0 -1
- package/dist/generated/resources/TriJointBinding.js.map +0 -1
- package/dist/generated/resources/TriMorphTargetGeometryConstants.js.map +0 -1
- package/dist/generated/resources/TriRtGeometryConstants.js.map +0 -1
- package/dist/generated/resources/enums.js.map +0 -1
- package/dist/generated/resources/index.js +0 -32
- package/dist/generated/resources/index.js.map +0 -1
- /package/dist/{generated/resources → resources}/enums.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CjsJpegFormat.js","sources":["../../../../src/formats/jpeg/CjsJpegFormat.js"],"sourcesContent":["import {\n DEFAULT_VALUES,\n OUTPUT_IMAGE,\n OUTPUT_JSON,\n OUTPUT_RAW,\n OUTPUT_RGBA,\n inspectWithValues,\n isJPEG,\n isJPG,\n isSupportedWithValues,\n normalizeValues,\n readWithValues,\n toBytes,\n toJsonValue\n} from \"./core/helpers.js\";\n\nconst FORMAT_NAME = \"CjsJpegFormat\";\n\nexport class CjsJpegFormat\n{\n #values = DEFAULT_VALUES;\n\n /**\n * Create a reusable JPEG format profile.\n *\n * @param {object} [options] Default read/inspect options.\n */\n constructor(options = {})\n {\n this.SetValues(options);\n }\n\n /**\n * Merge options into this profile.\n *\n * @param {object} [options] Values to merge.\n * @returns {CjsJpegFormat} This format profile.\n */\n SetValues(options = {})\n {\n this.#values = normalizeValues(this.#values, { inputType: \"jpeg\", ...options }, FORMAT_NAME);\n return this;\n }\n\n /**\n * Get normalized profile values with optional per-call overrides.\n *\n * @param {object} [options] Per-call values.\n * @returns {object} Normalized read values.\n */\n GetValues(options = {})\n {\n return normalizeValues(this.#values, { inputType: \"jpeg\", ...options }, FORMAT_NAME);\n }\n\n /**\n * Read JPEG bytes with this profile.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input JPEG bytes.\n * @param {object} [options] Per-call values.\n * @returns {object} GPU-free raw/debug payload for the selected emit target.\n */\n Read(input, options = {})\n {\n return readWithValues(input, this.GetValues(options), \"jpeg\");\n }\n\n /**\n * Read JPEG bytes asynchronously with this profile.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input JPEG bytes.\n * @param {object} [options] Per-call values.\n * @returns {Promise<object>} GPU-free raw/debug payload for the selected emit target.\n */\n async ReadAsync(input, options = {})\n {\n return this.Read(input, options);\n }\n\n /**\n * Inspect JPEG bytes without decoding image data.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input JPEG bytes.\n * @param {object} [options] Per-call values.\n * @returns {object} JPEG marker/header metadata.\n */\n Inspect(input, options = {})\n {\n return inspectWithValues(input, this.GetValues(options), \"jpeg\");\n }\n\n /**\n * Report whether JPEG input and requested output variants are supported.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input JPEG bytes.\n * @param {object} [options] Per-call values.\n * @returns {object} Support/probe report.\n */\n IsSupported(input, options = {})\n {\n return isSupportedWithValues(input, this.GetValues(options), \"jpeg\");\n }\n\n /**\n * Convert format output into JSON-compatible debug data.\n *\n * @param {any} value Format output.\n * @returns {any} JSON-compatible value.\n */\n ToJSON(value)\n {\n return toJsonValue(value);\n }\n\n /**\n * One-shot JPEG read.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input JPEG bytes.\n * @param {object} [options] Read options.\n * @returns {object} GPU-free raw/debug payload for the selected emit target.\n */\n static read(input, options = {})\n {\n return readWithValues(input, normalizeValues(DEFAULT_VALUES, { inputType: \"jpeg\", ...options }, FORMAT_NAME), \"jpeg\");\n }\n\n /**\n * One-shot asynchronous JPEG read.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input JPEG bytes.\n * @param {object} [options] Read options.\n * @returns {Promise<object>} GPU-free raw/debug payload for the selected emit target.\n */\n static async readAsync(input, options = {})\n {\n return CjsJpegFormat.read(input, options);\n }\n\n /**\n * One-shot JPEG inspection.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input JPEG bytes.\n * @param {object} [options] Inspect options.\n * @returns {object} JPEG marker/header metadata.\n */\n static inspect(input, options = {})\n {\n return inspectWithValues(input, normalizeValues(DEFAULT_VALUES, { inputType: \"jpeg\", ...options }, FORMAT_NAME), \"jpeg\");\n }\n\n /**\n * One-shot JPEG support probe.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input JPEG bytes.\n * @param {object} [options] Probe options.\n * @returns {object} Support/probe report.\n */\n static isSupported(input, options = {})\n {\n return isSupportedWithValues(input, normalizeValues(DEFAULT_VALUES, { inputType: \"jpeg\", ...options }, FORMAT_NAME), \"jpeg\");\n }\n\n /**\n * Convert format output into JSON-compatible debug data.\n *\n * @param {any} value Format output.\n * @returns {any} JSON-compatible value.\n */\n static toJSON(value)\n {\n return toJsonValue(value);\n }\n\n /**\n * Test whether bytes look like a JPEG file.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input Candidate JPEG bytes.\n * @returns {boolean} True when a JPEG SOI marker is present.\n */\n static isJPEG(input)\n {\n try\n {\n return isJPEG(toBytes(input));\n }\n catch\n {\n return false;\n }\n }\n\n /**\n * Test whether bytes look like a JPG/JPEG file.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input Candidate JPG bytes.\n * @returns {boolean} True when a JPEG SOI marker is present.\n */\n static isJPG(input)\n {\n try\n {\n return isJPG(toBytes(input));\n }\n catch\n {\n return false;\n }\n }\n\n static OUTPUT_IMAGE = OUTPUT_IMAGE;\n static OUTPUT_RGBA = OUTPUT_RGBA;\n static OUTPUT_RAW = OUTPUT_RAW;\n static OUTPUT_JSON = OUTPUT_JSON;\n static OUTPUT_JPEG_JSON = \"jpegJson\";\n static type = Object.freeze([ \"image\" ]);\n static mediaTypes = Object.freeze([ \"image\" ]);\n static inputTypes = Object.freeze([ \"jpg\", \"jpeg\" ]);\n static outputTypes = Object.freeze([ OUTPUT_IMAGE, OUTPUT_RGBA ]);\n static debugOutputTypes = Object.freeze([ \"jpegJson\", OUTPUT_RAW ]);\n}\n\nexport default CjsJpegFormat;\n"],"names":["FORMAT_NAME","CjsJpegFormat","DEFAULT_VALUES","constructor","options","SetValues","normalizeValues","inputType","GetValues","Read","input","readWithValues","ReadAsync","Inspect","inspectWithValues","IsSupported","isSupportedWithValues","ToJSON","value","toJsonValue","read","readAsync","inspect","isSupported","toJSON","isJPEG","toBytes","isJPG","OUTPUT_IMAGE","OUTPUT_RGBA","OUTPUT_RAW","OUTPUT_JSON","OUTPUT_JPEG_JSON","type","Object","freeze","mediaTypes","inputTypes","outputTypes","debugOutputTypes"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CjsJpegFormat.js","sources":["../../../../src/formats/jpeg/CjsJpegFormat.js"],"sourcesContent":["import {\n DEFAULT_VALUES,\n OUTPUT_IMAGE,\n OUTPUT_JSON,\n OUTPUT_RAW,\n OUTPUT_RGBA,\n inspectWithValues,\n isJPEG,\n isJPG,\n isSupportedWithValues,\n normalizeValues,\n readWithValues,\n toBytes,\n toJsonValue\n} from \"./core/helpers.js\";\n\nconst FORMAT_NAME = \"CjsJpegFormat\";\n\nexport class CjsJpegFormat\n{\n #values = DEFAULT_VALUES;\n\n /**\n * Create a reusable JPEG format profile.\n *\n * @param {object} [options] Default read/inspect options.\n */\n constructor(options = {})\n {\n this.SetValues(options);\n }\n\n /**\n * Merge options into this profile.\n *\n * @param {object} [options] Values to merge.\n * @returns {CjsJpegFormat} This format profile.\n */\n SetValues(options = {})\n {\n this.#values = normalizeValues(this.#values, { inputType: \"jpeg\", ...options }, FORMAT_NAME);\n return this;\n }\n\n /**\n * Get normalized profile values with optional per-call overrides.\n *\n * @param {object} [options] Per-call values.\n * @returns {object} Normalized read values.\n */\n GetValues(options = {})\n {\n return normalizeValues(this.#values, { inputType: \"jpeg\", ...options }, FORMAT_NAME);\n }\n\n /**\n * Read JPEG bytes with this profile.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input JPEG bytes.\n * @param {object} [options] Per-call values.\n * @returns {object} GPU-free raw/debug payload for the selected emit target.\n */\n Read(input, options = {})\n {\n return readWithValues(input, this.GetValues(options), \"jpeg\");\n }\n\n /**\n * Read JPEG bytes asynchronously with this profile.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input JPEG bytes.\n * @param {object} [options] Per-call values.\n * @returns {Promise<object>} GPU-free raw/debug payload for the selected emit target.\n */\n async ReadAsync(input, options = {})\n {\n return this.Read(input, options);\n }\n\n /**\n * Inspect JPEG bytes without decoding image data.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input JPEG bytes.\n * @param {object} [options] Per-call values.\n * @returns {object} JPEG marker/header metadata.\n */\n Inspect(input, options = {})\n {\n return inspectWithValues(input, this.GetValues(options), \"jpeg\");\n }\n\n /**\n * Report whether JPEG input and requested output variants are supported.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input JPEG bytes.\n * @param {object} [options] Per-call values.\n * @returns {object} Support/probe report.\n */\n IsSupported(input, options = {})\n {\n return isSupportedWithValues(input, this.GetValues(options), \"jpeg\");\n }\n\n /**\n * Convert format output into JSON-compatible debug data.\n *\n * @param {any} value Format output.\n * @returns {any} JSON-compatible value.\n */\n ToJSON(value)\n {\n return toJsonValue(value);\n }\n\n /**\n * One-shot JPEG read.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input JPEG bytes.\n * @param {object} [options] Read options.\n * @returns {object} GPU-free raw/debug payload for the selected emit target.\n */\n static read(input, options = {})\n {\n return readWithValues(input, normalizeValues(DEFAULT_VALUES, { inputType: \"jpeg\", ...options }, FORMAT_NAME), \"jpeg\");\n }\n\n /**\n * One-shot asynchronous JPEG read.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input JPEG bytes.\n * @param {object} [options] Read options.\n * @returns {Promise<object>} GPU-free raw/debug payload for the selected emit target.\n */\n static async readAsync(input, options = {})\n {\n return CjsJpegFormat.read(input, options);\n }\n\n /**\n * One-shot JPEG inspection.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input JPEG bytes.\n * @param {object} [options] Inspect options.\n * @returns {object} JPEG marker/header metadata.\n */\n static inspect(input, options = {})\n {\n return inspectWithValues(input, normalizeValues(DEFAULT_VALUES, { inputType: \"jpeg\", ...options }, FORMAT_NAME), \"jpeg\");\n }\n\n /**\n * One-shot JPEG support probe.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input JPEG bytes.\n * @param {object} [options] Probe options.\n * @returns {object} Support/probe report.\n */\n static isSupported(input, options = {})\n {\n return isSupportedWithValues(input, normalizeValues(DEFAULT_VALUES, { inputType: \"jpeg\", ...options }, FORMAT_NAME), \"jpeg\");\n }\n\n /**\n * Convert format output into JSON-compatible debug data.\n *\n * @param {any} value Format output.\n * @returns {any} JSON-compatible value.\n */\n static toJSON(value)\n {\n return toJsonValue(value);\n }\n\n /**\n * Test whether bytes look like a JPEG file.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input Candidate JPEG bytes.\n * @returns {boolean} True when a JPEG SOI marker is present.\n */\n static isJPEG(input)\n {\n try\n {\n return isJPEG(toBytes(input));\n }\n catch\n {\n return false;\n }\n }\n\n /**\n * Test whether bytes look like a JPG/JPEG file.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input Candidate JPG bytes.\n * @returns {boolean} True when a JPEG SOI marker is present.\n */\n static isJPG(input)\n {\n try\n {\n return isJPG(toBytes(input));\n }\n catch\n {\n return false;\n }\n }\n\n /**\n * Emit targets for this format (canonical frozen enum).\n */\n static Output = Object.freeze({\n IMAGE: OUTPUT_IMAGE,\n RGBA: OUTPUT_RGBA,\n RAW: OUTPUT_RAW,\n JSON: OUTPUT_JSON\n });\n static OUTPUT_JPEG_JSON = \"jpegJson\";\n static type = Object.freeze([ \"image\" ]);\n static mediaTypes = Object.freeze([ \"image\" ]);\n static inputTypes = Object.freeze([ \"jpg\", \"jpeg\" ]);\n static outputTypes = Object.freeze([ OUTPUT_IMAGE, OUTPUT_RGBA ]);\n static debugOutputTypes = Object.freeze([ \"jpegJson\", OUTPUT_RAW ]);\n}\n\nexport default CjsJpegFormat;\n"],"names":["FORMAT_NAME","CjsJpegFormat","DEFAULT_VALUES","constructor","options","SetValues","normalizeValues","inputType","GetValues","Read","input","readWithValues","ReadAsync","Inspect","inspectWithValues","IsSupported","isSupportedWithValues","ToJSON","value","toJsonValue","read","readAsync","inspect","isSupported","toJSON","isJPEG","toBytes","isJPG","Output","Object","freeze","IMAGE","OUTPUT_IMAGE","RGBA","OUTPUT_RGBA","RAW","OUTPUT_RAW","JSON","OUTPUT_JSON","OUTPUT_JPEG_JSON","type","mediaTypes","inputTypes","outputTypes","debugOutputTypes"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { DEFAULT_VALUES, normalizeValues, readWithValues, inspectWithValues, isSupportedWithValues, toJsonValue, isMP3, toBytes,
|
|
1
|
+
import { DEFAULT_VALUES, normalizeValues, readWithValues, inspectWithValues, isSupportedWithValues, toJsonValue, isMP3, toBytes, OUTPUT_JSON, OUTPUT_RAW, OUTPUT_PCM, OUTPUT_AUDIO } from './core/helpers.js';
|
|
2
2
|
|
|
3
3
|
const FORMAT_NAME = "CjsMp3Format";
|
|
4
4
|
class CjsMp3Format {
|
|
@@ -170,10 +170,16 @@ class CjsMp3Format {
|
|
|
170
170
|
return false;
|
|
171
171
|
}
|
|
172
172
|
}
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
173
|
+
|
|
174
|
+
/**
|
|
175
|
+
* Emit targets for this format (canonical frozen enum).
|
|
176
|
+
*/
|
|
177
|
+
static Output = Object.freeze({
|
|
178
|
+
AUDIO: OUTPUT_AUDIO,
|
|
179
|
+
PCM: OUTPUT_PCM,
|
|
180
|
+
RAW: OUTPUT_RAW,
|
|
181
|
+
JSON: OUTPUT_JSON
|
|
182
|
+
});
|
|
177
183
|
static OUTPUT_MP3_JSON = "mp3Json";
|
|
178
184
|
static type = Object.freeze(["audio"]);
|
|
179
185
|
static mediaTypes = Object.freeze(["audio"]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CjsMp3Format.js","sources":["../../../../src/formats/mp3/CjsMp3Format.js"],"sourcesContent":["import {\n DEFAULT_VALUES,\n OUTPUT_AUDIO,\n OUTPUT_JSON,\n OUTPUT_PCM,\n OUTPUT_RAW,\n inspectWithValues,\n isMP3,\n isSupportedWithValues,\n normalizeValues,\n readWithValues,\n toBytes,\n toJsonValue\n} from \"./core/helpers.js\";\n\nconst FORMAT_NAME = \"CjsMp3Format\";\n\nexport class CjsMp3Format\n{\n #values = DEFAULT_VALUES;\n\n /**\n * Create a reusable MP3 format profile.\n *\n * @param {object} [options] Default read/inspect options.\n */\n constructor(options = {})\n {\n this.SetValues(options);\n }\n\n /**\n * Merge options into this profile.\n *\n * @param {object} [options] Values to merge.\n * @returns {CjsMp3Format} This format profile.\n */\n SetValues(options = {})\n {\n this.#values = normalizeValues(this.#values, { inputType: \"mp3\", ...options }, FORMAT_NAME);\n return this;\n }\n\n /**\n * Get normalized profile values with optional per-call overrides.\n *\n * @param {object} [options] Per-call values.\n * @returns {object} Normalized read values.\n */\n GetValues(options = {})\n {\n return normalizeValues(this.#values, { inputType: \"mp3\", ...options }, FORMAT_NAME);\n }\n\n /**\n * Read MP3 bytes with this profile.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input MP3 bytes.\n * @param {object} [options] Per-call values.\n * @returns {object} GPU-free raw/debug payload for the selected emit target.\n */\n Read(input, options = {})\n {\n return readWithValues(input, this.GetValues(options), \"mp3\");\n }\n\n /**\n * Read MP3 bytes asynchronously with this profile.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input MP3 bytes.\n * @param {object} [options] Per-call values.\n * @returns {Promise<object>} GPU-free raw/debug payload for the selected emit target.\n */\n async ReadAsync(input, options = {})\n {\n return this.Read(input, options);\n }\n\n /**\n * Inspect MP3 bytes without decoding audio frames.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input MP3 bytes.\n * @param {object} [options] Per-call values.\n * @returns {object} MP3 header metadata.\n */\n Inspect(input, options = {})\n {\n return inspectWithValues(input, this.GetValues(options), \"mp3\");\n }\n\n /**\n * Report whether MP3 input and requested output variants are supported.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input MP3 bytes.\n * @param {object} [options] Per-call values.\n * @returns {object} Support/probe report.\n */\n IsSupported(input, options = {})\n {\n return isSupportedWithValues(input, this.GetValues(options), \"mp3\");\n }\n\n /**\n * Convert format output into JSON-compatible debug data.\n *\n * @param {any} value Format output.\n * @returns {any} JSON-compatible value.\n */\n ToJSON(value)\n {\n return toJsonValue(value);\n }\n\n /**\n * One-shot MP3 read.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input MP3 bytes.\n * @param {object} [options] Read options.\n * @returns {object} GPU-free raw/debug payload for the selected emit target.\n */\n static read(input, options = {})\n {\n return readWithValues(input, normalizeValues(DEFAULT_VALUES, { inputType: \"mp3\", ...options }, FORMAT_NAME), \"mp3\");\n }\n\n /**\n * One-shot asynchronous MP3 read.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input MP3 bytes.\n * @param {object} [options] Read options.\n * @returns {Promise<object>} GPU-free raw/debug payload for the selected emit target.\n */\n static async readAsync(input, options = {})\n {\n return CjsMp3Format.read(input, options);\n }\n\n /**\n * One-shot MP3 inspection.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input MP3 bytes.\n * @param {object} [options] Inspect options.\n * @returns {object} MP3 header metadata.\n */\n static inspect(input, options = {})\n {\n return inspectWithValues(input, normalizeValues(DEFAULT_VALUES, { inputType: \"mp3\", ...options }, FORMAT_NAME), \"mp3\");\n }\n\n /**\n * One-shot MP3 support probe.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input MP3 bytes.\n * @param {object} [options] Probe options.\n * @returns {object} Support/probe report.\n */\n static isSupported(input, options = {})\n {\n return isSupportedWithValues(input, normalizeValues(DEFAULT_VALUES, { inputType: \"mp3\", ...options }, FORMAT_NAME), \"mp3\");\n }\n\n /**\n * Convert format output into JSON-compatible debug data.\n *\n * @param {any} value Format output.\n * @returns {any} JSON-compatible value.\n */\n static toJSON(value)\n {\n return toJsonValue(value);\n }\n\n /**\n * Test whether bytes look like an MP3 file.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input Candidate MP3 bytes.\n * @returns {boolean} True when ID3 or MPEG frame sync is present.\n */\n static isMP3(input)\n {\n try\n {\n return isMP3(toBytes(input));\n }\n catch\n {\n return false;\n }\n }\n\n
|
|
1
|
+
{"version":3,"file":"CjsMp3Format.js","sources":["../../../../src/formats/mp3/CjsMp3Format.js"],"sourcesContent":["import {\n DEFAULT_VALUES,\n OUTPUT_AUDIO,\n OUTPUT_JSON,\n OUTPUT_PCM,\n OUTPUT_RAW,\n inspectWithValues,\n isMP3,\n isSupportedWithValues,\n normalizeValues,\n readWithValues,\n toBytes,\n toJsonValue\n} from \"./core/helpers.js\";\n\nconst FORMAT_NAME = \"CjsMp3Format\";\n\nexport class CjsMp3Format\n{\n #values = DEFAULT_VALUES;\n\n /**\n * Create a reusable MP3 format profile.\n *\n * @param {object} [options] Default read/inspect options.\n */\n constructor(options = {})\n {\n this.SetValues(options);\n }\n\n /**\n * Merge options into this profile.\n *\n * @param {object} [options] Values to merge.\n * @returns {CjsMp3Format} This format profile.\n */\n SetValues(options = {})\n {\n this.#values = normalizeValues(this.#values, { inputType: \"mp3\", ...options }, FORMAT_NAME);\n return this;\n }\n\n /**\n * Get normalized profile values with optional per-call overrides.\n *\n * @param {object} [options] Per-call values.\n * @returns {object} Normalized read values.\n */\n GetValues(options = {})\n {\n return normalizeValues(this.#values, { inputType: \"mp3\", ...options }, FORMAT_NAME);\n }\n\n /**\n * Read MP3 bytes with this profile.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input MP3 bytes.\n * @param {object} [options] Per-call values.\n * @returns {object} GPU-free raw/debug payload for the selected emit target.\n */\n Read(input, options = {})\n {\n return readWithValues(input, this.GetValues(options), \"mp3\");\n }\n\n /**\n * Read MP3 bytes asynchronously with this profile.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input MP3 bytes.\n * @param {object} [options] Per-call values.\n * @returns {Promise<object>} GPU-free raw/debug payload for the selected emit target.\n */\n async ReadAsync(input, options = {})\n {\n return this.Read(input, options);\n }\n\n /**\n * Inspect MP3 bytes without decoding audio frames.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input MP3 bytes.\n * @param {object} [options] Per-call values.\n * @returns {object} MP3 header metadata.\n */\n Inspect(input, options = {})\n {\n return inspectWithValues(input, this.GetValues(options), \"mp3\");\n }\n\n /**\n * Report whether MP3 input and requested output variants are supported.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input MP3 bytes.\n * @param {object} [options] Per-call values.\n * @returns {object} Support/probe report.\n */\n IsSupported(input, options = {})\n {\n return isSupportedWithValues(input, this.GetValues(options), \"mp3\");\n }\n\n /**\n * Convert format output into JSON-compatible debug data.\n *\n * @param {any} value Format output.\n * @returns {any} JSON-compatible value.\n */\n ToJSON(value)\n {\n return toJsonValue(value);\n }\n\n /**\n * One-shot MP3 read.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input MP3 bytes.\n * @param {object} [options] Read options.\n * @returns {object} GPU-free raw/debug payload for the selected emit target.\n */\n static read(input, options = {})\n {\n return readWithValues(input, normalizeValues(DEFAULT_VALUES, { inputType: \"mp3\", ...options }, FORMAT_NAME), \"mp3\");\n }\n\n /**\n * One-shot asynchronous MP3 read.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input MP3 bytes.\n * @param {object} [options] Read options.\n * @returns {Promise<object>} GPU-free raw/debug payload for the selected emit target.\n */\n static async readAsync(input, options = {})\n {\n return CjsMp3Format.read(input, options);\n }\n\n /**\n * One-shot MP3 inspection.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input MP3 bytes.\n * @param {object} [options] Inspect options.\n * @returns {object} MP3 header metadata.\n */\n static inspect(input, options = {})\n {\n return inspectWithValues(input, normalizeValues(DEFAULT_VALUES, { inputType: \"mp3\", ...options }, FORMAT_NAME), \"mp3\");\n }\n\n /**\n * One-shot MP3 support probe.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input MP3 bytes.\n * @param {object} [options] Probe options.\n * @returns {object} Support/probe report.\n */\n static isSupported(input, options = {})\n {\n return isSupportedWithValues(input, normalizeValues(DEFAULT_VALUES, { inputType: \"mp3\", ...options }, FORMAT_NAME), \"mp3\");\n }\n\n /**\n * Convert format output into JSON-compatible debug data.\n *\n * @param {any} value Format output.\n * @returns {any} JSON-compatible value.\n */\n static toJSON(value)\n {\n return toJsonValue(value);\n }\n\n /**\n * Test whether bytes look like an MP3 file.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input Candidate MP3 bytes.\n * @returns {boolean} True when ID3 or MPEG frame sync is present.\n */\n static isMP3(input)\n {\n try\n {\n return isMP3(toBytes(input));\n }\n catch\n {\n return false;\n }\n }\n\n /**\n * Emit targets for this format (canonical frozen enum).\n */\n static Output = Object.freeze({\n AUDIO: OUTPUT_AUDIO,\n PCM: OUTPUT_PCM,\n RAW: OUTPUT_RAW,\n JSON: OUTPUT_JSON\n });\n static OUTPUT_MP3_JSON = \"mp3Json\";\n static type = Object.freeze([ \"audio\" ]);\n static mediaTypes = Object.freeze([ \"audio\" ]);\n static inputTypes = Object.freeze([ \"mp3\" ]);\n static outputTypes = Object.freeze([]);\n static debugOutputTypes = Object.freeze([ \"mp3Json\", OUTPUT_RAW ]);\n}\n\nexport default CjsMp3Format;\n"],"names":["FORMAT_NAME","CjsMp3Format","DEFAULT_VALUES","constructor","options","SetValues","normalizeValues","inputType","GetValues","Read","input","readWithValues","ReadAsync","Inspect","inspectWithValues","IsSupported","isSupportedWithValues","ToJSON","value","toJsonValue","read","readAsync","inspect","isSupported","toJSON","isMP3","toBytes","Output","Object","freeze","AUDIO","OUTPUT_AUDIO","PCM","OUTPUT_PCM","RAW","OUTPUT_RAW","JSON","OUTPUT_JSON","OUTPUT_MP3_JSON","type","mediaTypes","inputTypes","outputTypes","debugOutputTypes"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { DEFAULT_VALUES, normalizeValues, readWithValues, inspectWithValues, isSupportedWithValues, toJsonValue, isMP4, toBytes,
|
|
1
|
+
import { DEFAULT_VALUES, normalizeValues, readWithValues, inspectWithValues, isSupportedWithValues, toJsonValue, isMP4, toBytes, OUTPUT_JSON, OUTPUT_RAW, OUTPUT_VIDEO } from './core/helpers.js';
|
|
2
2
|
|
|
3
3
|
const FORMAT_NAME = "CjsMp4Format";
|
|
4
4
|
class CjsMp4Format {
|
|
@@ -170,9 +170,15 @@ class CjsMp4Format {
|
|
|
170
170
|
return false;
|
|
171
171
|
}
|
|
172
172
|
}
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
173
|
+
|
|
174
|
+
/**
|
|
175
|
+
* Emit targets for this format (canonical frozen enum).
|
|
176
|
+
*/
|
|
177
|
+
static Output = Object.freeze({
|
|
178
|
+
VIDEO: OUTPUT_VIDEO,
|
|
179
|
+
RAW: OUTPUT_RAW,
|
|
180
|
+
JSON: OUTPUT_JSON
|
|
181
|
+
});
|
|
176
182
|
static OUTPUT_MP4_JSON = "mp4Json";
|
|
177
183
|
static type = Object.freeze(["audio", "video"]);
|
|
178
184
|
static mediaTypes = Object.freeze(["audio", "video"]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CjsMp4Format.js","sources":["../../../../src/formats/mp4/CjsMp4Format.js"],"sourcesContent":["import {\n DEFAULT_VALUES,\n OUTPUT_JSON,\n OUTPUT_RAW,\n OUTPUT_VIDEO,\n inspectWithValues,\n isMP4,\n isSupportedWithValues,\n normalizeValues,\n readWithValues,\n toBytes,\n toJsonValue\n} from \"./core/helpers.js\";\n\nconst FORMAT_NAME = \"CjsMp4Format\";\n\nexport class CjsMp4Format\n{\n #values = DEFAULT_VALUES;\n\n /**\n * Create a reusable MP4 format profile.\n *\n * @param {object} [options] Default read/inspect options.\n */\n constructor(options = {})\n {\n this.SetValues(options);\n }\n\n /**\n * Merge options into this profile.\n *\n * @param {object} [options] Values to merge.\n * @returns {CjsMp4Format} This format profile.\n */\n SetValues(options = {})\n {\n this.#values = normalizeValues(this.#values, { inputType: \"mp4\", ...options }, FORMAT_NAME);\n return this;\n }\n\n /**\n * Get normalized profile values with optional per-call overrides.\n *\n * @param {object} [options] Per-call values.\n * @returns {object} Normalized read values.\n */\n GetValues(options = {})\n {\n return normalizeValues(this.#values, { inputType: \"mp4\", ...options }, FORMAT_NAME);\n }\n\n /**\n * Read MP4 bytes with this profile.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input MP4 bytes.\n * @param {object} [options] Per-call values.\n * @returns {object} GPU-free raw/debug payload for the selected emit target.\n */\n Read(input, options = {})\n {\n return readWithValues(input, this.GetValues(options), \"mp4\");\n }\n\n /**\n * Read MP4 bytes asynchronously with this profile.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input MP4 bytes.\n * @param {object} [options] Per-call values.\n * @returns {Promise<object>} GPU-free raw/debug payload for the selected emit target.\n */\n async ReadAsync(input, options = {})\n {\n return this.Read(input, options);\n }\n\n /**\n * Inspect MP4 bytes without decoding media samples.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input MP4 bytes.\n * @param {object} [options] Per-call values.\n * @returns {object} MP4 container metadata.\n */\n Inspect(input, options = {})\n {\n return inspectWithValues(input, this.GetValues(options), \"mp4\");\n }\n\n /**\n * Report whether MP4 input and requested output variants are supported.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input MP4 bytes.\n * @param {object} [options] Per-call values.\n * @returns {object} Support/probe report.\n */\n IsSupported(input, options = {})\n {\n return isSupportedWithValues(input, this.GetValues(options), \"mp4\");\n }\n\n /**\n * Convert format output into JSON-compatible debug data.\n *\n * @param {any} value Format output.\n * @returns {any} JSON-compatible value.\n */\n ToJSON(value)\n {\n return toJsonValue(value);\n }\n\n /**\n * One-shot MP4 read.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input MP4 bytes.\n * @param {object} [options] Read options.\n * @returns {object} GPU-free raw/debug payload for the selected emit target.\n */\n static read(input, options = {})\n {\n return readWithValues(input, normalizeValues(DEFAULT_VALUES, { inputType: \"mp4\", ...options }, FORMAT_NAME), \"mp4\");\n }\n\n /**\n * One-shot asynchronous MP4 read.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input MP4 bytes.\n * @param {object} [options] Read options.\n * @returns {Promise<object>} GPU-free raw/debug payload for the selected emit target.\n */\n static async readAsync(input, options = {})\n {\n return CjsMp4Format.read(input, options);\n }\n\n /**\n * One-shot MP4 inspection.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input MP4 bytes.\n * @param {object} [options] Inspect options.\n * @returns {object} MP4 container metadata.\n */\n static inspect(input, options = {})\n {\n return inspectWithValues(input, normalizeValues(DEFAULT_VALUES, { inputType: \"mp4\", ...options }, FORMAT_NAME), \"mp4\");\n }\n\n /**\n * One-shot MP4 support probe.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input MP4 bytes.\n * @param {object} [options] Probe options.\n * @returns {object} Support/probe report.\n */\n static isSupported(input, options = {})\n {\n return isSupportedWithValues(input, normalizeValues(DEFAULT_VALUES, { inputType: \"mp4\", ...options }, FORMAT_NAME), \"mp4\");\n }\n\n /**\n * Convert format output into JSON-compatible debug data.\n *\n * @param {any} value Format output.\n * @returns {any} JSON-compatible value.\n */\n static toJSON(value)\n {\n return toJsonValue(value);\n }\n\n /**\n * Test whether bytes look like an MP4 file.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input Candidate MP4 bytes.\n * @returns {boolean} True when an MP4-compatible ftyp box is present.\n */\n static isMP4(input)\n {\n try\n {\n return isMP4(toBytes(input));\n }\n catch\n {\n return false;\n }\n }\n\n
|
|
1
|
+
{"version":3,"file":"CjsMp4Format.js","sources":["../../../../src/formats/mp4/CjsMp4Format.js"],"sourcesContent":["import {\n DEFAULT_VALUES,\n OUTPUT_JSON,\n OUTPUT_RAW,\n OUTPUT_VIDEO,\n inspectWithValues,\n isMP4,\n isSupportedWithValues,\n normalizeValues,\n readWithValues,\n toBytes,\n toJsonValue\n} from \"./core/helpers.js\";\n\nconst FORMAT_NAME = \"CjsMp4Format\";\n\nexport class CjsMp4Format\n{\n #values = DEFAULT_VALUES;\n\n /**\n * Create a reusable MP4 format profile.\n *\n * @param {object} [options] Default read/inspect options.\n */\n constructor(options = {})\n {\n this.SetValues(options);\n }\n\n /**\n * Merge options into this profile.\n *\n * @param {object} [options] Values to merge.\n * @returns {CjsMp4Format} This format profile.\n */\n SetValues(options = {})\n {\n this.#values = normalizeValues(this.#values, { inputType: \"mp4\", ...options }, FORMAT_NAME);\n return this;\n }\n\n /**\n * Get normalized profile values with optional per-call overrides.\n *\n * @param {object} [options] Per-call values.\n * @returns {object} Normalized read values.\n */\n GetValues(options = {})\n {\n return normalizeValues(this.#values, { inputType: \"mp4\", ...options }, FORMAT_NAME);\n }\n\n /**\n * Read MP4 bytes with this profile.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input MP4 bytes.\n * @param {object} [options] Per-call values.\n * @returns {object} GPU-free raw/debug payload for the selected emit target.\n */\n Read(input, options = {})\n {\n return readWithValues(input, this.GetValues(options), \"mp4\");\n }\n\n /**\n * Read MP4 bytes asynchronously with this profile.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input MP4 bytes.\n * @param {object} [options] Per-call values.\n * @returns {Promise<object>} GPU-free raw/debug payload for the selected emit target.\n */\n async ReadAsync(input, options = {})\n {\n return this.Read(input, options);\n }\n\n /**\n * Inspect MP4 bytes without decoding media samples.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input MP4 bytes.\n * @param {object} [options] Per-call values.\n * @returns {object} MP4 container metadata.\n */\n Inspect(input, options = {})\n {\n return inspectWithValues(input, this.GetValues(options), \"mp4\");\n }\n\n /**\n * Report whether MP4 input and requested output variants are supported.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input MP4 bytes.\n * @param {object} [options] Per-call values.\n * @returns {object} Support/probe report.\n */\n IsSupported(input, options = {})\n {\n return isSupportedWithValues(input, this.GetValues(options), \"mp4\");\n }\n\n /**\n * Convert format output into JSON-compatible debug data.\n *\n * @param {any} value Format output.\n * @returns {any} JSON-compatible value.\n */\n ToJSON(value)\n {\n return toJsonValue(value);\n }\n\n /**\n * One-shot MP4 read.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input MP4 bytes.\n * @param {object} [options] Read options.\n * @returns {object} GPU-free raw/debug payload for the selected emit target.\n */\n static read(input, options = {})\n {\n return readWithValues(input, normalizeValues(DEFAULT_VALUES, { inputType: \"mp4\", ...options }, FORMAT_NAME), \"mp4\");\n }\n\n /**\n * One-shot asynchronous MP4 read.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input MP4 bytes.\n * @param {object} [options] Read options.\n * @returns {Promise<object>} GPU-free raw/debug payload for the selected emit target.\n */\n static async readAsync(input, options = {})\n {\n return CjsMp4Format.read(input, options);\n }\n\n /**\n * One-shot MP4 inspection.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input MP4 bytes.\n * @param {object} [options] Inspect options.\n * @returns {object} MP4 container metadata.\n */\n static inspect(input, options = {})\n {\n return inspectWithValues(input, normalizeValues(DEFAULT_VALUES, { inputType: \"mp4\", ...options }, FORMAT_NAME), \"mp4\");\n }\n\n /**\n * One-shot MP4 support probe.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input MP4 bytes.\n * @param {object} [options] Probe options.\n * @returns {object} Support/probe report.\n */\n static isSupported(input, options = {})\n {\n return isSupportedWithValues(input, normalizeValues(DEFAULT_VALUES, { inputType: \"mp4\", ...options }, FORMAT_NAME), \"mp4\");\n }\n\n /**\n * Convert format output into JSON-compatible debug data.\n *\n * @param {any} value Format output.\n * @returns {any} JSON-compatible value.\n */\n static toJSON(value)\n {\n return toJsonValue(value);\n }\n\n /**\n * Test whether bytes look like an MP4 file.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input Candidate MP4 bytes.\n * @returns {boolean} True when an MP4-compatible ftyp box is present.\n */\n static isMP4(input)\n {\n try\n {\n return isMP4(toBytes(input));\n }\n catch\n {\n return false;\n }\n }\n\n /**\n * Emit targets for this format (canonical frozen enum).\n */\n static Output = Object.freeze({\n VIDEO: OUTPUT_VIDEO,\n RAW: OUTPUT_RAW,\n JSON: OUTPUT_JSON\n });\n static OUTPUT_MP4_JSON = \"mp4Json\";\n static type = Object.freeze([ \"audio\", \"video\" ]);\n static mediaTypes = Object.freeze([ \"audio\", \"video\" ]);\n static inputTypes = Object.freeze([ \"mp4\", \"m4v\", \"m4a\" ]);\n static outputTypes = Object.freeze([ OUTPUT_VIDEO ]);\n static debugOutputTypes = Object.freeze([ \"mp4Json\", OUTPUT_RAW ]);\n}\n\nexport default CjsMp4Format;\n"],"names":["FORMAT_NAME","CjsMp4Format","DEFAULT_VALUES","constructor","options","SetValues","normalizeValues","inputType","GetValues","Read","input","readWithValues","ReadAsync","Inspect","inspectWithValues","IsSupported","isSupportedWithValues","ToJSON","value","toJsonValue","read","readAsync","inspect","isSupported","toJSON","isMP4","toBytes","Output","Object","freeze","VIDEO","OUTPUT_VIDEO","RAW","OUTPUT_RAW","JSON","OUTPUT_JSON","OUTPUT_MP4_JSON","type","mediaTypes","inputTypes","outputTypes","debugOutputTypes"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { DEFAULT_VALUES, normalizeValues, validateClassKey, validateClass, readWithValues, inspectWithValues, toJsonValue, importNodeModule, toText,
|
|
1
|
+
import { DEFAULT_VALUES, normalizeValues, validateClassKey, validateClass, readWithValues, inspectWithValues, toJsonValue, importNodeModule, toText, OUTPUT_CMF, OUTPUT_GR2, OUTPUT_SHARED, OUTPUT_OBJ_JSON, OUTPUT_JSON, CLASS_KEYS } from './core/helpers.js';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* Exposed CarbonEngineJS-facing OBJ format class.
|
|
@@ -230,11 +230,17 @@ class CjsObjFormat {
|
|
|
230
230
|
return false;
|
|
231
231
|
}
|
|
232
232
|
}
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
static
|
|
233
|
+
|
|
234
|
+
/**
|
|
235
|
+
* Emit targets for this format (canonical frozen enum).
|
|
236
|
+
*/
|
|
237
|
+
static Output = Object.freeze({
|
|
238
|
+
JSON: OUTPUT_JSON,
|
|
239
|
+
OBJ_JSON: OUTPUT_OBJ_JSON,
|
|
240
|
+
SHARED: OUTPUT_SHARED,
|
|
241
|
+
GR2: OUTPUT_GR2,
|
|
242
|
+
CMF: OUTPUT_CMF
|
|
243
|
+
});
|
|
238
244
|
static CLASS_KEYS = CLASS_KEYS;
|
|
239
245
|
static type = Object.freeze(["geometry"]);
|
|
240
246
|
static mediaTypes = Object.freeze(["geometry"]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CjsObjFormat.js","sources":["../../../../src/formats/obj/CjsObjFormat.js"],"sourcesContent":["/**\n * Exposed CarbonEngineJS-facing OBJ format class.\n *\n * Keep this file small and reviewable: OBJ parsing, mesh rebuild helpers,\n * option normalization, and JSON hydration live under src/core.\n */\n\nimport {\n CLASS_KEYS,\n DEFAULT_VALUES,\n OUTPUT_CMF,\n OUTPUT_GR2,\n OUTPUT_JSON,\n OUTPUT_OBJ_JSON,\n OUTPUT_SHARED,\n importNodeModule,\n inspectWithValues,\n normalizeValues,\n readWithValues,\n toJsonValue,\n toText,\n validateClass,\n validateClassKey\n} from \"./core/helpers.js\";\n\nconst FORMAT_NAME = \"CjsObjFormat\";\n\n/**\n * CarbonEngineJS-facing Wavefront OBJ format surface.\n *\n * The Cjs prefix marks this as a JavaScript format/construction boundary.\n * OBJ is the current import source; the public read contract is the shared\n * CarbonEngineJS JSON mesh schema.\n */\nexport class CjsObjFormat\n{\n\n #emit = DEFAULT_VALUES.emit;\n #source = DEFAULT_VALUES.source;\n #packTangents = DEFAULT_VALUES.packTangents;\n #uvHandedness = DEFAULT_VALUES.uvHandedness;\n #rebuildMissingNormals = DEFAULT_VALUES.rebuildMissingNormals;\n #rebuildMissingTangents = DEFAULT_VALUES.rebuildMissingTangents;\n #rebuildMissingBiNormals = DEFAULT_VALUES.rebuildMissingBiNormals;\n #classes = DEFAULT_VALUES.classes;\n\n /**\n * Create a reusable format profile.\n *\n * @param {object} [options] Default format values.\n */\n constructor(options = {})\n {\n this.SetValues(options);\n }\n\n /**\n * Set format values for this reusable profile.\n *\n * @param {object} [options] Values to merge into the profile.\n * @returns {CjsObjFormat} This format profile.\n */\n SetValues(options = {})\n {\n const values = normalizeValues(this.GetValues(), options, FORMAT_NAME);\n\n this.#emit = values.emit;\n this.#source = values.source;\n this.#packTangents = values.packTangents;\n this.#uvHandedness = values.uvHandedness;\n this.#rebuildMissingNormals = values.rebuildMissingNormals;\n this.#rebuildMissingTangents = values.rebuildMissingTangents;\n this.#rebuildMissingBiNormals = values.rebuildMissingBiNormals;\n this.#classes = values.classes;\n\n return this;\n }\n\n /**\n * Get this profile's current values, optionally with per-call overrides.\n *\n * @param {object} [options] Optional values to merge into a copy.\n * @returns {object} A copy of the effective values.\n */\n GetValues(options = {})\n {\n return normalizeValues({\n emit: this.#emit,\n source: this.#source,\n packTangents: this.#packTangents,\n uvHandedness: this.#uvHandedness,\n rebuildMissingNormals: this.#rebuildMissingNormals,\n rebuildMissingTangents: this.#rebuildMissingTangents,\n rebuildMissingBiNormals: this.#rebuildMissingBiNormals,\n classes: this.#classes\n }, options, FORMAT_NAME);\n }\n\n /**\n * Set multiple node-class constructors for this profile.\n *\n * @param {object} [classes] Map of node class keys to constructors.\n * @returns {CjsObjFormat} This format profile.\n */\n SetClasses(classes = {})\n {\n return this.SetValues({ classes });\n }\n\n /**\n * Set one node-class constructor for this profile.\n *\n * @param {string} type Node class key.\n * @param {Function|null|undefined} Class Constructor to use, or nullish to delete.\n * @returns {CjsObjFormat} This format profile.\n */\n SetClass(type, Class)\n {\n if (Class === null || Class === undefined)\n {\n validateClassKey(type, FORMAT_NAME);\n const classes = { ...this.#classes };\n delete classes[type];\n this.#classes = classes;\n return this;\n }\n\n validateClass(type, Class, FORMAT_NAME);\n return this.SetValues({ classes: { [type]: Class } });\n }\n\n /**\n * Get a configured node-class constructor.\n *\n * @param {string} type Node class key.\n * @returns {Function|undefined} The registered constructor, if any.\n */\n GetClass(type)\n {\n validateClassKey(type, FORMAT_NAME);\n return this.#classes[type];\n }\n\n /**\n * Whether this format profile has a constructor registered for a node class key.\n *\n * @param {string} type Node class key.\n * @returns {boolean} True when a constructor is registered.\n */\n HasClass(type)\n {\n return !!this.GetClass(type);\n }\n\n /**\n * Read OBJ text with this profile's values.\n *\n * @param {string|Uint8Array|ArrayBuffer|DataView} input OBJ text or UTF-8 bytes.\n * @param {object} [options] Per-call value overrides.\n * @returns {object} The shared CarbonEngineJS JSON mesh schema.\n */\n Read(input, options = {})\n {\n return readWithValues(this, input, this.GetValues(options), FORMAT_NAME);\n }\n\n /**\n * Inspect OBJ text without hydrating classes.\n *\n * @param {string|Uint8Array|ArrayBuffer|DataView} input OBJ text or UTF-8 bytes.\n * @param {object} [options] Per-call value overrides.\n * @returns {object} Plain summary data.\n */\n Inspect(input, options = {})\n {\n return inspectWithValues(input, this.GetValues(options), FORMAT_NAME);\n }\n\n /**\n * Convert format output to JSON-compatible data.\n *\n * @param {any} value Format output to convert.\n * @returns {any} Plain JSON-compatible data.\n */\n ToJSON(value)\n {\n return toJsonValue(value);\n }\n\n /**\n * Static one-shot read. Static methods use camelCase by convention.\n *\n * @param {string|Uint8Array|ArrayBuffer|DataView} input OBJ text or UTF-8 bytes.\n * @param {object} [options] Format values.\n * @returns {object} The shared CarbonEngineJS JSON mesh schema.\n */\n static read(input, options = {})\n {\n return readWithValues(CjsObjFormat, input, normalizeValues(DEFAULT_VALUES, options, FORMAT_NAME), FORMAT_NAME);\n }\n\n /**\n * Static one-shot inspection.\n *\n * @param {string|Uint8Array|ArrayBuffer|DataView} input OBJ text or UTF-8 bytes.\n * @param {object} [options] Format values.\n * @returns {object} Plain summary data.\n */\n static inspect(input, options = {})\n {\n return inspectWithValues(input, normalizeValues(DEFAULT_VALUES, options, FORMAT_NAME), FORMAT_NAME);\n }\n\n /**\n * Static JSON-compatible conversion.\n *\n * @param {any} value Format output to convert.\n * @returns {any} Plain JSON-compatible data.\n */\n static toJSON(value)\n {\n return toJsonValue(value);\n }\n\n /**\n * Node-only convenience: reads an OBJ file from disk.\n *\n * @param {string} path Path to a Wavefront OBJ file.\n * @param {object} [options] Format values.\n * @returns {Promise<object>} The shared CarbonEngineJS JSON mesh schema.\n */\n static async readFile(path, options = {})\n {\n if (typeof path !== \"string\" || !path)\n {\n throw new TypeError(`${FORMAT_NAME}: readFile path must be a non-empty string`);\n }\n\n const { readFile } = await importNodeModule(\"node:fs/promises\");\n const input = await readFile(path);\n return CjsObjFormat.read(input, { source: path, ...options });\n }\n\n /**\n * Cheap text sniff for OBJ-like mesh data.\n *\n * @param {string|Uint8Array|ArrayBuffer|DataView} input Candidate OBJ text.\n * @returns {boolean} True when at least one vertex and face statement exist.\n */\n static isObj(input)\n {\n try\n {\n const text = toText(input);\n return /^v\\s+/m.test(text) && /^f\\s+/m.test(text);\n }\n catch\n {\n return false;\n }\n }\n\n static OUTPUT_JSON = OUTPUT_JSON;\n static OUTPUT_OBJ_JSON = OUTPUT_OBJ_JSON;\n static OUTPUT_SHARED = OUTPUT_SHARED;\n static OUTPUT_GR2 = OUTPUT_GR2;\n static OUTPUT_CMF = OUTPUT_CMF;\n static CLASS_KEYS = CLASS_KEYS;\n static type = Object.freeze([ \"geometry\" ]);\n static mediaTypes = Object.freeze([ \"geometry\" ]);\n static inputTypes = Object.freeze([ \"obj\" ]);\n static outputTypes = Object.freeze([ OUTPUT_SHARED, OUTPUT_GR2, OUTPUT_CMF ]);\n static debugOutputTypes = Object.freeze([ OUTPUT_JSON, OUTPUT_OBJ_JSON ]);\n\n}\n\nexport default CjsObjFormat;\n"],"names":["FORMAT_NAME","CjsObjFormat","DEFAULT_VALUES","emit","source","packTangents","uvHandedness","rebuildMissingNormals","rebuildMissingTangents","rebuildMissingBiNormals","classes","constructor","options","SetValues","values","normalizeValues","GetValues","SetClasses","SetClass","type","Class","undefined","validateClassKey","validateClass","GetClass","HasClass","Read","input","readWithValues","Inspect","inspectWithValues","ToJSON","value","toJsonValue","read","inspect","toJSON","readFile","path","TypeError","importNodeModule","isObj","text","toText","test","OUTPUT_JSON","OUTPUT_OBJ_JSON","OUTPUT_SHARED","OUTPUT_GR2","OUTPUT_CMF","CLASS_KEYS","Object","freeze","mediaTypes","inputTypes","outputTypes","debugOutputTypes"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CjsObjFormat.js","sources":["../../../../src/formats/obj/CjsObjFormat.js"],"sourcesContent":["/**\n * Exposed CarbonEngineJS-facing OBJ format class.\n *\n * Keep this file small and reviewable: OBJ parsing, mesh rebuild helpers,\n * option normalization, and JSON hydration live under src/core.\n */\n\nimport {\n CLASS_KEYS,\n DEFAULT_VALUES,\n OUTPUT_CMF,\n OUTPUT_GR2,\n OUTPUT_JSON,\n OUTPUT_OBJ_JSON,\n OUTPUT_SHARED,\n importNodeModule,\n inspectWithValues,\n normalizeValues,\n readWithValues,\n toJsonValue,\n toText,\n validateClass,\n validateClassKey\n} from \"./core/helpers.js\";\n\nconst FORMAT_NAME = \"CjsObjFormat\";\n\n/**\n * CarbonEngineJS-facing Wavefront OBJ format surface.\n *\n * The Cjs prefix marks this as a JavaScript format/construction boundary.\n * OBJ is the current import source; the public read contract is the shared\n * CarbonEngineJS JSON mesh schema.\n */\nexport class CjsObjFormat\n{\n\n #emit = DEFAULT_VALUES.emit;\n #source = DEFAULT_VALUES.source;\n #packTangents = DEFAULT_VALUES.packTangents;\n #uvHandedness = DEFAULT_VALUES.uvHandedness;\n #rebuildMissingNormals = DEFAULT_VALUES.rebuildMissingNormals;\n #rebuildMissingTangents = DEFAULT_VALUES.rebuildMissingTangents;\n #rebuildMissingBiNormals = DEFAULT_VALUES.rebuildMissingBiNormals;\n #classes = DEFAULT_VALUES.classes;\n\n /**\n * Create a reusable format profile.\n *\n * @param {object} [options] Default format values.\n */\n constructor(options = {})\n {\n this.SetValues(options);\n }\n\n /**\n * Set format values for this reusable profile.\n *\n * @param {object} [options] Values to merge into the profile.\n * @returns {CjsObjFormat} This format profile.\n */\n SetValues(options = {})\n {\n const values = normalizeValues(this.GetValues(), options, FORMAT_NAME);\n\n this.#emit = values.emit;\n this.#source = values.source;\n this.#packTangents = values.packTangents;\n this.#uvHandedness = values.uvHandedness;\n this.#rebuildMissingNormals = values.rebuildMissingNormals;\n this.#rebuildMissingTangents = values.rebuildMissingTangents;\n this.#rebuildMissingBiNormals = values.rebuildMissingBiNormals;\n this.#classes = values.classes;\n\n return this;\n }\n\n /**\n * Get this profile's current values, optionally with per-call overrides.\n *\n * @param {object} [options] Optional values to merge into a copy.\n * @returns {object} A copy of the effective values.\n */\n GetValues(options = {})\n {\n return normalizeValues({\n emit: this.#emit,\n source: this.#source,\n packTangents: this.#packTangents,\n uvHandedness: this.#uvHandedness,\n rebuildMissingNormals: this.#rebuildMissingNormals,\n rebuildMissingTangents: this.#rebuildMissingTangents,\n rebuildMissingBiNormals: this.#rebuildMissingBiNormals,\n classes: this.#classes\n }, options, FORMAT_NAME);\n }\n\n /**\n * Set multiple node-class constructors for this profile.\n *\n * @param {object} [classes] Map of node class keys to constructors.\n * @returns {CjsObjFormat} This format profile.\n */\n SetClasses(classes = {})\n {\n return this.SetValues({ classes });\n }\n\n /**\n * Set one node-class constructor for this profile.\n *\n * @param {string} type Node class key.\n * @param {Function|null|undefined} Class Constructor to use, or nullish to delete.\n * @returns {CjsObjFormat} This format profile.\n */\n SetClass(type, Class)\n {\n if (Class === null || Class === undefined)\n {\n validateClassKey(type, FORMAT_NAME);\n const classes = { ...this.#classes };\n delete classes[type];\n this.#classes = classes;\n return this;\n }\n\n validateClass(type, Class, FORMAT_NAME);\n return this.SetValues({ classes: { [type]: Class } });\n }\n\n /**\n * Get a configured node-class constructor.\n *\n * @param {string} type Node class key.\n * @returns {Function|undefined} The registered constructor, if any.\n */\n GetClass(type)\n {\n validateClassKey(type, FORMAT_NAME);\n return this.#classes[type];\n }\n\n /**\n * Whether this format profile has a constructor registered for a node class key.\n *\n * @param {string} type Node class key.\n * @returns {boolean} True when a constructor is registered.\n */\n HasClass(type)\n {\n return !!this.GetClass(type);\n }\n\n /**\n * Read OBJ text with this profile's values.\n *\n * @param {string|Uint8Array|ArrayBuffer|DataView} input OBJ text or UTF-8 bytes.\n * @param {object} [options] Per-call value overrides.\n * @returns {object} The shared CarbonEngineJS JSON mesh schema.\n */\n Read(input, options = {})\n {\n return readWithValues(this, input, this.GetValues(options), FORMAT_NAME);\n }\n\n /**\n * Inspect OBJ text without hydrating classes.\n *\n * @param {string|Uint8Array|ArrayBuffer|DataView} input OBJ text or UTF-8 bytes.\n * @param {object} [options] Per-call value overrides.\n * @returns {object} Plain summary data.\n */\n Inspect(input, options = {})\n {\n return inspectWithValues(input, this.GetValues(options), FORMAT_NAME);\n }\n\n /**\n * Convert format output to JSON-compatible data.\n *\n * @param {any} value Format output to convert.\n * @returns {any} Plain JSON-compatible data.\n */\n ToJSON(value)\n {\n return toJsonValue(value);\n }\n\n /**\n * Static one-shot read. Static methods use camelCase by convention.\n *\n * @param {string|Uint8Array|ArrayBuffer|DataView} input OBJ text or UTF-8 bytes.\n * @param {object} [options] Format values.\n * @returns {object} The shared CarbonEngineJS JSON mesh schema.\n */\n static read(input, options = {})\n {\n return readWithValues(CjsObjFormat, input, normalizeValues(DEFAULT_VALUES, options, FORMAT_NAME), FORMAT_NAME);\n }\n\n /**\n * Static one-shot inspection.\n *\n * @param {string|Uint8Array|ArrayBuffer|DataView} input OBJ text or UTF-8 bytes.\n * @param {object} [options] Format values.\n * @returns {object} Plain summary data.\n */\n static inspect(input, options = {})\n {\n return inspectWithValues(input, normalizeValues(DEFAULT_VALUES, options, FORMAT_NAME), FORMAT_NAME);\n }\n\n /**\n * Static JSON-compatible conversion.\n *\n * @param {any} value Format output to convert.\n * @returns {any} Plain JSON-compatible data.\n */\n static toJSON(value)\n {\n return toJsonValue(value);\n }\n\n /**\n * Node-only convenience: reads an OBJ file from disk.\n *\n * @param {string} path Path to a Wavefront OBJ file.\n * @param {object} [options] Format values.\n * @returns {Promise<object>} The shared CarbonEngineJS JSON mesh schema.\n */\n static async readFile(path, options = {})\n {\n if (typeof path !== \"string\" || !path)\n {\n throw new TypeError(`${FORMAT_NAME}: readFile path must be a non-empty string`);\n }\n\n const { readFile } = await importNodeModule(\"node:fs/promises\");\n const input = await readFile(path);\n return CjsObjFormat.read(input, { source: path, ...options });\n }\n\n /**\n * Cheap text sniff for OBJ-like mesh data.\n *\n * @param {string|Uint8Array|ArrayBuffer|DataView} input Candidate OBJ text.\n * @returns {boolean} True when at least one vertex and face statement exist.\n */\n static isObj(input)\n {\n try\n {\n const text = toText(input);\n return /^v\\s+/m.test(text) && /^f\\s+/m.test(text);\n }\n catch\n {\n return false;\n }\n }\n\n /**\n * Emit targets for this format (canonical frozen enum).\n */\n static Output = Object.freeze({\n JSON: OUTPUT_JSON,\n OBJ_JSON: OUTPUT_OBJ_JSON,\n SHARED: OUTPUT_SHARED,\n GR2: OUTPUT_GR2,\n CMF: OUTPUT_CMF\n });\n static CLASS_KEYS = CLASS_KEYS;\n static type = Object.freeze([ \"geometry\" ]);\n static mediaTypes = Object.freeze([ \"geometry\" ]);\n static inputTypes = Object.freeze([ \"obj\" ]);\n static outputTypes = Object.freeze([ OUTPUT_SHARED, OUTPUT_GR2, OUTPUT_CMF ]);\n static debugOutputTypes = Object.freeze([ OUTPUT_JSON, OUTPUT_OBJ_JSON ]);\n\n}\n\nexport default CjsObjFormat;\n"],"names":["FORMAT_NAME","CjsObjFormat","DEFAULT_VALUES","emit","source","packTangents","uvHandedness","rebuildMissingNormals","rebuildMissingTangents","rebuildMissingBiNormals","classes","constructor","options","SetValues","values","normalizeValues","GetValues","SetClasses","SetClass","type","Class","undefined","validateClassKey","validateClass","GetClass","HasClass","Read","input","readWithValues","Inspect","inspectWithValues","ToJSON","value","toJsonValue","read","inspect","toJSON","readFile","path","TypeError","importNodeModule","isObj","text","toText","test","Output","Object","freeze","JSON","OUTPUT_JSON","OBJ_JSON","OUTPUT_OBJ_JSON","SHARED","OUTPUT_SHARED","GR2","OUTPUT_GR2","CMF","OUTPUT_CMF","CLASS_KEYS","mediaTypes","inputTypes","outputTypes","debugOutputTypes"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;;AAoBA,MAAMA,WAAW,GAAG,cAAc;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,YAAY,CACzB;AAEI,EAAA,KAAK,GAAGC,cAAc,CAACC,IAAI;AAC3B,EAAA,OAAO,GAAGD,cAAc,CAACE,MAAM;AAC/B,EAAA,aAAa,GAAGF,cAAc,CAACG,YAAY;AAC3C,EAAA,aAAa,GAAGH,cAAc,CAACI,YAAY;AAC3C,EAAA,sBAAsB,GAAGJ,cAAc,CAACK,qBAAqB;AAC7D,EAAA,uBAAuB,GAAGL,cAAc,CAACM,sBAAsB;AAC/D,EAAA,wBAAwB,GAAGN,cAAc,CAACO,uBAAuB;AACjE,EAAA,QAAQ,GAAGP,cAAc,CAACQ,OAAO;;AAEjC;AACJ;AACA;AACA;AACA;AACIC,EAAAA,WAAWA,CAACC,OAAO,GAAG,EAAE,EACxB;AACI,IAAA,IAAI,CAACC,SAAS,CAACD,OAAO,CAAC;AAC3B,EAAA;;AAEA;AACJ;AACA;AACA;AACA;AACA;AACIC,EAAAA,SAASA,CAACD,OAAO,GAAG,EAAE,EACtB;AACI,IAAA,MAAME,MAAM,GAAGC,eAAe,CAAC,IAAI,CAACC,SAAS,EAAE,EAAEJ,OAAO,EAAEZ,WAAW,CAAC;AAEtE,IAAA,IAAI,CAAC,KAAK,GAAGc,MAAM,CAACX,IAAI;AACxB,IAAA,IAAI,CAAC,OAAO,GAAGW,MAAM,CAACV,MAAM;AAC5B,IAAA,IAAI,CAAC,aAAa,GAAGU,MAAM,CAACT,YAAY;AACxC,IAAA,IAAI,CAAC,aAAa,GAAGS,MAAM,CAACR,YAAY;AACxC,IAAA,IAAI,CAAC,sBAAsB,GAAGQ,MAAM,CAACP,qBAAqB;AAC1D,IAAA,IAAI,CAAC,uBAAuB,GAAGO,MAAM,CAACN,sBAAsB;AAC5D,IAAA,IAAI,CAAC,wBAAwB,GAAGM,MAAM,CAACL,uBAAuB;AAC9D,IAAA,IAAI,CAAC,QAAQ,GAAGK,MAAM,CAACJ,OAAO;AAE9B,IAAA,OAAO,IAAI;AACf,EAAA;;AAEA;AACJ;AACA;AACA;AACA;AACA;AACIM,EAAAA,SAASA,CAACJ,OAAO,GAAG,EAAE,EACtB;AACI,IAAA,OAAOG,eAAe,CAAC;AACnBZ,MAAAA,IAAI,EAAE,IAAI,CAAC,KAAK;AAChBC,MAAAA,MAAM,EAAE,IAAI,CAAC,OAAO;AACpBC,MAAAA,YAAY,EAAE,IAAI,CAAC,aAAa;AAChCC,MAAAA,YAAY,EAAE,IAAI,CAAC,aAAa;AAChCC,MAAAA,qBAAqB,EAAE,IAAI,CAAC,sBAAsB;AAClDC,MAAAA,sBAAsB,EAAE,IAAI,CAAC,uBAAuB;AACpDC,MAAAA,uBAAuB,EAAE,IAAI,CAAC,wBAAwB;MACtDC,OAAO,EAAE,IAAI,CAAC;AAClB,KAAC,EAAEE,OAAO,EAAEZ,WAAW,CAAC;AAC5B,EAAA;;AAEA;AACJ;AACA;AACA;AACA;AACA;AACIiB,EAAAA,UAAUA,CAACP,OAAO,GAAG,EAAE,EACvB;IACI,OAAO,IAAI,CAACG,SAAS,CAAC;AAAEH,MAAAA;AAAQ,KAAC,CAAC;AACtC,EAAA;;AAEA;AACJ;AACA;AACA;AACA;AACA;AACA;AACIQ,EAAAA,QAAQA,CAACC,IAAI,EAAEC,KAAK,EACpB;AACI,IAAA,IAAIA,KAAK,KAAK,IAAI,IAAIA,KAAK,KAAKC,SAAS,EACzC;AACIC,MAAAA,gBAAgB,CAACH,IAAI,EAAEnB,WAAW,CAAC;AACnC,MAAA,MAAMU,OAAO,GAAG;QAAE,GAAG,IAAI,CAAC;OAAU;MACpC,OAAOA,OAAO,CAACS,IAAI,CAAC;AACpB,MAAA,IAAI,CAAC,QAAQ,GAAGT,OAAO;AACvB,MAAA,OAAO,IAAI;AACf,IAAA;AAEAa,IAAAA,aAAa,CAACJ,IAAI,EAAEC,KAAK,EAAEpB,WAAW,CAAC;IACvC,OAAO,IAAI,CAACa,SAAS,CAAC;AAAEH,MAAAA,OAAO,EAAE;AAAE,QAAA,CAACS,IAAI,GAAGC;AAAM;AAAE,KAAC,CAAC;AACzD,EAAA;;AAEA;AACJ;AACA;AACA;AACA;AACA;EACII,QAAQA,CAACL,IAAI,EACb;AACIG,IAAAA,gBAAgB,CAACH,IAAI,EAAEnB,WAAW,CAAC;AACnC,IAAA,OAAO,IAAI,CAAC,QAAQ,CAACmB,IAAI,CAAC;AAC9B,EAAA;;AAEA;AACJ;AACA;AACA;AACA;AACA;EACIM,QAAQA,CAACN,IAAI,EACb;AACI,IAAA,OAAO,CAAC,CAAC,IAAI,CAACK,QAAQ,CAACL,IAAI,CAAC;AAChC,EAAA;;AAEA;AACJ;AACA;AACA;AACA;AACA;AACA;AACIO,EAAAA,IAAIA,CAACC,KAAK,EAAEf,OAAO,GAAG,EAAE,EACxB;AACI,IAAA,OAAOgB,cAAc,CAAC,IAAI,EAAED,KAAK,EAAE,IAAI,CAACX,SAAS,CAACJ,OAAO,CAAC,EAAEZ,WAAW,CAAC;AAC5E,EAAA;;AAEA;AACJ;AACA;AACA;AACA;AACA;AACA;AACI6B,EAAAA,OAAOA,CAACF,KAAK,EAAEf,OAAO,GAAG,EAAE,EAC3B;AACI,IAAA,OAAOkB,iBAAiB,CAACH,KAAK,EAAE,IAAI,CAACX,SAAS,CAACJ,OAAO,CAAc,CAAC;AACzE,EAAA;;AAEA;AACJ;AACA;AACA;AACA;AACA;EACImB,MAAMA,CAACC,KAAK,EACZ;IACI,OAAOC,WAAW,CAACD,KAAK,CAAC;AAC7B,EAAA;;AAEA;AACJ;AACA;AACA;AACA;AACA;AACA;EACI,OAAOE,IAAIA,CAACP,KAAK,EAAEf,OAAO,GAAG,EAAE,EAC/B;AACI,IAAA,OAAOgB,cAAc,CAAC3B,YAAY,EAAE0B,KAAK,EAAEZ,eAAe,CAACb,cAAc,EAAEU,OAAO,EAAEZ,WAAW,CAAC,EAAEA,WAAW,CAAC;AAClH,EAAA;;AAEA;AACJ;AACA;AACA;AACA;AACA;AACA;EACI,OAAOmC,OAAOA,CAACR,KAAK,EAAEf,OAAO,GAAG,EAAE,EAClC;AACI,IAAA,OAAOkB,iBAAiB,CAACH,KAAK,EAAEZ,eAAe,CAACb,cAAc,EAAEU,OAAO,EAAEZ,WAAW,CAAc,CAAC;AACvG,EAAA;;AAEA;AACJ;AACA;AACA;AACA;AACA;EACI,OAAOoC,MAAMA,CAACJ,KAAK,EACnB;IACI,OAAOC,WAAW,CAACD,KAAK,CAAC;AAC7B,EAAA;;AAEA;AACJ;AACA;AACA;AACA;AACA;AACA;EACI,aAAaK,QAAQA,CAACC,IAAI,EAAE1B,OAAO,GAAG,EAAE,EACxC;AACI,IAAA,IAAI,OAAO0B,IAAI,KAAK,QAAQ,IAAI,CAACA,IAAI,EACrC;AACI,MAAA,MAAM,IAAIC,SAAS,CAAC,CAAA,EAAGvC,WAAW,4CAA4C,CAAC;AACnF,IAAA;IAEA,MAAM;AAAEqC,MAAAA;AAAS,KAAC,GAAG,MAAMG,gBAAgB,CAAC,kBAAkB,CAAC;AAC/D,IAAA,MAAMb,KAAK,GAAG,MAAMU,QAAQ,CAACC,IAAI,CAAC;AAClC,IAAA,OAAOrC,YAAY,CAACiC,IAAI,CAACP,KAAK,EAAE;AAAEvB,MAAAA,MAAM,EAAEkC,IAAI;MAAE,GAAG1B;AAAQ,KAAC,CAAC;AACjE,EAAA;;AAEA;AACJ;AACA;AACA;AACA;AACA;EACI,OAAO6B,KAAKA,CAACd,KAAK,EAClB;IACI,IACA;AACI,MAAA,MAAMe,IAAI,GAAGC,MAAM,CAAChB,KAAK,CAAC;AAC1B,MAAA,OAAO,QAAQ,CAACiB,IAAI,CAACF,IAAI,CAAC,IAAI,QAAQ,CAACE,IAAI,CAACF,IAAI,CAAC;AACrD,IAAA,CAAC,CACD,MACA;AACI,MAAA,OAAO,KAAK;AAChB,IAAA;AACJ,EAAA;;AAEA;AACJ;AACA;AACI,EAAA,OAAOG,MAAM,GAAGC,MAAM,CAACC,MAAM,CAAC;AAC1BC,IAAAA,IAAI,EAAEC,WAAW;AACjBC,IAAAA,QAAQ,EAAEC,eAAe;AACzBC,IAAAA,MAAM,EAAEC,aAAa;AACrBC,IAAAA,GAAG,EAAEC,UAAU;AACfC,IAAAA,GAAG,EAAEC;AACT,GAAC,CAAC;EACF,OAAOC,UAAU,GAAGA,UAAU;EAC9B,OAAOvC,IAAI,GAAG2B,MAAM,CAACC,MAAM,CAAC,CAAE,UAAU,CAAE,CAAC;EAC3C,OAAOY,UAAU,GAAGb,MAAM,CAACC,MAAM,CAAC,CAAE,UAAU,CAAE,CAAC;EACjD,OAAOa,UAAU,GAAGd,MAAM,CAACC,MAAM,CAAC,CAAE,KAAK,CAAE,CAAC;AAC5C,EAAA,OAAOc,WAAW,GAAGf,MAAM,CAACC,MAAM,CAAC,CAAEM,aAAa,EAAEE,UAAU,EAAEE,UAAU,CAAE,CAAC;EAC7E,OAAOK,gBAAgB,GAAGhB,MAAM,CAACC,MAAM,CAAC,CAAEE,WAAW,EAAEE,eAAe,CAAE,CAAC;AAE7E;;;;"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { DEFAULT_VALUES, normalizeValues, readWithValues, inspectWithValues, isSupportedWithValues, toJsonValue, isOGG, toBytes,
|
|
1
|
+
import { DEFAULT_VALUES, normalizeValues, readWithValues, inspectWithValues, isSupportedWithValues, toJsonValue, isOGG, toBytes, OUTPUT_JSON, OUTPUT_RAW, OUTPUT_PCM, OUTPUT_AUDIO } from './core/helpers.js';
|
|
2
2
|
|
|
3
3
|
const FORMAT_NAME = "CjsOggFormat";
|
|
4
4
|
class CjsOggFormat {
|
|
@@ -65,8 +65,14 @@ class CjsOggFormat {
|
|
|
65
65
|
return false;
|
|
66
66
|
}
|
|
67
67
|
}
|
|
68
|
-
|
|
69
|
-
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Emit targets for this format (canonical frozen enum).
|
|
71
|
+
*/
|
|
72
|
+
static Output = Object.freeze({
|
|
73
|
+
RAW: OUTPUT_RAW,
|
|
74
|
+
JSON: OUTPUT_JSON
|
|
75
|
+
});
|
|
70
76
|
static OUTPUT_OGG_JSON = "oggJson";
|
|
71
77
|
static OUTPUT_PCM = OUTPUT_PCM;
|
|
72
78
|
static OUTPUT_AUDIO = OUTPUT_AUDIO;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CjsOggFormat.js","sources":["../../../../src/formats/ogg/CjsOggFormat.js"],"sourcesContent":["import {\n DEFAULT_VALUES,\n OUTPUT_AUDIO,\n OUTPUT_JSON,\n OUTPUT_PCM,\n OUTPUT_RAW,\n inspectWithValues,\n isOGG,\n isSupportedWithValues,\n normalizeValues,\n readWithValues,\n toBytes,\n toJsonValue\n} from \"./core/helpers.js\";\n\nconst FORMAT_NAME = \"CjsOggFormat\";\n\nexport class CjsOggFormat\n{\n #values = DEFAULT_VALUES;\n\n constructor(options = {})\n {\n this.SetValues(options);\n }\n\n SetValues(options = {})\n {\n this.#values = normalizeValues(this.#values, { inputType: \"ogg\", ...options }, FORMAT_NAME);\n return this;\n }\n\n GetValues(options = {})\n {\n return normalizeValues(this.#values, { inputType: \"ogg\", ...options }, FORMAT_NAME);\n }\n\n Read(input, options = {})\n {\n return readWithValues(input, this.GetValues(options));\n }\n\n async ReadAsync(input, options = {})\n {\n return this.Read(input, options);\n }\n\n Inspect(input, options = {})\n {\n return inspectWithValues(input, this.GetValues(options));\n }\n\n IsSupported(input, options = {})\n {\n return isSupportedWithValues(input, this.GetValues(options));\n }\n\n ToJSON(value)\n {\n return toJsonValue(value);\n }\n\n static read(input, options = {})\n {\n return readWithValues(input, normalizeValues(DEFAULT_VALUES, { inputType: \"ogg\", ...options }, FORMAT_NAME));\n }\n\n static async readAsync(input, options = {})\n {\n return CjsOggFormat.read(input, options);\n }\n\n static inspect(input, options = {})\n {\n return inspectWithValues(input, normalizeValues(DEFAULT_VALUES, { inputType: \"ogg\", ...options }, FORMAT_NAME));\n }\n\n static isSupported(input, options = {})\n {\n return isSupportedWithValues(input, normalizeValues(DEFAULT_VALUES, { inputType: \"ogg\", ...options }, FORMAT_NAME));\n }\n\n static toJSON(value)\n {\n return toJsonValue(value);\n }\n\n static isOGG(input)\n {\n try\n {\n return isOGG(toBytes(input));\n }\n catch\n {\n return false;\n }\n }\n\n
|
|
1
|
+
{"version":3,"file":"CjsOggFormat.js","sources":["../../../../src/formats/ogg/CjsOggFormat.js"],"sourcesContent":["import {\n DEFAULT_VALUES,\n OUTPUT_AUDIO,\n OUTPUT_JSON,\n OUTPUT_PCM,\n OUTPUT_RAW,\n inspectWithValues,\n isOGG,\n isSupportedWithValues,\n normalizeValues,\n readWithValues,\n toBytes,\n toJsonValue\n} from \"./core/helpers.js\";\n\nconst FORMAT_NAME = \"CjsOggFormat\";\n\nexport class CjsOggFormat\n{\n #values = DEFAULT_VALUES;\n\n constructor(options = {})\n {\n this.SetValues(options);\n }\n\n SetValues(options = {})\n {\n this.#values = normalizeValues(this.#values, { inputType: \"ogg\", ...options }, FORMAT_NAME);\n return this;\n }\n\n GetValues(options = {})\n {\n return normalizeValues(this.#values, { inputType: \"ogg\", ...options }, FORMAT_NAME);\n }\n\n Read(input, options = {})\n {\n return readWithValues(input, this.GetValues(options));\n }\n\n async ReadAsync(input, options = {})\n {\n return this.Read(input, options);\n }\n\n Inspect(input, options = {})\n {\n return inspectWithValues(input, this.GetValues(options));\n }\n\n IsSupported(input, options = {})\n {\n return isSupportedWithValues(input, this.GetValues(options));\n }\n\n ToJSON(value)\n {\n return toJsonValue(value);\n }\n\n static read(input, options = {})\n {\n return readWithValues(input, normalizeValues(DEFAULT_VALUES, { inputType: \"ogg\", ...options }, FORMAT_NAME));\n }\n\n static async readAsync(input, options = {})\n {\n return CjsOggFormat.read(input, options);\n }\n\n static inspect(input, options = {})\n {\n return inspectWithValues(input, normalizeValues(DEFAULT_VALUES, { inputType: \"ogg\", ...options }, FORMAT_NAME));\n }\n\n static isSupported(input, options = {})\n {\n return isSupportedWithValues(input, normalizeValues(DEFAULT_VALUES, { inputType: \"ogg\", ...options }, FORMAT_NAME));\n }\n\n static toJSON(value)\n {\n return toJsonValue(value);\n }\n\n static isOGG(input)\n {\n try\n {\n return isOGG(toBytes(input));\n }\n catch\n {\n return false;\n }\n }\n\n /**\n * Emit targets for this format (canonical frozen enum).\n */\n static Output = Object.freeze({\n RAW: OUTPUT_RAW,\n JSON: OUTPUT_JSON\n });\n static OUTPUT_OGG_JSON = \"oggJson\";\n static OUTPUT_PCM = OUTPUT_PCM;\n static OUTPUT_AUDIO = OUTPUT_AUDIO;\n static type = Object.freeze([ \"audio\", \"video\" ]);\n static mediaTypes = Object.freeze([ \"audio\", \"video\" ]);\n static inputTypes = Object.freeze([ \"ogg\", \"oga\", \"ogv\" ]);\n static outputTypes = Object.freeze([ OUTPUT_PCM, OUTPUT_AUDIO ]);\n static debugOutputTypes = Object.freeze([ \"oggJson\", OUTPUT_RAW ]);\n static implementationStatus = \"vorbis-pcm\";\n}\n\nexport default CjsOggFormat;\n"],"names":["FORMAT_NAME","CjsOggFormat","DEFAULT_VALUES","constructor","options","SetValues","normalizeValues","inputType","GetValues","Read","input","readWithValues","ReadAsync","Inspect","inspectWithValues","IsSupported","isSupportedWithValues","ToJSON","value","toJsonValue","read","readAsync","inspect","isSupported","toJSON","isOGG","toBytes","Output","Object","freeze","RAW","OUTPUT_RAW","JSON","OUTPUT_JSON","OUTPUT_OGG_JSON","OUTPUT_PCM","OUTPUT_AUDIO","type","mediaTypes","inputTypes","outputTypes","debugOutputTypes","implementationStatus"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { DEFAULT_VALUES, normalizeValues, readWithValues, readWithValuesAsync, inspectWithValues, isSupportedWithValues, toJsonValue, isPNG, toBytes,
|
|
1
|
+
import { DEFAULT_VALUES, normalizeValues, readWithValues, readWithValuesAsync, inspectWithValues, isSupportedWithValues, toJsonValue, isPNG, toBytes, OUTPUT_JSON, OUTPUT_RAW, OUTPUT_RGBA, OUTPUT_IMAGE } from './core/helpers.js';
|
|
2
2
|
|
|
3
3
|
const FORMAT_NAME = "CjsPngFormat";
|
|
4
4
|
class CjsPngFormat {
|
|
@@ -173,10 +173,16 @@ class CjsPngFormat {
|
|
|
173
173
|
return false;
|
|
174
174
|
}
|
|
175
175
|
}
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
176
|
+
|
|
177
|
+
/**
|
|
178
|
+
* Emit targets for this format (canonical frozen enum).
|
|
179
|
+
*/
|
|
180
|
+
static Output = Object.freeze({
|
|
181
|
+
IMAGE: OUTPUT_IMAGE,
|
|
182
|
+
RGBA: OUTPUT_RGBA,
|
|
183
|
+
RAW: OUTPUT_RAW,
|
|
184
|
+
JSON: OUTPUT_JSON
|
|
185
|
+
});
|
|
180
186
|
static OUTPUT_PNG_JSON = "pngJson";
|
|
181
187
|
static type = Object.freeze(["image"]);
|
|
182
188
|
static mediaTypes = Object.freeze(["image"]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CjsPngFormat.js","sources":["../../../../src/formats/png/CjsPngFormat.js"],"sourcesContent":["import {\n DEFAULT_VALUES,\n OUTPUT_IMAGE,\n OUTPUT_JSON,\n OUTPUT_RAW,\n OUTPUT_RGBA,\n inspectWithValues,\n isPNG,\n isSupportedWithValues,\n normalizeValues,\n readWithValues,\n readWithValuesAsync,\n toBytes,\n toJsonValue\n} from \"./core/helpers.js\";\n\nconst FORMAT_NAME = \"CjsPngFormat\";\n\nexport class CjsPngFormat\n{\n #values = DEFAULT_VALUES;\n\n /**\n * Create a reusable PNG format profile.\n *\n * @param {object} [options] Default read/inspect options.\n */\n constructor(options = {})\n {\n this.SetValues(options);\n }\n\n /**\n * Merge options into this profile.\n *\n * @param {object} [options] Values to merge.\n * @returns {CjsPngFormat} This format profile.\n */\n SetValues(options = {})\n {\n this.#values = normalizeValues(this.#values, { inputType: \"png\", ...options }, FORMAT_NAME);\n return this;\n }\n\n /**\n * Get normalized profile values with optional per-call overrides.\n *\n * @param {object} [options] Per-call values.\n * @returns {object} Normalized read values.\n */\n GetValues(options = {})\n {\n return normalizeValues(this.#values, { inputType: \"png\", ...options }, FORMAT_NAME);\n }\n\n /**\n * Read PNG bytes with this profile.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input PNG bytes.\n * @param {object} [options] Per-call values.\n * @returns {object} GPU-free raw/debug payload for the selected emit target.\n */\n Read(input, options = {})\n {\n return readWithValues(input, this.GetValues(options), \"png\");\n }\n\n /**\n * Read PNG bytes asynchronously with this profile.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input PNG bytes.\n * @param {object} [options] Per-call values.\n * @returns {Promise<object>} GPU-free raw/debug payload for the selected emit target.\n */\n async ReadAsync(input, options = {})\n {\n return readWithValuesAsync(input, this.GetValues(options), \"png\");\n }\n\n /**\n * Inspect PNG bytes without decoding image data.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input PNG bytes.\n * @param {object} [options] Per-call values.\n * @returns {object} PNG header metadata.\n */\n Inspect(input, options = {})\n {\n return inspectWithValues(input, this.GetValues(options), \"png\");\n }\n\n /**\n * Report whether PNG input and requested output variants are supported.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input PNG bytes.\n * @param {object} [options] Per-call values.\n * @returns {object} Support/probe report.\n */\n IsSupported(input, options = {})\n {\n return isSupportedWithValues(input, this.GetValues(options), \"png\");\n }\n\n /**\n * Convert format output into JSON-compatible debug data.\n *\n * @param {any} value Format output.\n * @returns {any} JSON-compatible value.\n */\n ToJSON(value)\n {\n return toJsonValue(value);\n }\n\n /**\n * One-shot PNG read.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input PNG bytes.\n * @param {object} [options] Read options.\n * @returns {object} GPU-free raw/debug payload for the selected emit target.\n */\n static read(input, options = {})\n {\n return readWithValues(input, normalizeValues(DEFAULT_VALUES, { inputType: \"png\", ...options }, FORMAT_NAME), \"png\");\n }\n\n /**\n * One-shot asynchronous PNG read.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input PNG bytes.\n * @param {object} [options] Read options.\n * @returns {Promise<object>} GPU-free raw/debug payload for the selected emit target.\n */\n static async readAsync(input, options = {})\n {\n return readWithValuesAsync(input, normalizeValues(DEFAULT_VALUES, { inputType: \"png\", ...options }, FORMAT_NAME), \"png\");\n }\n\n /**\n * One-shot PNG inspection.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input PNG bytes.\n * @param {object} [options] Inspect options.\n * @returns {object} PNG header metadata.\n */\n static inspect(input, options = {})\n {\n return inspectWithValues(input, normalizeValues(DEFAULT_VALUES, { inputType: \"png\", ...options }, FORMAT_NAME), \"png\");\n }\n\n /**\n * One-shot PNG support probe.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input PNG bytes.\n * @param {object} [options] Probe options.\n * @returns {object} Support/probe report.\n */\n static isSupported(input, options = {})\n {\n return isSupportedWithValues(input, normalizeValues(DEFAULT_VALUES, { inputType: \"png\", ...options }, FORMAT_NAME), \"png\");\n }\n\n /**\n * Convert format output into JSON-compatible debug data.\n *\n * @param {any} value Format output.\n * @returns {any} JSON-compatible value.\n */\n static toJSON(value)\n {\n return toJsonValue(value);\n }\n\n /**\n * Test whether bytes look like a PNG file.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input Candidate PNG bytes.\n * @returns {boolean} True when the PNG signature is present.\n */\n static isPNG(input)\n {\n try\n {\n return isPNG(toBytes(input));\n }\n catch\n {\n return false;\n }\n }\n\n static OUTPUT_IMAGE = OUTPUT_IMAGE;\n static OUTPUT_RGBA = OUTPUT_RGBA;\n static OUTPUT_RAW = OUTPUT_RAW;\n static OUTPUT_JSON = OUTPUT_JSON;\n static OUTPUT_PNG_JSON = \"pngJson\";\n static type = Object.freeze([ \"image\" ]);\n static mediaTypes = Object.freeze([ \"image\" ]);\n static inputTypes = Object.freeze([ \"png\" ]);\n static outputTypes = Object.freeze([ OUTPUT_IMAGE, OUTPUT_RGBA ]);\n static debugOutputTypes = Object.freeze([ \"pngJson\", OUTPUT_RAW ]);\n}\n\nexport default CjsPngFormat;\n"],"names":["FORMAT_NAME","CjsPngFormat","DEFAULT_VALUES","constructor","options","SetValues","normalizeValues","inputType","GetValues","Read","input","readWithValues","ReadAsync","readWithValuesAsync","Inspect","inspectWithValues","IsSupported","isSupportedWithValues","ToJSON","value","toJsonValue","read","readAsync","inspect","isSupported","toJSON","isPNG","toBytes","OUTPUT_IMAGE","OUTPUT_RGBA","OUTPUT_RAW","OUTPUT_JSON","OUTPUT_PNG_JSON","type","Object","freeze","mediaTypes","inputTypes","outputTypes","debugOutputTypes"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CjsPngFormat.js","sources":["../../../../src/formats/png/CjsPngFormat.js"],"sourcesContent":["import {\n DEFAULT_VALUES,\n OUTPUT_IMAGE,\n OUTPUT_JSON,\n OUTPUT_RAW,\n OUTPUT_RGBA,\n inspectWithValues,\n isPNG,\n isSupportedWithValues,\n normalizeValues,\n readWithValues,\n readWithValuesAsync,\n toBytes,\n toJsonValue\n} from \"./core/helpers.js\";\n\nconst FORMAT_NAME = \"CjsPngFormat\";\n\nexport class CjsPngFormat\n{\n #values = DEFAULT_VALUES;\n\n /**\n * Create a reusable PNG format profile.\n *\n * @param {object} [options] Default read/inspect options.\n */\n constructor(options = {})\n {\n this.SetValues(options);\n }\n\n /**\n * Merge options into this profile.\n *\n * @param {object} [options] Values to merge.\n * @returns {CjsPngFormat} This format profile.\n */\n SetValues(options = {})\n {\n this.#values = normalizeValues(this.#values, { inputType: \"png\", ...options }, FORMAT_NAME);\n return this;\n }\n\n /**\n * Get normalized profile values with optional per-call overrides.\n *\n * @param {object} [options] Per-call values.\n * @returns {object} Normalized read values.\n */\n GetValues(options = {})\n {\n return normalizeValues(this.#values, { inputType: \"png\", ...options }, FORMAT_NAME);\n }\n\n /**\n * Read PNG bytes with this profile.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input PNG bytes.\n * @param {object} [options] Per-call values.\n * @returns {object} GPU-free raw/debug payload for the selected emit target.\n */\n Read(input, options = {})\n {\n return readWithValues(input, this.GetValues(options), \"png\");\n }\n\n /**\n * Read PNG bytes asynchronously with this profile.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input PNG bytes.\n * @param {object} [options] Per-call values.\n * @returns {Promise<object>} GPU-free raw/debug payload for the selected emit target.\n */\n async ReadAsync(input, options = {})\n {\n return readWithValuesAsync(input, this.GetValues(options), \"png\");\n }\n\n /**\n * Inspect PNG bytes without decoding image data.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input PNG bytes.\n * @param {object} [options] Per-call values.\n * @returns {object} PNG header metadata.\n */\n Inspect(input, options = {})\n {\n return inspectWithValues(input, this.GetValues(options), \"png\");\n }\n\n /**\n * Report whether PNG input and requested output variants are supported.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input PNG bytes.\n * @param {object} [options] Per-call values.\n * @returns {object} Support/probe report.\n */\n IsSupported(input, options = {})\n {\n return isSupportedWithValues(input, this.GetValues(options), \"png\");\n }\n\n /**\n * Convert format output into JSON-compatible debug data.\n *\n * @param {any} value Format output.\n * @returns {any} JSON-compatible value.\n */\n ToJSON(value)\n {\n return toJsonValue(value);\n }\n\n /**\n * One-shot PNG read.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input PNG bytes.\n * @param {object} [options] Read options.\n * @returns {object} GPU-free raw/debug payload for the selected emit target.\n */\n static read(input, options = {})\n {\n return readWithValues(input, normalizeValues(DEFAULT_VALUES, { inputType: \"png\", ...options }, FORMAT_NAME), \"png\");\n }\n\n /**\n * One-shot asynchronous PNG read.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input PNG bytes.\n * @param {object} [options] Read options.\n * @returns {Promise<object>} GPU-free raw/debug payload for the selected emit target.\n */\n static async readAsync(input, options = {})\n {\n return readWithValuesAsync(input, normalizeValues(DEFAULT_VALUES, { inputType: \"png\", ...options }, FORMAT_NAME), \"png\");\n }\n\n /**\n * One-shot PNG inspection.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input PNG bytes.\n * @param {object} [options] Inspect options.\n * @returns {object} PNG header metadata.\n */\n static inspect(input, options = {})\n {\n return inspectWithValues(input, normalizeValues(DEFAULT_VALUES, { inputType: \"png\", ...options }, FORMAT_NAME), \"png\");\n }\n\n /**\n * One-shot PNG support probe.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input PNG bytes.\n * @param {object} [options] Probe options.\n * @returns {object} Support/probe report.\n */\n static isSupported(input, options = {})\n {\n return isSupportedWithValues(input, normalizeValues(DEFAULT_VALUES, { inputType: \"png\", ...options }, FORMAT_NAME), \"png\");\n }\n\n /**\n * Convert format output into JSON-compatible debug data.\n *\n * @param {any} value Format output.\n * @returns {any} JSON-compatible value.\n */\n static toJSON(value)\n {\n return toJsonValue(value);\n }\n\n /**\n * Test whether bytes look like a PNG file.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input Candidate PNG bytes.\n * @returns {boolean} True when the PNG signature is present.\n */\n static isPNG(input)\n {\n try\n {\n return isPNG(toBytes(input));\n }\n catch\n {\n return false;\n }\n }\n\n /**\n * Emit targets for this format (canonical frozen enum).\n */\n static Output = Object.freeze({\n IMAGE: OUTPUT_IMAGE,\n RGBA: OUTPUT_RGBA,\n RAW: OUTPUT_RAW,\n JSON: OUTPUT_JSON\n });\n static OUTPUT_PNG_JSON = \"pngJson\";\n static type = Object.freeze([ \"image\" ]);\n static mediaTypes = Object.freeze([ \"image\" ]);\n static inputTypes = Object.freeze([ \"png\" ]);\n static outputTypes = Object.freeze([ OUTPUT_IMAGE, OUTPUT_RGBA ]);\n static debugOutputTypes = Object.freeze([ \"pngJson\", OUTPUT_RAW ]);\n}\n\nexport default CjsPngFormat;\n"],"names":["FORMAT_NAME","CjsPngFormat","DEFAULT_VALUES","constructor","options","SetValues","normalizeValues","inputType","GetValues","Read","input","readWithValues","ReadAsync","readWithValuesAsync","Inspect","inspectWithValues","IsSupported","isSupportedWithValues","ToJSON","value","toJsonValue","read","readAsync","inspect","isSupported","toJSON","isPNG","toBytes","Output","Object","freeze","IMAGE","OUTPUT_IMAGE","RGBA","OUTPUT_RGBA","RAW","OUTPUT_RAW","JSON","OUTPUT_JSON","OUTPUT_PNG_JSON","type","mediaTypes","inputTypes","outputTypes","debugOutputTypes"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { CLASS_KEYS } from './core/schema.js';
|
|
2
|
-
import { DEFAULT_VALUES, normalizeValues, validateClassKey, validateClass, toJsonValue, OUTPUT_RUNTIME, OUTPUT_RAW, copyReaderOptions,
|
|
2
|
+
import { DEFAULT_VALUES, normalizeValues, validateClassKey, validateClass, toJsonValue, OUTPUT_RUNTIME, OUTPUT_RAW, copyReaderOptions, OUTPUT_PAYLOAD, OUTPUT_JSON } from './core/helpers.js';
|
|
3
3
|
import { CjsRedReader } from './core/CjsRedReader.js';
|
|
4
4
|
import { classes } from '../black/core/blackDefinitions.js';
|
|
5
5
|
|
|
@@ -11,6 +11,13 @@ const FORMAT_NAME = "CjsRedFormat";
|
|
|
11
11
|
* Reads Red data - a type-discriminated, self-referential YAML object graph -
|
|
12
12
|
* and emits a compact public payload by default, a neutral raw graph, or
|
|
13
13
|
* caller-supplied runtime classes through the core-types hydration adapter.
|
|
14
|
+
* With payload IDs enabled, repeated sequences and typed tables use an
|
|
15
|
+
* ID-bearing object around a configurable `payloadValuesField` (default
|
|
16
|
+
* `_values`); unique sequences remain arrays. Active payload marker names must
|
|
17
|
+
* be distinct non-empty strings, and authored fields that collide with them
|
|
18
|
+
* are rejected. Remap the markers to preserve authored underscore fields.
|
|
19
|
+
* Disabling the reference marker preserves actual JavaScript identity; a
|
|
20
|
+
* cyclic result in that mode is intentionally not JSON-serializable.
|
|
14
21
|
*/
|
|
15
22
|
class CjsRedFormat {
|
|
16
23
|
#emit = DEFAULT_VALUES.emit;
|
|
@@ -47,6 +54,7 @@ class CjsRedFormat {
|
|
|
47
54
|
*/
|
|
48
55
|
GetValues(options = {}) {
|
|
49
56
|
return normalizeValues({
|
|
57
|
+
...DEFAULT_VALUES,
|
|
50
58
|
emit: this.#emit,
|
|
51
59
|
schema: this.#schema,
|
|
52
60
|
...this.#readerOptions,
|
|
@@ -228,10 +236,16 @@ class CjsRedFormat {
|
|
|
228
236
|
static copyReaderOptions(values) {
|
|
229
237
|
return copyReaderOptions(values);
|
|
230
238
|
}
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
239
|
+
|
|
240
|
+
/**
|
|
241
|
+
* Emit targets for this format (canonical frozen enum).
|
|
242
|
+
*/
|
|
243
|
+
static Output = Object.freeze({
|
|
244
|
+
JSON: OUTPUT_JSON,
|
|
245
|
+
PAYLOAD: OUTPUT_PAYLOAD,
|
|
246
|
+
RUNTIME: OUTPUT_RUNTIME,
|
|
247
|
+
RAW: OUTPUT_RAW
|
|
248
|
+
});
|
|
235
249
|
static CLASS_KEYS = CLASS_KEYS;
|
|
236
250
|
static schema = classes;
|
|
237
251
|
static id = "red";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CjsRedFormat.js","sources":["../../../../src/formats/red/CjsRedFormat.js"],"sourcesContent":["import { CLASS_KEYS } from \"./core/schema.js\";\nimport {\n DEFAULT_VALUES,\n OUTPUT_JSON,\n OUTPUT_PAYLOAD,\n OUTPUT_RAW,\n OUTPUT_RUNTIME,\n copyReaderOptions,\n normalizeValues,\n toJsonValue,\n validateClass,\n validateClassKey\n} from \"./core/helpers.js\";\nimport { CjsRedReader } from \"./core/CjsRedReader.js\";\nimport blackDefinitions from \"./core/blackDefinitions.js\";\n\nconst FORMAT_NAME = \"CjsRedFormat\";\n\n/**\n * CarbonEngineJS-facing Red format profile.\n *\n * Reads Red data - a type-discriminated, self-referential YAML object graph -\n * and emits a compact public payload by default, a neutral raw graph, or\n * caller-supplied runtime classes through the core-types hydration adapter.\n */\nexport class CjsRedFormat\n{\n\n #emit = DEFAULT_VALUES.emit;\n #schema = DEFAULT_VALUES.schema;\n #readerOptions = {};\n #classes = {};\n\n /**\n * Create a reusable format profile.\n * @param {object} [options] Default format values.\n */\n constructor(options = {})\n {\n this.SetValues(options);\n }\n\n /**\n * Set format values for this reusable profile.\n * @param {object} [options] Values to merge into the profile.\n * @returns {CjsRedFormat} This format profile.\n */\n SetValues(options = {})\n {\n const values = normalizeValues(this.GetValues(), options, CLASS_KEYS, FORMAT_NAME);\n this.#emit = values.emit;\n this.#schema = values.schema;\n this.#classes = values.classes;\n this.#readerOptions = CjsRedFormat.copyReaderOptions(values);\n return this;\n }\n\n /**\n * Get this profile's current values, optionally with per-call overrides.\n * @param {object} [options] Optional values to merge into a copy.\n * @returns {object} A copy of the effective values.\n */\n GetValues(options = {})\n {\n return normalizeValues({\n emit: this.#emit,\n schema: this.#schema,\n ...this.#readerOptions,\n classes: this.#classes\n }, options, CLASS_KEYS, FORMAT_NAME);\n }\n\n /**\n * Set multiple node-class constructors for this profile.\n * @param {object} [classes] Map of Red type names to constructors.\n * @returns {CjsRedFormat} This format profile.\n */\n SetClasses(classes = {})\n {\n return this.SetValues({ classes });\n }\n\n /**\n * Set one node-class constructor for this profile.\n * @param {string} type Red type name.\n * @param {Function|null|undefined} Class Constructor to use, or nullish to delete.\n * @returns {CjsRedFormat} This format profile.\n */\n SetClass(type, Class)\n {\n validateClassKey(CLASS_KEYS, type, FORMAT_NAME);\n if (Class === null || Class === undefined)\n {\n delete this.#classes[type];\n return this;\n }\n\n validateClass(CLASS_KEYS, type, Class, FORMAT_NAME);\n this.#classes = { ...this.#classes, [type]: Class };\n return this;\n }\n\n /**\n * Get a configured node-class constructor.\n * @param {string} type Red type name.\n * @returns {Function|undefined} The registered constructor, if any.\n */\n GetClass(type)\n {\n validateClassKey(CLASS_KEYS, type, FORMAT_NAME);\n return this.#classes[type];\n }\n\n /**\n * Whether this profile has a constructor registered for a Red type.\n * @param {string} type Red type name.\n * @returns {boolean}\n */\n HasClass(type)\n {\n return !!this.GetClass(type);\n }\n\n /**\n * Read Red data with this profile's values.\n * @param {unknown} input Parsed Red object or YAML string.\n * @param {object} [options] Per-call value overrides.\n * @returns {object} Public payload output by default.\n */\n Read(input, options = {})\n {\n return CjsRedFormat.read(input, this.GetValues(options));\n }\n\n /**\n * Read Red data as compact public payload data.\n * @param {unknown} input Parsed Red object or YAML string.\n * @param {object} [options] Per-call value overrides.\n * @returns {object} Public payload output.\n */\n ReadPayload(input, options = {})\n {\n return CjsRedFormat.readPayload(input, this.GetValues(options));\n }\n\n /**\n * Read Red data as runtime objects or plain source-shaped objects.\n * @param {unknown} input Parsed Red object or YAML string.\n * @param {object} [options] Per-call value overrides.\n * @returns {object} Runtime read result.\n */\n ReadRuntime(input, options = {})\n {\n return CjsRedFormat.readRuntime(input, this.GetValues(options));\n }\n\n /**\n * Read Red data as the cleaned raw object graph (metadata stripped, typed\n * tables decoded, shared references preserved by identity).\n * @param {unknown} input Parsed Red object or YAML string.\n * @param {object} [options] Per-call value overrides.\n * @returns {*} Raw object graph.\n */\n ReadRaw(input, options = {})\n {\n return CjsRedFormat.readRaw(input, this.GetValues(options));\n }\n\n /**\n * Inspect Red data with this profile's values.\n * @param {unknown} input Parsed Red object or YAML string.\n * @param {object} [options] Per-call value overrides.\n * @returns {object} Plain summary data.\n */\n Inspect(input, options = {})\n {\n return CjsRedFormat.inspect(input, this.GetValues(options));\n }\n\n /**\n * Convert format output to JSON-compatible data.\n * @param {any} value Format output to convert.\n * @returns {any} Plain JSON-compatible data.\n */\n ToJSON(value)\n {\n return toJsonValue(value);\n }\n\n /**\n * Static one-shot read. Static methods use camelCase by convention.\n * @param {unknown} input Parsed Red object or YAML string.\n * @param {object} [options] Format values.\n * @returns {object} Format output.\n */\n static read(input, options = {})\n {\n const values = normalizeValues(DEFAULT_VALUES, options, CLASS_KEYS, FORMAT_NAME);\n if (values.emit === OUTPUT_RUNTIME) return CjsRedFormat.readRuntime(input, values);\n if (values.emit === OUTPUT_RAW) return CjsRedFormat.readRaw(input, values);\n return CjsRedFormat.readPayload(input, values);\n }\n\n /**\n * Static one-shot public payload read.\n * @param {unknown} input Parsed Red object or YAML string.\n * @param {object} [options] Format values.\n * @returns {object} Public payload output.\n */\n static readPayload(input, options = {})\n {\n return new CjsRedReader(input, normalizeValues(DEFAULT_VALUES, options, CLASS_KEYS, FORMAT_NAME)).ReadPayload();\n }\n\n /**\n * Static one-shot runtime read.\n * @param {unknown} input Parsed Red object or YAML string.\n * @param {object} [options] Format values.\n * @returns {object} Runtime read result.\n */\n static readRuntime(input, options = {})\n {\n return new CjsRedReader(input, normalizeValues(DEFAULT_VALUES, options, CLASS_KEYS, FORMAT_NAME)).ReadRuntime();\n }\n\n /**\n * Static one-shot raw read.\n * @param {unknown} input Parsed Red object or YAML string.\n * @param {object} [options] Format values.\n * @returns {*} Raw object graph.\n */\n static readRaw(input, options = {})\n {\n return new CjsRedReader(input, normalizeValues(DEFAULT_VALUES, options, CLASS_KEYS, FORMAT_NAME)).ReadRaw();\n }\n\n /**\n * Static one-shot inspection.\n * @param {unknown} input Parsed Red object or YAML string.\n * @param {object} [options] Format values.\n * @returns {object} Plain summary data.\n */\n static inspect(input, options = {})\n {\n return new CjsRedReader(input, normalizeValues(DEFAULT_VALUES, options, CLASS_KEYS, FORMAT_NAME)).Inspect();\n }\n\n /**\n * Static JSON-compatible conversion.\n * @param {any} value Format output to convert.\n * @returns {any} Plain JSON-compatible data.\n */\n static toJSON(value)\n {\n return toJsonValue(value);\n }\n\n static copyReaderOptions(values)\n {\n return copyReaderOptions(values);\n }\n\n static OUTPUT_JSON = OUTPUT_JSON;\n static OUTPUT_PAYLOAD = OUTPUT_PAYLOAD;\n static OUTPUT_RUNTIME = OUTPUT_RUNTIME;\n static OUTPUT_RAW = OUTPUT_RAW;\n static CLASS_KEYS = CLASS_KEYS;\n static schema = blackDefinitions;\n static id = \"red\";\n static extensions = Object.freeze([ \".red\" ]);\n static type = Object.freeze([ \"data\" ]);\n static mediaTypes = Object.freeze([ \"data\" ]);\n static inputTypes = Object.freeze([ \"red\" ]);\n static outputTypes = Object.freeze([ OUTPUT_JSON, OUTPUT_PAYLOAD, OUTPUT_RUNTIME ]);\n static debugOutputTypes = Object.freeze([ OUTPUT_RAW ]);\n\n}\n\nexport default CjsRedFormat;\n"],"names":["FORMAT_NAME","CjsRedFormat","DEFAULT_VALUES","emit","schema","constructor","options","SetValues","values","normalizeValues","GetValues","CLASS_KEYS","classes","copyReaderOptions","SetClasses","SetClass","type","Class","validateClassKey","undefined","validateClass","GetClass","HasClass","Read","input","read","ReadPayload","readPayload","ReadRuntime","readRuntime","ReadRaw","readRaw","Inspect","inspect","ToJSON","value","toJsonValue","OUTPUT_RUNTIME","OUTPUT_RAW","CjsRedReader","toJSON","OUTPUT_JSON","OUTPUT_PAYLOAD","blackDefinitions","id","extensions","Object","freeze","mediaTypes","inputTypes","outputTypes","debugOutputTypes"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CjsRedFormat.js","sources":["../../../../src/formats/red/CjsRedFormat.js"],"sourcesContent":["import { CLASS_KEYS } from \"./core/schema.js\";\nimport {\n DEFAULT_VALUES,\n OUTPUT_JSON,\n OUTPUT_PAYLOAD,\n OUTPUT_RAW,\n OUTPUT_RUNTIME,\n copyReaderOptions,\n normalizeValues,\n toJsonValue,\n validateClass,\n validateClassKey\n} from \"./core/helpers.js\";\nimport { CjsRedReader } from \"./core/CjsRedReader.js\";\nimport blackDefinitions from \"./core/blackDefinitions.js\";\n\nconst FORMAT_NAME = \"CjsRedFormat\";\n\n/**\n * CarbonEngineJS-facing Red format profile.\n *\n * Reads Red data - a type-discriminated, self-referential YAML object graph -\n * and emits a compact public payload by default, a neutral raw graph, or\n * caller-supplied runtime classes through the core-types hydration adapter.\n * With payload IDs enabled, repeated sequences and typed tables use an\n * ID-bearing object around a configurable `payloadValuesField` (default\n * `_values`); unique sequences remain arrays. Active payload marker names must\n * be distinct non-empty strings, and authored fields that collide with them\n * are rejected. Remap the markers to preserve authored underscore fields.\n * Disabling the reference marker preserves actual JavaScript identity; a\n * cyclic result in that mode is intentionally not JSON-serializable.\n */\nexport class CjsRedFormat\n{\n\n #emit = DEFAULT_VALUES.emit;\n #schema = DEFAULT_VALUES.schema;\n #readerOptions = {};\n #classes = {};\n\n /**\n * Create a reusable format profile.\n * @param {object} [options] Default format values.\n */\n constructor(options = {})\n {\n this.SetValues(options);\n }\n\n /**\n * Set format values for this reusable profile.\n * @param {object} [options] Values to merge into the profile.\n * @returns {CjsRedFormat} This format profile.\n */\n SetValues(options = {})\n {\n const values = normalizeValues(this.GetValues(), options, CLASS_KEYS, FORMAT_NAME);\n this.#emit = values.emit;\n this.#schema = values.schema;\n this.#classes = values.classes;\n this.#readerOptions = CjsRedFormat.copyReaderOptions(values);\n return this;\n }\n\n /**\n * Get this profile's current values, optionally with per-call overrides.\n * @param {object} [options] Optional values to merge into a copy.\n * @returns {object} A copy of the effective values.\n */\n GetValues(options = {})\n {\n return normalizeValues({\n ...DEFAULT_VALUES,\n emit: this.#emit,\n schema: this.#schema,\n ...this.#readerOptions,\n classes: this.#classes\n }, options, CLASS_KEYS, FORMAT_NAME);\n }\n\n /**\n * Set multiple node-class constructors for this profile.\n * @param {object} [classes] Map of Red type names to constructors.\n * @returns {CjsRedFormat} This format profile.\n */\n SetClasses(classes = {})\n {\n return this.SetValues({ classes });\n }\n\n /**\n * Set one node-class constructor for this profile.\n * @param {string} type Red type name.\n * @param {Function|null|undefined} Class Constructor to use, or nullish to delete.\n * @returns {CjsRedFormat} This format profile.\n */\n SetClass(type, Class)\n {\n validateClassKey(CLASS_KEYS, type, FORMAT_NAME);\n if (Class === null || Class === undefined)\n {\n delete this.#classes[type];\n return this;\n }\n\n validateClass(CLASS_KEYS, type, Class, FORMAT_NAME);\n this.#classes = { ...this.#classes, [type]: Class };\n return this;\n }\n\n /**\n * Get a configured node-class constructor.\n * @param {string} type Red type name.\n * @returns {Function|undefined} The registered constructor, if any.\n */\n GetClass(type)\n {\n validateClassKey(CLASS_KEYS, type, FORMAT_NAME);\n return this.#classes[type];\n }\n\n /**\n * Whether this profile has a constructor registered for a Red type.\n * @param {string} type Red type name.\n * @returns {boolean}\n */\n HasClass(type)\n {\n return !!this.GetClass(type);\n }\n\n /**\n * Read Red data with this profile's values.\n * @param {unknown} input Parsed Red object or YAML string.\n * @param {object} [options] Per-call value overrides.\n * @returns {object} Public payload output by default.\n */\n Read(input, options = {})\n {\n return CjsRedFormat.read(input, this.GetValues(options));\n }\n\n /**\n * Read Red data as compact public payload data.\n * @param {unknown} input Parsed Red object or YAML string.\n * @param {object} [options] Per-call value overrides.\n * @returns {object} Public payload output.\n */\n ReadPayload(input, options = {})\n {\n return CjsRedFormat.readPayload(input, this.GetValues(options));\n }\n\n /**\n * Read Red data as runtime objects or plain source-shaped objects.\n * @param {unknown} input Parsed Red object or YAML string.\n * @param {object} [options] Per-call value overrides.\n * @returns {object} Runtime read result.\n */\n ReadRuntime(input, options = {})\n {\n return CjsRedFormat.readRuntime(input, this.GetValues(options));\n }\n\n /**\n * Read Red data as the cleaned raw object graph (metadata stripped, typed\n * tables decoded, shared references preserved by identity).\n * @param {unknown} input Parsed Red object or YAML string.\n * @param {object} [options] Per-call value overrides.\n * @returns {*} Raw object graph.\n */\n ReadRaw(input, options = {})\n {\n return CjsRedFormat.readRaw(input, this.GetValues(options));\n }\n\n /**\n * Inspect Red data with this profile's values.\n * @param {unknown} input Parsed Red object or YAML string.\n * @param {object} [options] Per-call value overrides.\n * @returns {object} Plain summary data.\n */\n Inspect(input, options = {})\n {\n return CjsRedFormat.inspect(input, this.GetValues(options));\n }\n\n /**\n * Convert format output to JSON-compatible data.\n * @param {any} value Format output to convert.\n * @returns {any} Plain JSON-compatible data.\n */\n ToJSON(value)\n {\n return toJsonValue(value);\n }\n\n /**\n * Static one-shot read. Static methods use camelCase by convention.\n * @param {unknown} input Parsed Red object or YAML string.\n * @param {object} [options] Format values.\n * @returns {object} Format output.\n */\n static read(input, options = {})\n {\n const values = normalizeValues(DEFAULT_VALUES, options, CLASS_KEYS, FORMAT_NAME);\n if (values.emit === OUTPUT_RUNTIME) return CjsRedFormat.readRuntime(input, values);\n if (values.emit === OUTPUT_RAW) return CjsRedFormat.readRaw(input, values);\n return CjsRedFormat.readPayload(input, values);\n }\n\n /**\n * Static one-shot public payload read.\n * @param {unknown} input Parsed Red object or YAML string.\n * @param {object} [options] Format values.\n * @returns {object} Public payload output.\n */\n static readPayload(input, options = {})\n {\n return new CjsRedReader(input, normalizeValues(DEFAULT_VALUES, options, CLASS_KEYS, FORMAT_NAME)).ReadPayload();\n }\n\n /**\n * Static one-shot runtime read.\n * @param {unknown} input Parsed Red object or YAML string.\n * @param {object} [options] Format values.\n * @returns {object} Runtime read result.\n */\n static readRuntime(input, options = {})\n {\n return new CjsRedReader(input, normalizeValues(DEFAULT_VALUES, options, CLASS_KEYS, FORMAT_NAME)).ReadRuntime();\n }\n\n /**\n * Static one-shot raw read.\n * @param {unknown} input Parsed Red object or YAML string.\n * @param {object} [options] Format values.\n * @returns {*} Raw object graph.\n */\n static readRaw(input, options = {})\n {\n return new CjsRedReader(input, normalizeValues(DEFAULT_VALUES, options, CLASS_KEYS, FORMAT_NAME)).ReadRaw();\n }\n\n /**\n * Static one-shot inspection.\n * @param {unknown} input Parsed Red object or YAML string.\n * @param {object} [options] Format values.\n * @returns {object} Plain summary data.\n */\n static inspect(input, options = {})\n {\n return new CjsRedReader(input, normalizeValues(DEFAULT_VALUES, options, CLASS_KEYS, FORMAT_NAME)).Inspect();\n }\n\n /**\n * Static JSON-compatible conversion.\n * @param {any} value Format output to convert.\n * @returns {any} Plain JSON-compatible data.\n */\n static toJSON(value)\n {\n return toJsonValue(value);\n }\n\n static copyReaderOptions(values)\n {\n return copyReaderOptions(values);\n }\n\n /**\n * Emit targets for this format (canonical frozen enum).\n */\n static Output = Object.freeze({\n JSON: OUTPUT_JSON,\n PAYLOAD: OUTPUT_PAYLOAD,\n RUNTIME: OUTPUT_RUNTIME,\n RAW: OUTPUT_RAW\n });\n static CLASS_KEYS = CLASS_KEYS;\n static schema = blackDefinitions;\n static id = \"red\";\n static extensions = Object.freeze([ \".red\" ]);\n static type = Object.freeze([ \"data\" ]);\n static mediaTypes = Object.freeze([ \"data\" ]);\n static inputTypes = Object.freeze([ \"red\" ]);\n static outputTypes = Object.freeze([ OUTPUT_JSON, OUTPUT_PAYLOAD, OUTPUT_RUNTIME ]);\n static debugOutputTypes = Object.freeze([ OUTPUT_RAW ]);\n\n}\n\nexport default CjsRedFormat;\n"],"names":["FORMAT_NAME","CjsRedFormat","DEFAULT_VALUES","emit","schema","constructor","options","SetValues","values","normalizeValues","GetValues","CLASS_KEYS","classes","copyReaderOptions","SetClasses","SetClass","type","Class","validateClassKey","undefined","validateClass","GetClass","HasClass","Read","input","read","ReadPayload","readPayload","ReadRuntime","readRuntime","ReadRaw","readRaw","Inspect","inspect","ToJSON","value","toJsonValue","OUTPUT_RUNTIME","OUTPUT_RAW","CjsRedReader","toJSON","Output","Object","freeze","JSON","OUTPUT_JSON","PAYLOAD","OUTPUT_PAYLOAD","RUNTIME","RAW","blackDefinitions","id","extensions","mediaTypes","inputTypes","outputTypes","debugOutputTypes"],"mappings":"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"}
|