m0saic 0.2.1 → 0.3.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/LICENSE +22 -7
- package/README.md +23 -5
- package/dist/browseE2e.js +1 -1
- package/dist/connectionsFromEnv.js +1 -1
- package/dist/e2eTemplateVariants.js +1 -1
- package/dist/frontDoor.js +1 -1
- package/dist/index.js +1 -1
- package/dist/inlineDsl.js +1 -1
- package/dist/mcp/bridgeClient.js +1 -0
- package/dist/mcp/server.js +1 -0
- package/dist/mcp/tools.js +1 -0
- package/dist/mosaicxRunner.js +1 -1
- package/dist/outputPattern.js +1 -1
- package/dist/showcaseFeed.js +1 -1
- package/dist/templateDoctor.js +1 -1
- package/dist/utils/checkFeasibility.js +1 -1
- package/dist/utils/collectRenderErrors.js +1 -1
- package/dist/utils/enrichImageAlphaFromDoc.js +1 -1
- package/dist/utils/ensureFfmpeg.js +1 -1
- package/dist/utils/extractLayoutMeta.js +1 -1
- package/dist/utils/failureHints.js +1 -1
- package/dist/utils/ffmpegProbe.js +1 -1
- package/dist/utils/formatM0saicForCli.js +1 -1
- package/dist/utils/hashFile.js +1 -1
- package/dist/utils/helpGroups.js +1 -1
- package/dist/utils/installContext.js +1 -0
- package/dist/utils/invocation.js +1 -1
- package/dist/utils/licenseActivation.js +1 -0
- package/dist/utils/licenseActivationWorker.js +1 -0
- package/dist/utils/mosaicSpinner.js +1 -1
- package/dist/utils/parseDimensions.js +1 -1
- package/dist/utils/pathInfo.js +1 -1
- package/dist/utils/readJsonArg.js +1 -1
- package/dist/utils/renderOutcome.js +1 -1
- package/dist/utils/renderReport.js +1 -1
- package/dist/utils/renderSignals.js +1 -1
- package/dist/utils/renderWorkspace.js +1 -1
- package/dist/utils/reportOutputFormat.js +1 -0
- package/dist/utils/setupFfmpeg.js +1 -1
- package/dist/utils/telemetry.js +1 -1
- package/dist/utils/telemetryFlushWorker.js +1 -1
- package/dist/utils/telemetryUpstream.js +1 -1
- package/dist/utils/telemetryUsage.js +1 -1
- package/dist/utils/toolchainConfig.js +1 -1
- package/dist/utils/tutorialDuration.js +1 -1
- package/dist/utils/updateCheck.js +1 -1
- package/dist/utils/updateCheckWorker.js +1 -1
- package/dist/utils/validateSourceCounts.js +1 -1
- package/dist/utils/versions.js +1 -1
- package/dist/webCustomizeLink.js +1 -1
- package/node_modules/@m0saic/community-m/NOTICE +9 -0
- package/node_modules/@m0saic/community-m/release.json +2 -2
- package/node_modules/@m0saic/core/dist/core/buildChildMosaicSource.js +1 -1
- package/node_modules/@m0saic/core/dist/core/buildChunkCommands.js +1 -1
- package/node_modules/@m0saic/core/dist/core/buildEncodeCommands.js +1 -1
- package/node_modules/@m0saic/core/dist/core/buildLavfiSource.js +1 -1
- package/node_modules/@m0saic/core/dist/core/buildMediaSource.js +1 -1
- package/node_modules/@m0saic/core/dist/core/buildMosaicNode.js +1 -1
- package/node_modules/@m0saic/core/dist/core/buildMosaicPlanFromFile.js +1 -1
- package/node_modules/@m0saic/core/dist/core/buildSvgTextSource.js +1 -1
- package/node_modules/@m0saic/core/dist/core/buildTextRenderCommand.js +1 -1
- package/node_modules/@m0saic/core/dist/core/collectRefTargets.js +1 -1
- package/node_modules/@m0saic/core/dist/core/index.js +1 -1
- package/node_modules/@m0saic/core/dist/core/maskCacheDir.js +1 -1
- package/node_modules/@m0saic/core/dist/core/maskWorkerBridge.js +1 -1
- package/node_modules/@m0saic/core/dist/core/playbackPlaySpeed.js +1 -1
- package/node_modules/@m0saic/core/dist/core/prepareProps.js +1 -1
- package/node_modules/@m0saic/core/dist/core/primaryOutput.js +1 -1
- package/node_modules/@m0saic/core/dist/core/rasterizeMaskPng.js +1 -1
- package/node_modules/@m0saic/core/dist/core/rasterizeSvgMediaPng.js +1 -1
- package/node_modules/@m0saic/core/dist/core/refTargetTap.js +1 -1
- package/node_modules/@m0saic/core/dist/core/resolveMasks.js +1 -1
- package/node_modules/@m0saic/core/dist/core/resolveMasksSync.js +1 -1
- package/node_modules/@m0saic/core/dist/core/resolveStrokeRingsSync.js +1 -1
- package/node_modules/@m0saic/core/dist/core/roundedRectMask.js +1 -1
- package/node_modules/@m0saic/core/dist/core/strokeRing.js +1 -1
- package/node_modules/@m0saic/core/dist/core/svgRaster.js +1 -1
- package/node_modules/@m0saic/core/dist/defaults.js +1 -1
- package/node_modules/@m0saic/core/dist/ffmpeg/backgroundImageInput.js +1 -1
- package/node_modules/@m0saic/core/dist/ffmpeg/bufferGuard.js +1 -1
- package/node_modules/@m0saic/core/dist/ffmpeg/ffmpegCommands.js +1 -1
- package/node_modules/@m0saic/core/dist/ffmpeg/filters/applyBackdropBlur.js +1 -1
- package/node_modules/@m0saic/core/dist/ffmpeg/filters/applyBlur.js +1 -1
- package/node_modules/@m0saic/core/dist/ffmpeg/filters/applyBorderRadius.js +1 -1
- package/node_modules/@m0saic/core/dist/ffmpeg/filters/applyCamera.js +1 -1
- package/node_modules/@m0saic/core/dist/ffmpeg/filters/applyChromaKey.js +1 -1
- package/node_modules/@m0saic/core/dist/ffmpeg/filters/applyFade.js +1 -1
- package/node_modules/@m0saic/core/dist/ffmpeg/filters/applyGrade.js +1 -1
- package/node_modules/@m0saic/core/dist/ffmpeg/filters/applyMask.js +1 -1
- package/node_modules/@m0saic/core/dist/ffmpeg/filters/applyNoise.js +1 -1
- package/node_modules/@m0saic/core/dist/ffmpeg/filters/applyPixelize.js +1 -1
- package/node_modules/@m0saic/core/dist/ffmpeg/filters/applyRotate.js +1 -1
- package/node_modules/@m0saic/core/dist/ffmpeg/filters/applyStroke.js +1 -1
- package/node_modules/@m0saic/core/dist/ffmpeg/filters/applyTileEffects.js +1 -1
- package/node_modules/@m0saic/core/dist/ffmpeg/filters/coverCrop.js +1 -1
- package/node_modules/@m0saic/core/dist/ffmpeg/filters/index.js +1 -1
- package/node_modules/@m0saic/core/dist/ffmpeg/filters/sourceRectCrop.js +1 -1
- package/node_modules/@m0saic/core/dist/ffmpeg/gridLowering.js +1 -1
- package/node_modules/@m0saic/core/dist/ffmpeg/index.js +1 -1
- package/node_modules/@m0saic/core/dist/ffmpeg/splitAvMux.js +1 -1
- package/node_modules/@m0saic/core/dist/ffmpeg/threadGuard.js +1 -1
- package/node_modules/@m0saic/core/dist/flatten/index.js +1 -1
- package/node_modules/@m0saic/core/dist/fs/index.js +1 -1
- package/node_modules/@m0saic/core/dist/fs/tempWorkspace.js +1 -1
- package/node_modules/@m0saic/core/dist/index.js +1 -1
- package/node_modules/@m0saic/core/dist/media/buildAssetManifestFromInputs.js +1 -1
- package/node_modules/@m0saic/core/dist/media/buildMediaRegistryFromInput.js +1 -1
- package/node_modules/@m0saic/core/dist/media/collectMediaInputsFromInvocationProps.js +1 -1
- package/node_modules/@m0saic/core/dist/media/collectMediaInputsFromMosaicRenderableFile.js +1 -1
- package/node_modules/@m0saic/core/dist/media/collectMediaInputsFromProps.js +1 -1
- package/node_modules/@m0saic/core/dist/media/index.js +1 -1
- package/node_modules/@m0saic/core/dist/media/internalMintAsset.js +1 -1
- package/node_modules/@m0saic/core/dist/media/remoteUrl.js +1 -1
- package/node_modules/@m0saic/core/dist/media/stageUnsafeFilenames.js +1 -1
- package/node_modules/@m0saic/core/dist/media/types.js +1 -1
- package/node_modules/@m0saic/core/dist/output/index.js +1 -1
- package/node_modules/@m0saic/core/dist/output/resolveOutputFormat.js +1 -1
- package/node_modules/@m0saic/core/dist/output/types.js +1 -1
- package/node_modules/@m0saic/core/dist/probe/cellLuminanceProbe.js +1 -1
- package/node_modules/@m0saic/core/dist/probe/extractSubtitleCues.js +1 -1
- package/node_modules/@m0saic/core/dist/probe/helpers.js +1 -1
- package/node_modules/@m0saic/core/dist/probe/index.js +1 -1
- package/node_modules/@m0saic/core/dist/probe/luminanceProbe.js +1 -1
- package/node_modules/@m0saic/core/dist/probe/probeMedia.js +1 -1
- package/node_modules/@m0saic/core/dist/probe/runFFprobe.js +1 -1
- package/node_modules/@m0saic/core/dist/probe/types.js +1 -1
- package/node_modules/@m0saic/core/dist/runtime/engineRedaction.js +1 -1
- package/node_modules/@m0saic/core/dist/runtime/ffmpegFailure.js +1 -1
- package/node_modules/@m0saic/core/dist/runtime/filterPreflight.js +1 -1
- package/node_modules/@m0saic/core/dist/runtime/hashFile.js +1 -1
- package/node_modules/@m0saic/core/dist/runtime/index.js +1 -1
- package/node_modules/@m0saic/core/dist/runtime/pathInfo.js +1 -1
- package/node_modules/@m0saic/core/dist/runtime/perfHeatmap.js +1 -1
- package/node_modules/@m0saic/core/dist/runtime/perfReport.js +1 -1
- package/node_modules/@m0saic/core/dist/runtime/pipelineM0p.js +1 -1
- package/node_modules/@m0saic/core/dist/runtime/renderCostModel.constants.js +1 -1
- package/node_modules/@m0saic/core/dist/runtime/renderCostModel.js +1 -1
- package/node_modules/@m0saic/core/dist/runtime/renderReport.js +1 -1
- package/node_modules/@m0saic/core/dist/runtime/renderSidecars.js +1 -1
- package/node_modules/@m0saic/core/dist/runtime/resolveMosaicx.js +1 -1
- package/node_modules/@m0saic/core/dist/runtime/runPlan.js +1 -1
- package/node_modules/@m0saic/core/dist/runtime/types.js +1 -1
- package/node_modules/@m0saic/core/dist/runtime/upstream.js +1 -1
- package/node_modules/@m0saic/core/dist/runtime/writeSidecars.js +1 -1
- package/node_modules/@m0saic/core/dist/types/chunk.js +1 -1
- package/node_modules/@m0saic/core/dist/types/index.js +1 -1
- package/node_modules/@m0saic/core/dist/types/mosaic-plan.js +1 -1
- package/node_modules/@m0saic/core/dist/utils/assertTiming.js +1 -1
- package/node_modules/@m0saic/core/dist/utils/command.js +1 -1
- package/node_modules/@m0saic/core/dist/utils/createEngineContext.js +1 -1
- package/node_modules/@m0saic/core/dist/utils/createTemplateRenderCache.js +1 -1
- package/node_modules/@m0saic/core/dist/utils/ffmpegColor.js +1 -1
- package/node_modules/@m0saic/core/dist/utils/formatDuration.js +1 -1
- package/node_modules/@m0saic/core/dist/utils/fsSafeId.js +1 -1
- package/node_modules/@m0saic/core/dist/utils/index.js +1 -1
- package/node_modules/@m0saic/core/dist/utils/lowerRenderableToMosaicDocument.js +1 -1
- package/node_modules/@m0saic/core/dist/utils/movSafeCodec.js +1 -1
- package/node_modules/@m0saic/core/dist/utils/resolveBoxFrac.js +1 -1
- package/node_modules/@m0saic/core/dist/validate/index.js +1 -1
- package/node_modules/@m0saic/core/scripts/mask-rasterize-core.js +1 -1
- package/node_modules/@m0saic/core/scripts/mask-rasterize-worker.js +1 -1
- package/node_modules/@m0saic/core/scripts/mask-worker-thread.js +1 -1
- package/node_modules/@m0saic/dictionary/NOTICE +9 -0
- package/node_modules/@m0saic/dictionary/README.md +315 -0
- package/node_modules/@m0saic/dictionary/package.json +1 -1
- package/node_modules/@m0saic/dsl/package.json +1 -1
- package/node_modules/@m0saic/dsl-file-formats/dist/cjs/agent.js +6 -0
- package/node_modules/@m0saic/dsl-file-formats/dist/cjs/m0/parseM0File.js +1 -1
- package/node_modules/@m0saic/dsl-file-formats/dist/cjs/m0/serializeM0File.js +2 -2
- package/node_modules/@m0saic/dsl-file-formats/dist/cjs/m0c/m0cFile.js +3 -3
- package/node_modules/@m0saic/dsl-file-formats/dist/cjs/types.js +1 -1
- package/node_modules/@m0saic/dsl-file-formats/package.json +1 -1
- package/node_modules/@m0saic/dsl-stdlib/dist/cjs/builders/bakeM0cInsets.js +1 -0
- package/node_modules/@m0saic/dsl-stdlib/dist/cjs/builders/index.js +1 -1
- package/node_modules/@m0saic/dsl-stdlib/package.json +1 -1
- package/node_modules/@m0saic/knowledge/LICENSE +21 -0
- package/node_modules/@m0saic/knowledge/README.md +71 -0
- package/node_modules/@m0saic/knowledge/dist/index.js +1 -0
- package/node_modules/@m0saic/knowledge/docs/README.md +60 -0
- package/node_modules/@m0saic/knowledge/docs/file-formats/m0-iteration-protocol.md +120 -0
- package/node_modules/@m0saic/knowledge/docs/file-formats/m0p-and-custom-field.md +195 -0
- package/node_modules/@m0saic/knowledge/docs/handbook/README.md +27 -0
- package/node_modules/@m0saic/knowledge/docs/handbook/composition-arithmetic.md +278 -0
- package/node_modules/@m0saic/knowledge/docs/handbook/dsl-complexity.md +75 -0
- package/node_modules/@m0saic/knowledge/docs/handbook/dsl-rules.md +367 -0
- package/node_modules/@m0saic/knowledge/docs/handbook/feasibility-precision-quantization.md +591 -0
- package/node_modules/@m0saic/knowledge/docs/handbook/m0-construction-methods.md +201 -0
- package/node_modules/@m0saic/knowledge/docs/handbook/precision-tiers.md +84 -0
- package/node_modules/@m0saic/knowledge/docs/m0saic-thesis.md +95 -0
- package/node_modules/@m0saic/knowledge/docs/runtime/README.md +17 -0
- package/node_modules/@m0saic/knowledge/docs/runtime/cli-usage.md +447 -0
- package/node_modules/@m0saic/knowledge/docs/runtime/ffmpeg-expression-limits.md +117 -0
- package/node_modules/@m0saic/knowledge/docs/runtime/reduce-to-one.md +96 -0
- package/node_modules/@m0saic/knowledge/docs/skills/README.md +40 -0
- package/node_modules/@m0saic/knowledge/docs/skills/axis-and-geometry.md +103 -0
- package/node_modules/@m0saic/knowledge/docs/skills/dsl-stdlib-method-catalog.md +7 -0
- package/node_modules/@m0saic/knowledge/docs/skills/identity.md +123 -0
- package/node_modules/@m0saic/knowledge/docs/skills/labels-and-masks.md +170 -0
- package/node_modules/@m0saic/knowledge/docs/skills/m0saic-string-generation.md +251 -0
- package/node_modules/@m0saic/knowledge/docs/skills/more-atoms-not-bigger-atoms.md +77 -0
- package/node_modules/@m0saic/knowledge/docs/skills/overlay-semantics.md +194 -0
- package/node_modules/@m0saic/knowledge/docs/skills/parse-apis.md +79 -0
- package/node_modules/@m0saic/knowledge/docs/skills/passthrough-semantics.md +136 -0
- package/node_modules/@m0saic/knowledge/docs/skills/structural-construction.md +86 -0
- package/node_modules/@m0saic/knowledge/docs/skills/text-in-templates.md +126 -0
- package/node_modules/@m0saic/knowledge/docs/skills/zero-overlay-analysis.md +87 -0
- package/node_modules/@m0saic/knowledge/docs/templates/README.md +65 -0
- package/node_modules/@m0saic/knowledge/docs/templates/capability-templates.md +72 -0
- package/node_modules/@m0saic/knowledge/docs/templates/construction-strategy.md +329 -0
- package/node_modules/@m0saic/knowledge/docs/templates/data-pipeline.md +324 -0
- package/node_modules/@m0saic/knowledge/docs/templates/emission-patterns.md +130 -0
- package/node_modules/@m0saic/knowledge/docs/templates/geometry-recipes.md +248 -0
- package/node_modules/@m0saic/knowledge/docs/templates/layout-contract.md +168 -0
- package/node_modules/@m0saic/knowledge/docs/templates/output-resolution-tree.md +202 -0
- package/node_modules/@m0saic/knowledge/docs/templates/patterns/case-study-lessons.md +69 -0
- package/node_modules/@m0saic/knowledge/docs/templates/patterns/perf-authoring-rules.md +100 -0
- package/node_modules/@m0saic/knowledge/docs/templates/patterns/primitive-extraction-pattern.md +103 -0
- package/node_modules/@m0saic/knowledge/docs/templates/philosophy-and-contract.md +310 -0
- package/node_modules/@m0saic/knowledge/docs/templates/recursion-nested-rendering.md +154 -0
- package/node_modules/@m0saic/knowledge/docs/templates/reference/grid.md +104 -0
- package/node_modules/@m0saic/knowledge/docs/templates/reference/json-prop-type.md +169 -0
- package/node_modules/@m0saic/knowledge/docs/templates/reference/mosaic-color.md +81 -0
- package/node_modules/@m0saic/knowledge/docs/templates/reference/mosaic-placement-props.md +103 -0
- package/node_modules/@m0saic/knowledge/docs/templates/reference/prop-bindings.md +324 -0
- package/node_modules/@m0saic/knowledge/docs/templates/reference/template-flags.md +224 -0
- package/node_modules/@m0saic/knowledge/docs/templates/render-lifecycle.md +117 -0
- package/node_modules/@m0saic/knowledge/docs/templates/rendering-model-contract.md +392 -0
- package/node_modules/@m0saic/knowledge/docs/templates/standalone-pack-authoring.md +299 -0
- package/node_modules/@m0saic/knowledge/docs/templates/theming.md +81 -0
- package/node_modules/@m0saic/knowledge/docs/templates/ui-controls.md +150 -0
- package/node_modules/@m0saic/knowledge/package.json +6 -0
- package/node_modules/@m0saic/momo-types/README.md +109 -0
- package/node_modules/@m0saic/momo-types/dist/agent.js +1 -6
- package/node_modules/@m0saic/momo-types/dist/context.js +1 -1
- package/node_modules/@m0saic/momo-types/package.json +1 -1
- package/node_modules/@m0saic/platform/README.md +3 -0
- package/node_modules/@m0saic/platform/dist/cjs/index.js +1 -1
- package/node_modules/@m0saic/platform/dist/cjs/mosaic/outputKind/outputKind.js +1 -1
- package/node_modules/@m0saic/platform/dist/cjs/mosaic/propBindings/index.js +1 -1
- package/node_modules/@m0saic/platform/dist/cjs/mosaic/propBindings/propBindings.js +1 -1
- package/node_modules/@m0saic/platform/dist/cjs/mosaic/validate/validateSources.js +1 -1
- package/node_modules/@m0saic/platform/dist/cjs/packages/mosaicPackages.js +1 -0
- package/node_modules/@m0saic/platform/dist/cjs/paths/m0saicRoot.js +1 -1
- package/node_modules/@m0saic/platform/dist/cjs/telemetry/lifecycle.js +1 -1
- package/node_modules/@m0saic/platform/dist/cjs/telemetry/preview.js +1 -1
- package/node_modules/@m0saic/platform/dist/cjs/telemetry/sender.js +1 -1
- package/node_modules/@m0saic/platform/dist/cjs/telemetry/usageRecorder.js +1 -1
- package/node_modules/@m0saic/platform/dist/cjs/telemetry/usageStore.js +3 -3
- package/node_modules/@m0saic/platform/dist/cjs/toolchain/ffmpeg/baseline.json +25 -97
- package/node_modules/@m0saic/platform/dist/cjs/toolchain/ffmpeg/index.js +1 -1
- package/node_modules/@m0saic/platform/dist/cjs/toolchain/ffmpeg/install.js +2 -2
- package/node_modules/@m0saic/platform/dist/cjs/toolchain/goldenFfmpeg.js +6 -6
- package/node_modules/@m0saic/platform/package.json +1 -1
- package/node_modules/@m0saic/product/dist/communityRelease.js +1 -1
- package/node_modules/@m0saic/product/dist/freeTierLicense.js +1 -1
- package/node_modules/@m0saic/product/dist/index.js +1 -1
- package/node_modules/@m0saic/product/dist/licenseActivationNotice.js +1 -0
- package/node_modules/@m0saic/product/dist/licenseFile.js +1 -0
- package/node_modules/@m0saic/product/dist/licenseToken.js +1 -1
- package/node_modules/@m0saic/product/dist/makeScratchPath.js +1 -0
- package/node_modules/@m0saic/product/dist/postRenderWrapper.js +1 -1
- package/node_modules/@m0saic/product/dist/publicKeys.js +1 -1
- package/node_modules/@m0saic/product/dist/revokedKeys.js +1 -1
- package/node_modules/@m0saic/product/dist/upstreamDefaults.js +1 -1
- package/node_modules/@m0saic/product/dist/workspaceScaffold.js +1 -0
- package/node_modules/@m0saic/template-utils/dist/brand/hello-world/helloWorld.js +1 -1
- package/node_modules/@m0saic/template-utils/dist/geometry-contract/index.js +1 -1
- package/node_modules/@m0saic/template-utils/dist/geometry-contract/layoutConstraint.js +2 -2
- package/node_modules/@m0saic/template-utils/dist/m0saic/loadSession.js +1 -1
- package/node_modules/@m0saic/template-utils/dist/render/createDesignContext.js +1 -1
- package/node_modules/@m0saic/template-utils/dist/sources/makeErrorMosaic.js +2 -2
- package/node_modules/@m0saic/template-utils/dist/sources/svgTextSource.js +1 -1
- package/node_modules/@m0saic/template-utils/dist/template/auditRenderedTemplate.js +5 -5
- package/node_modules/@m0saic/template-utils/dist/template/templateConventions.js +3 -3
- package/node_modules/@m0saic/template-utils/dist/template/validateTemplateProps.js +1 -1
- package/node_modules/@m0saic/template-utils/dist/text/fitText.js +6 -6
- package/node_modules/@m0saic/template-utils/package.json +1 -1
- package/node_modules/@m0saic/templates/NOTICE +9 -0
- package/node_modules/@m0saic/templates/dist/m0saic/media/blur-regions/v1/tutorial.js +1 -1
- package/node_modules/@m0saic/templates/package.json +1 -1
- package/node_modules/@m0saic/templates-advanced/NOTICE +9 -0
- package/node_modules/@m0saic/text/package.json +1 -1
- package/node_modules/@m0saic/types/dist/analytics/consent.js +1 -1
- package/node_modules/@m0saic/types/dist/analytics/event.js +1 -1
- package/node_modules/@m0saic/types/dist/analytics/usageMetrics.js +1 -1
- package/node_modules/@m0saic/types/dist/identifiers/identifiers.js +1 -1
- package/node_modules/@m0saic/types/dist/telemetry/ffmpegFailure.js +1 -1
- package/node_modules/@m0saic/types/package.json +1 -1
- package/node_modules/@m0saic/types-internal/dist/analytics/featureKeys.js +1 -1
- package/package.json +13 -11
- package/resources/starter-base/starter-base.json +10 -0
- package/resources/starter-base/starter-base.tgz +0 -0
|
@@ -1,6 +1 @@
|
|
|
1
|
-
"use strict";var
|
|
2
|
-
`).split(`
|
|
3
|
-
`).map(r=>r.replace(/[ \t]+$/g,"")).join(`
|
|
4
|
-
`).replace(/\n{3,}/g,`
|
|
5
|
-
|
|
6
|
-
`).trim()}o(normalizeAgentProse,"normalizeAgentProse");function normalizeM0AgentMeta(t){if(!t)return null;const r={};if(t.id&&t.id.trim()!==""&&(r.id=t.id.trim()),t.note&&t.note.trim()!==""&&(r.note=normalizeAgentProse(t.note)),t.question&&t.question.trim()!==""&&(r.question=normalizeAgentProse(t.question)),t.regions){const i={};for(const[e,n]of Object.entries(t.regions))typeof n=="string"&&n.trim()!==""&&(i[e]=n);Object.keys(i).length&&(r.regions=i)}if(t.context!==void 0){const i=(0,context_1.normalizeCandidateContext)(t.context);i!==void 0&&(r.context=i)}if(t.response){const i=normalizeM0AgentResponse(t.response);i&&(r.response=i)}if(t.comments&&t.comments.length>0){const i=[];for(const e of t.comments){const n=normalizeM0AgentComment(e);n&&i.push(n)}i.length&&(r.comments=i)}return Object.keys(r).length?r:null}o(normalizeM0AgentMeta,"normalizeM0AgentMeta");function normalizeM0AgentResponse(t){if(!t)return null;const r=t.body?normalizeAgentProse(t.body):"";if(r==="")return null;const i={body:r};if(t.from&&t.from.trim()!==""&&(i.from=t.from.trim()),t.at&&t.at.trim()!==""&&(i.at=t.at.trim()),t.src&&t.src.trim()!==""&&(i.src=t.src.trim()),t.srcMosaic&&t.srcMosaic.trim()!==""&&(i.srcMosaic=t.srcMosaic.trim()),Array.isArray(t.images)){const e=t.images.filter(n=>typeof n=="string"&&n.length>0);e.length>0&&(i.images=e)}return i}o(normalizeM0AgentResponse,"normalizeM0AgentResponse");function normalizeM0AgentComment(t){if(!t)return null;const r=t.body?normalizeAgentProse(t.body):"";if(r==="")return null;const i={body:r};return t.id&&t.id.trim()!==""&&(i.id=t.id.trim()),t.from&&t.from.trim()!==""&&(i.from=t.from.trim()),t.at&&t.at.trim()!==""&&(i.at=t.at.trim()),i}o(normalizeM0AgentComment,"normalizeM0AgentComment");
|
|
1
|
+
"use strict";var s=Object.defineProperty;var o=(t,e)=>s(t,"name",{value:e,configurable:!0});Object.defineProperty(exports,"__esModule",{value:!0}),exports.normalizeAgentProse=exports.collapseAgentProse=exports.mintAgentId=void 0,exports.normalizeM0AgentMeta=normalizeM0AgentMeta,exports.normalizeM0AgentResponse=normalizeM0AgentResponse,exports.normalizeM0AgentComment=normalizeM0AgentComment;const dsl_file_formats_1=require("@m0saic/dsl-file-formats");Object.defineProperty(exports,"mintAgentId",{enumerable:!0,get:o(function(){return dsl_file_formats_1.mintAgentId},"get")}),Object.defineProperty(exports,"collapseAgentProse",{enumerable:!0,get:o(function(){return dsl_file_formats_1.collapseAgentProse},"get")}),Object.defineProperty(exports,"normalizeAgentProse",{enumerable:!0,get:o(function(){return dsl_file_formats_1.normalizeAgentProse},"get")});const context_1=require("./context");function normalizeM0AgentMeta(t){if(!t)return null;const e={};if(t.id&&t.id.trim()!==""&&(e.id=t.id.trim()),t.note&&t.note.trim()!==""&&(e.note=(0,dsl_file_formats_1.normalizeAgentProse)(t.note)),t.question&&t.question.trim()!==""&&(e.question=(0,dsl_file_formats_1.normalizeAgentProse)(t.question)),t.regions){const r={};for(const[n,i]of Object.entries(t.regions))typeof i=="string"&&i.trim()!==""&&(r[n]=i);Object.keys(r).length&&(e.regions=r)}if(t.context!==void 0){const r=(0,context_1.normalizeCandidateContext)(t.context);r!==void 0&&(e.context=r)}if(t.response){const r=normalizeM0AgentResponse(t.response);r&&(e.response=r)}if(t.comments&&t.comments.length>0){const r=[];for(const n of t.comments){const i=normalizeM0AgentComment(n);i&&r.push(i)}r.length&&(e.comments=r)}return Object.keys(e).length?e:null}o(normalizeM0AgentMeta,"normalizeM0AgentMeta");function normalizeM0AgentResponse(t){if(!t)return null;const e=t.body?(0,dsl_file_formats_1.normalizeAgentProse)(t.body):"";if(e==="")return null;const r={body:e};if(t.from&&t.from.trim()!==""&&(r.from=t.from.trim()),t.at&&t.at.trim()!==""&&(r.at=t.at.trim()),t.src&&t.src.trim()!==""&&(r.src=t.src.trim()),t.srcMosaic&&t.srcMosaic.trim()!==""&&(r.srcMosaic=t.srcMosaic.trim()),Array.isArray(t.images)){const n=t.images.filter(i=>typeof i=="string"&&i.length>0);n.length>0&&(r.images=n)}return r}o(normalizeM0AgentResponse,"normalizeM0AgentResponse");function normalizeM0AgentComment(t){if(!t)return null;const e=t.body?(0,dsl_file_formats_1.normalizeAgentProse)(t.body):"";if(e==="")return null;const r={body:e};return t.id&&t.id.trim()!==""&&(r.id=t.id.trim()),t.from&&t.from.trim()!==""&&(r.from=t.from.trim()),t.at&&t.at.trim()!==""&&(r.at=t.at.trim()),r}o(normalizeM0AgentComment,"normalizeM0AgentComment");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var n=Object.defineProperty;var t=(e,r)=>n(e,"name",{value:r,configurable:!0});Object.defineProperty(exports,"__esModule",{value:!0}),exports.normalizeCandidateContext=normalizeCandidateContext;const dsl_file_formats_1=require("@m0saic/dsl-file-formats");function normalizeCandidateContext(e){return(0,dsl_file_formats_1.normalizeCandidateContext)(e)}t(normalizeCandidateContext,"normalizeCandidateContext");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var a=Object.defineProperty;var s=(t,e)=>a(t,"name",{value:e,configurable:!0});var __createBinding=this&&this.__createBinding||(Object.create?(function(t,e,r,i){i===void 0&&(i=r);var o=Object.getOwnPropertyDescriptor(e,r);(!o||("get"in o?!e.__esModule:o.writable||o.configurable))&&(o={enumerable:!0,get:s(function(){return e[r]},"get")}),Object.defineProperty(t,i,o)}):(function(t,e,r,i){i===void 0&&(i=r),t[i]=e[r]})),__exportStar=this&&this.__exportStar||function(t,e){for(var r in t)r!=="default"&&!Object.prototype.hasOwnProperty.call(e,r)&&__createBinding(e,t,r)};Object.defineProperty(exports,"__esModule",{value:!0}),__exportStar(require("./mosaic/flatten"),exports),__exportStar(require("./mosaic/layoutFloors"),exports),__exportStar(require("./mosaic/validate"),exports),__exportStar(require("./mosaic/edit"),exports),__exportStar(require("./mosaic/propBindings"),exports),__exportStar(require("./mosaic/outputKind"),exports),__exportStar(require("./mosaic/serializeMosaicDocument"),exports),__exportStar(require("./mosaic/absolutizeManifestPathsWeb"),exports),__exportStar(require("./share"),exports),__exportStar(require("./communityM"),exports),__exportStar(require("./asset"),exports),__exportStar(require("./jobs"),exports),__exportStar(require("./language"),exports),__exportStar(require("./output"),exports),__exportStar(require("./bridges/protocol"),exports),__exportStar(require("./templateId"),exports),__exportStar(require("./packages/mosaicPackages"),exports);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var d=Object.defineProperty;var s=(t,e)=>d(t,"name",{value:e,configurable:!0});Object.defineProperty(exports,"__esModule",{value:!0}),exports.collectMotionEvidence=collectMotionEvidence,exports.isAnimatedRenderable=isAnimatedRenderable,exports.stampedOutputKind=stampedOutputKind,exports.inferOutputKind=inferOutputKind;function isRecord(t){return!!t&&typeof t=="object"&&!Array.isArray(t)}s(isRecord,"isRecord");function scanDoc(t,e,i){if(i.has(t))return;i.add(t);const n=Array.isArray(t.sources)?t.sources:[];for(const r of n){if(!isRecord(r))continue;const u=isRecord(r.overlay)?r.overlay:null;u&&(u.alpha!=null||u.xExpr!=null||u.yExpr!=null||u.enable!=null||u.startAtSec!=null||u.window!=null)&&e.overlayExprs++,r.type==="text"&&((Array.isArray(r.layers)?r.layers:[]).some(a=>isRecord(a)&&isRecord(a.content)&&a.content.kind==="expr")&&e.exprText++,isRecord(r.renderMode)&&r.renderMode.kind==="video"&&e.videoText++),isRecord(r.effects)&&r.effects.camera!=null&&e.cameras++,r.type==="media"&&(typeof r.mediaType=="string"?r.mediaType:typeof r.kind=="string"?r.kind:"")==="video"&&e.videoMedia++}const o=isRecord(t.children)?t.children:null;if(o)for(const r of Object.values(o))scanFile(r,e,i)}s(scanDoc,"scanDoc");function scanFile(t,e,i){if(isRecord(t)){if(Array.isArray(t.steps)){for(const n of t.steps)isRecord(n)&&(n.intermediate!==!0&&e.outputSteps++,scanFile(n.file,e,i));return}scanDoc(t,e,i)}}s(scanFile,"scanFile");function collectMotionEvidence(t){const e={overlayExprs:0,exprText:0,videoText:0,cameras:0,videoMedia:0,outputSteps:0};return scanFile(t,e,new Set),e}s(collectMotionEvidence,"collectMotionEvidence");function isAnimatedRenderable(t){const e=collectMotionEvidence(t);return e.overlayExprs+e.exprText+e.videoText+e.cameras+e.videoMedia>0||e.outputSteps>1}s(isAnimatedRenderable,"isAnimatedRenderable");function stampedOutputKind(t){if(!isRecord(t))return null;const e=t,i=s(n=>{const o=isRecord(n)&&isRecord(n.format)?n.format.kind:void 0;return o==="video"||o==="image"?o:null},"read");if(Array.isArray(e.steps)){for(const n of e.steps){if(!isRecord(n)||n.intermediate===!0)continue;const o=i(n.file);if(o)return o}return null}return i(e)}s(stampedOutputKind,"stampedOutputKind");function inferOutputKind(t){var e;if(!isRecord(t))return null;const i=t;return Array.isArray(i.steps)&&i.emit!=="multi"?"video":(e=stampedOutputKind(t))!==null&&e!==void 0?e:isAnimatedRenderable(t)?"video":"image"}s(inferOutputKind,"inferOutputKind");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var n=Object.defineProperty;var e=(r,t)=>n(r,"name",{value:t,configurable:!0});Object.defineProperty(exports,"__esModule",{value:!0}),exports.sourceBindings=exports.resolveBindableProp=exports.bindingCompanion=exports.bindingSeedDraft=exports.bindingOnClear=exports.bindingPath=exports.isColorPropDef=exports.isStructuredPropType=exports.isMediaPropType=exports.isListPropType=exports.isRectPickerProp=exports.classifyBindableProp=exports.propDefinitionAtPath=void 0;var propBindings_1=require("./propBindings");Object.defineProperty(exports,"propDefinitionAtPath",{enumerable:!0,get:e(function(){return propBindings_1.propDefinitionAtPath},"get")}),Object.defineProperty(exports,"classifyBindableProp",{enumerable:!0,get:e(function(){return propBindings_1.classifyBindableProp},"get")}),Object.defineProperty(exports,"isRectPickerProp",{enumerable:!0,get:e(function(){return propBindings_1.isRectPickerProp},"get")}),Object.defineProperty(exports,"isListPropType",{enumerable:!0,get:e(function(){return propBindings_1.isListPropType},"get")}),Object.defineProperty(exports,"isMediaPropType",{enumerable:!0,get:e(function(){return propBindings_1.isMediaPropType},"get")}),Object.defineProperty(exports,"isStructuredPropType",{enumerable:!0,get:e(function(){return propBindings_1.isStructuredPropType},"get")}),Object.defineProperty(exports,"isColorPropDef",{enumerable:!0,get:e(function(){return propBindings_1.isColorPropDef},"get")}),Object.defineProperty(exports,"bindingPath",{enumerable:!0,get:e(function(){return propBindings_1.bindingPath},"get")}),Object.defineProperty(exports,"bindingOnClear",{enumerable:!0,get:e(function(){return propBindings_1.bindingOnClear},"get")}),Object.defineProperty(exports,"bindingSeedDraft",{enumerable:!0,get:e(function(){return propBindings_1.bindingSeedDraft},"get")}),Object.defineProperty(exports,"bindingCompanion",{enumerable:!0,get:e(function(){return propBindings_1.bindingCompanion},"get")}),Object.defineProperty(exports,"resolveBindableProp",{enumerable:!0,get:e(function(){return propBindings_1.resolveBindableProp},"get")}),Object.defineProperty(exports,"sourceBindings",{enumerable:!0,get:e(function(){return propBindings_1.sourceBindings},"get")});
|
|
1
|
+
"use strict";var n=Object.defineProperty;var e=(r,t)=>n(r,"name",{value:t,configurable:!0});Object.defineProperty(exports,"__esModule",{value:!0}),exports.sourceBindings=exports.resolveBindableProp=exports.bindingCompanion=exports.bindingSeedDraft=exports.bindingOnClear=exports.bindingPath=exports.isColorPropDef=exports.isStructuredPropType=exports.isMediaPropType=exports.isListPropType=exports.isRectListPickerProp=exports.isRectPickerProp=exports.classifyBindableProp=exports.propDefinitionAtPath=void 0;var propBindings_1=require("./propBindings");Object.defineProperty(exports,"propDefinitionAtPath",{enumerable:!0,get:e(function(){return propBindings_1.propDefinitionAtPath},"get")}),Object.defineProperty(exports,"classifyBindableProp",{enumerable:!0,get:e(function(){return propBindings_1.classifyBindableProp},"get")}),Object.defineProperty(exports,"isRectPickerProp",{enumerable:!0,get:e(function(){return propBindings_1.isRectPickerProp},"get")}),Object.defineProperty(exports,"isRectListPickerProp",{enumerable:!0,get:e(function(){return propBindings_1.isRectListPickerProp},"get")}),Object.defineProperty(exports,"isListPropType",{enumerable:!0,get:e(function(){return propBindings_1.isListPropType},"get")}),Object.defineProperty(exports,"isMediaPropType",{enumerable:!0,get:e(function(){return propBindings_1.isMediaPropType},"get")}),Object.defineProperty(exports,"isStructuredPropType",{enumerable:!0,get:e(function(){return propBindings_1.isStructuredPropType},"get")}),Object.defineProperty(exports,"isColorPropDef",{enumerable:!0,get:e(function(){return propBindings_1.isColorPropDef},"get")}),Object.defineProperty(exports,"bindingPath",{enumerable:!0,get:e(function(){return propBindings_1.bindingPath},"get")}),Object.defineProperty(exports,"bindingOnClear",{enumerable:!0,get:e(function(){return propBindings_1.bindingOnClear},"get")}),Object.defineProperty(exports,"bindingSeedDraft",{enumerable:!0,get:e(function(){return propBindings_1.bindingSeedDraft},"get")}),Object.defineProperty(exports,"bindingCompanion",{enumerable:!0,get:e(function(){return propBindings_1.bindingCompanion},"get")}),Object.defineProperty(exports,"resolveBindableProp",{enumerable:!0,get:e(function(){return propBindings_1.resolveBindableProp},"get")}),Object.defineProperty(exports,"sourceBindings",{enumerable:!0,get:e(function(){return propBindings_1.sourceBindings},"get")});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var c=Object.defineProperty;var
|
|
1
|
+
"use strict";var c=Object.defineProperty;var u=(n,t)=>c(n,"name",{value:t,configurable:!0});Object.defineProperty(exports,"__esModule",{value:!0}),exports.isMediaPropType=isMediaPropType,exports.isRectPickerProp=isRectPickerProp,exports.isRectListPickerProp=isRectListPickerProp,exports.bindingRange=bindingRange,exports.bindingOnClear=bindingOnClear,exports.bindingSeedDraft=bindingSeedDraft,exports.bindingCompanion=bindingCompanion,exports.sourceBindings=sourceBindings,exports.isStructuredPropType=isStructuredPropType,exports.bindingPath=bindingPath,exports.propDefinitionAtPath=propDefinitionAtPath,exports.isColorPropDef=isColorPropDef,exports.classifyBindableProp=classifyBindableProp,exports.isListPropType=isListPropType,exports.resolveBindableProp=resolveBindableProp;function isKind(n){return n==="string"||n==="number"||n==="color"||n==="rect"||n==="media"}u(isKind,"isKind");function isMediaPropType(n){return n?.type==="media"||n?.type==="media[]"}u(isMediaPropType,"isMediaPropType");function isRectPickerProp(n){var t,e;if(!n||n.type!=="json")return!1;const r=(t=n.meta)===null||t===void 0?void 0:t.control;return r?.picker==="regions"&&((e=r.regions)===null||e===void 0?void 0:e.max)===1}u(isRectPickerProp,"isRectPickerProp");function isRectListPickerProp(n,t){var e,r;if(!n||n.type!=="json")return!1;const i=(e=n.meta)===null||e===void 0?void 0:e.control;if(i?.picker!=="regions")return!1;const o=(r=i.regions)===null||r===void 0?void 0:r.max;return typeof o!="number"||o>1&&o>t}u(isRectListPickerProp,"isRectListPickerProp");function isClearAction(n){return n==="remove-element"||n==="unset-leaf"}u(isClearAction,"isClearAction");function isSpan(n){if(!n||typeof n!="object")return!1;const{start:t,end:e}=n;return typeof t=="number"&&Number.isInteger(t)&&t>=0&&typeof e=="number"&&Number.isInteger(e)&&e>=t}u(isSpan,"isSpan");function bindingRange(n,t){if(t!=="string"||!isSpan(n.range))return;const e={start:n.range.start,end:n.range.end},r=n.focus;return isSpan(r)&&r.start>=e.start&&r.end<=e.end?{range:e,focus:{start:r.start,end:r.end}}:{range:e}}u(bindingRange,"bindingRange");function bindingOnClear(n,t,e){if(t===null||!isClearAction(n.onClear))return;if(n.onClear==="remove-element")return typeof e[0]=="number"?"remove-element":void 0;const r=e[e.length-1];return e.length===0||typeof r=="string"?"unset-leaf":void 0}u(bindingOnClear,"bindingOnClear");function bindingSeedDraft(n,t){if(t===null||t==="rect"||t==="media")return;const e=n.seedDraft;if(!(typeof e!="string"||e.trim()==="")&&!(t==="number"&&!Number.isFinite(Number(e.trim()))))return e}u(bindingSeedDraft,"bindingSeedDraft");function bindingCompanion(n,t){return n.companion===!0&&t!==void 0}u(bindingCompanion,"bindingCompanion");function sourceBindings(n){return(Array.isArray(n?.bindings)&&n.bindings.length?n.bindings:n?.binding?[n.binding]:[]).filter(e=>!!e&&typeof e=="object"&&typeof e.propKey=="string"&&!!e.propKey)}u(sourceBindings,"sourceBindings");const STRUCTURED_TYPES=new Set(["json","list","array"]);function isStructuredPropType(n){return!!n&&STRUCTURED_TYPES.has(n.type)}u(isStructuredPropType,"isStructuredPropType");function bindingPath(n){const t=n.path?[...n.path]:[];return n.index!==void 0?[n.index,...t]:t}u(bindingPath,"bindingPath");function propDefinitionAtPath(n,t){if(!n||!t)return;let e=n,r;for(const i of t.split(".")){if(!i||(r=e?.[i],!r))return;e=r.type==="group"?r.fields:void 0}return r}u(propDefinitionAtPath,"propDefinitionAtPath");function isValidIndex(n){return n!==void 0&&Number.isInteger(n)&&n>=0}u(isValidIndex,"isValidIndex");function isValidPath(n){return n.every(t=>typeof t=="number"?isValidIndex(t):typeof t=="string"&&t.length>0)}u(isValidPath,"isValidPath");function isColorPropDef(n){var t,e,r,i;return!!n&&!!(!((e=(t=n.meta)===null||t===void 0?void 0:t.constraints)===null||e===void 0)&&e.isColor||!((i=(r=n.meta)===null||r===void 0?void 0:r.control)===null||i===void 0)&&i.colorPicker)}u(isColorPropDef,"isColorPropDef");function isFreeTextString(n){var t,e,r;const i=n.meta;return!(!((t=i?.constraints)===null||t===void 0)&&t.oneOf||!((e=i?.control)===null||e===void 0)&&e.options||!((r=i?.control)===null||r===void 0)&&r.optionsFromConnection)}u(isFreeTextString,"isFreeTextString");function stringKind(n){return isColorPropDef(n)?"color":isFreeTextString(n)?"string":null}u(stringKind,"stringKind");function classifyBindableProp(n,t){var e,r;if(!n||!((r=(e=n.meta)===null||e===void 0?void 0:e.ui)===null||r===void 0)&&r.hidden)return null;const i=typeof t=="number"?{index:t}:t??{},o=bindingPath(i);switch(n.type){case"string":return stringKind(n);case"number":return"number";case"media":return"media";case"string[]":return o.length===1&&typeof o[0]=="number"&&isValidIndex(o[0])?stringKind(n):null;case"number[]":return o.length===1&&typeof o[0]=="number"&&isValidIndex(o[0])?"number":null;case"media[]":return o.length===1&&typeof o[0]=="number"&&isValidIndex(o[0])?"media":null;default:if(!isStructuredPropType(n))return null;if(i.kind==="rect"){if(o.length===0)return isRectPickerProp(n)?"rect":null;const l=o.length===1&&typeof o[0]=="number"&&isValidIndex(o[0])?o[0]:null;return l!==null&&i.path===void 0&&isRectListPickerProp(n,l)?"rect":null}return o.length===0||!isValidPath(o)?null:isKind(i.kind)?i.kind:null}}u(classifyBindableProp,"classifyBindableProp");function isListPropType(n){return n?.type==="string[]"||n?.type==="number[]"||n?.type==="media[]"}u(isListPropType,"isListPropType");function resolveBindableProp(n,t){const e=propDefinitionAtPath(n,t.propKey),r=classifyBindableProp(e,t),i=bindingRange(t,r),o=bindingPath(t),l=e?.type==="string"||e?.type==="number"||e?.type==="media"?[]:o,d=bindingOnClear(t,r,l),s=bindingSeedDraft(t,r),a=bindingCompanion(t,s);return{def:e,kind:r,path:o,...d?{onClear:d}:{},...s!==void 0?{seedDraft:s}:{},...a?{companion:!0}:{},...i??{}}}u(resolveBindableProp,"resolveBindableProp");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var _=Object.defineProperty;var m=(e,r)=>_(e,"name",{value:r,configurable:!0});Object.defineProperty(exports,"__esModule",{value:!0}),exports.validateMosaicSources=validateMosaicSources;const types_1=require("@m0saic/types"),validateLavfiSource_1=require("./validateLavfiSource"),LOUD_GAIN_WARN=4;function validateMosaicSources(e,r={},t={}){const i=[];return e.forEach((s,o)=>{s.type==="media"?validateMediaSource(s,o,i,r):s.type==="mosaic"?validateMosaicSource(s,o,i,r):s.type==="text"?validateTextSource(s,o,i,r):s.type==="lavfi"?((0,validateLavfiSource_1.validateLavfiSource)(s,o,i),validateMaskAgainstManifest(s.mask,o,i,r),validateEffects(s.effects,o,i)):(0,types_1.isMosaicDataSource)(s)?validateDataSource(s,o,i):s.type==="ref"||(s.type==="template_invocation"?t.allowTemplateInvocation?validateTemplateInvocationSource(s,o,i):i.push({code:(0,types_1.asDiagnosticCode)("UNRESOLVED_TEMPLATE_INVOCATION"),message:`Source[${o}] is a template_invocation but the document was passed to the engine-strict source validator. Run resolveMosaicx first or use validateMosaicXDocument for source-form (.mosaicx) docs.`,severity:"error"}):i.push({code:(0,types_1.asDiagnosticCode)("UNKNOWN_SOURCE_TYPE"),message:`Source[${o}] has unknown type "${s.type}".`,severity:"error"}))}),validateDataSourcePartitioning(e,i),i}m(validateMosaicSources,"validateMosaicSources");function validateTemplateInvocationSource(e,r,t){const i=e.templateId;(typeof i!="string"||i.length===0||!(0,types_1.isTemplateId)(i))&&t.push({code:(0,types_1.asDiagnosticCode)("MOSAICX_INVOCATION_MISSING_TEMPLATE_ID"),message:`Source[${r}] (template_invocation) is missing templateId or it isn't a valid TemplateId; received: ${JSON.stringify(i)}.`,severity:"error"}),e.props===void 0&&t.push({code:(0,types_1.asDiagnosticCode)("MOSAICX_INVOCATION_MISSING_PROPS"),message:`Source[${r}] (template_invocation) is missing required field "props" (use empty {} for templates with no required props).`,severity:"error"})}m(validateTemplateInvocationSource,"validateTemplateInvocationSource");function validateDataSource(e,r,t){const i=e.variables;(i==null||typeof i!="object"||Array.isArray(i))&&t.push({code:(0,types_1.asDiagnosticCode)("DATA_SOURCE_VARIABLES_MALFORMED"),message:`Source[${r}] (data) must have a non-null object "variables" (received: ${i===null?"null":Array.isArray(i)?"array":typeof i}).`,severity:"error"}),e.alias!==void 0&&!(0,types_1.isAliasId)(e.alias)&&t.push({code:(0,types_1.asDiagnosticCode)("DATA_SOURCE_ALIAS_INVALID"),message:`Source[${r}] (data) alias must match STRICT_IDENTIFIER_PATTERN (letter/_/alphanumeric, max 64 chars); received: ${JSON.stringify(e.alias)}.`,severity:"error"})}m(validateDataSource,"validateDataSource");function validateDataSourcePartitioning(e,r){const t=[];if(e.forEach((i,s)=>{(0,types_1.isMosaicDataSource)(i)&&t.push(s)}),t.length>1){const i=new Map;for(const s of t){const o=e[s].alias;if(o===void 0)continue;const n=o,f=i.get(n);f!==void 0?r.push({code:(0,types_1.asDiagnosticCode)("MOSAIC_ALIAS_COLLISION"),message:`sources[${s}] (data) declares alias ${JSON.stringify(n)} already used by sources[${f}]. Aliases must be unique within a step.`,severity:"error"}):i.set(n,s)}}}m(validateDataSourcePartitioning,"validateDataSourcePartitioning");function validateMaskAgainstManifest(e,r,t,i){if(e==null)return;if(e.kind==="inline-mask"){const n=m(u=>{t.push({code:(0,types_1.asDiagnosticCode)("MASK_INLINE_INVALID"),message:`Source[${r}] inline-mask ${u}`,severity:"error"})},"bad"),f=m((u,c)=>{if(u===void 0)return!0;if(!Array.isArray(u)||u.length===0)return n(`${c} must be a non-empty array of { d, width }.`),!1;for(const a of u){const d=a;if(d==null||typeof d.d!="string"||d.d.trim()===""||typeof d.width!="number"||!Number.isFinite(d.width)||d.width<=0)return n(`${c} entries need a non-empty d and a positive width.`),!1}return!0},"validStrokes");if(f(e.strokes,"strokes"),e.parts!==void 0)if(!Array.isArray(e.parts)||e.parts.length===0)n("parts must be a non-empty array.");else for(const u of e.parts){const c=u?.translate;if(!c||typeof c.x!="number"||!Number.isFinite(c.x)||typeof c.y!="number"||!Number.isFinite(c.y)){n("parts entries need a finite { translate: { x, y } }.");break}if(!f(u.strokes,"parts[].strokes"))break;const a=u?.clip;if(a!==void 0&&(typeof a?.x!="number"||!Number.isFinite(a.x)||typeof a.y!="number"||!Number.isFinite(a.y)||typeof a.width!="number"||!Number.isFinite(a.width)||a.width<=0||typeof a.height!="number"||!Number.isFinite(a.height)||a.height<=0)){n("parts[].clip needs finite { x, y } and positive { width, height }.");break}}e.featherPx!==void 0&&(typeof e.featherPx!="number"||!Number.isFinite(e.featherPx)||e.featherPx<0)&&n("featherPx must be a finite number >= 0 (design px).");return}if(e.kind!=="alpha-image")return;const s=e.assetId;if(typeof s!="string"||s.length===0){t.push({code:(0,types_1.asDiagnosticCode)("MASK_ASSETID_EMPTY"),message:`Source[${r}] alpha-image mask has empty assetId.`,severity:"error"});return}const o=i[s];if(o==null){t.push({code:(0,types_1.asDiagnosticCode)("MASK_ASSETID_UNKNOWN"),message:`Source[${r}] alpha-image mask references unknown assetId "${s}".`,severity:"error"});return}o.kind!=="file"&&t.push({code:(0,types_1.asDiagnosticCode)("MASK_ASSET_KIND_INVALID"),message:`Source[${r}] alpha-image mask must reference a file asset (assetId="${s}" is kind="${o.kind}").`,severity:"error"})}m(validateMaskAgainstManifest,"validateMaskAgainstManifest");function validateEffects(e,r,t){if(e==null||typeof e!="object")return;const i=e,s=m(o=>typeof o=="number"&&Number.isFinite(o),"isFiniteNumber");if(i.rotate!==void 0&&(typeof i.rotate!="number"||!Number.isFinite(i.rotate))&&t.push({code:(0,types_1.asDiagnosticCode)("INVALID_EFFECT_ROTATE"),message:`Source[${r}] effects.rotate must be a finite number (degrees) if set (received: ${String(i.rotate)}).`,severity:"error"}),i.blur!==void 0)if(typeof i.blur=="number")(!Number.isFinite(i.blur)||i.blur<0)&&t.push({code:(0,types_1.asDiagnosticCode)("INVALID_EFFECT_BLUR"),message:`Source[${r}] effects.blur must be a finite number >= 0 (gaussian sigma in px) if set (received: ${String(i.blur)}).`,severity:"error"});else if(i.blur==null||typeof i.blur!="object"||Array.isArray(i.blur))t.push({code:(0,types_1.asDiagnosticCode)("INVALID_EFFECT_BLUR"),message:`Source[${r}] effects.blur must be a number or an object { sigma, backdrop? } if set.`,severity:"error"});else{const o=i.blur;(!s(o.sigma)||o.sigma<0)&&t.push({code:(0,types_1.asDiagnosticCode)("INVALID_EFFECT_BLUR"),message:`Source[${r}] effects.blur.sigma is required in object form and must be a finite number >= 0 (received: ${String(o.sigma)}).`,severity:"error"}),o.backdrop!==void 0&&typeof o.backdrop!="boolean"&&t.push({code:(0,types_1.asDiagnosticCode)("INVALID_EFFECT_BLUR"),message:`Source[${r}] effects.blur.backdrop must be a boolean if set (received: ${String(o.backdrop)}).`,severity:"error"})}for(const o of["fadeInMs","fadeOutMs"]){const n=i[o];n!==void 0&&(typeof n!="number"||!Number.isFinite(n)||n<0)&&t.push({code:(0,types_1.asDiagnosticCode)("INVALID_EFFECT_FADE"),message:`Source[${r}] effects.${o} must be a finite number >= 0 (milliseconds) if set (received: ${String(n)}).`,severity:"error"})}if(i.noise!==void 0)if(i.noise==null||typeof i.noise!="object"||Array.isArray(i.noise))t.push({code:(0,types_1.asDiagnosticCode)("INVALID_EFFECT_NOISE"),message:`Source[${r}] effects.noise must be an object { amount, seed } if set.`,severity:"error"});else{const o=i.noise;(!s(o.amount)||o.amount<0||o.amount>100)&&t.push({code:(0,types_1.asDiagnosticCode)("INVALID_EFFECT_NOISE"),message:`Source[${r}] effects.noise.amount must be a finite number in [0, 100] (received: ${String(o.amount)}).`,severity:"error"}),s(o.seed)||t.push({code:(0,types_1.asDiagnosticCode)("EFFECT_NOISE_SEED_REQUIRED"),message:`Source[${r}] effects.noise.seed is required and must be a finite number \u2014 determinism demands an explicit seed (same seed = same grain).`,severity:"error"})}if(i.pixelize!==void 0&&(!s(i.pixelize)||i.pixelize<0)&&t.push({code:(0,types_1.asDiagnosticCode)("INVALID_EFFECT_PIXELIZE"),message:`Source[${r}] effects.pixelize must be a finite number >= 0 (block px) if set (received: ${String(i.pixelize)}).`,severity:"error"}),i.chromaKey!==void 0)if(i.chromaKey==null||typeof i.chromaKey!="object"||Array.isArray(i.chromaKey))t.push({code:(0,types_1.asDiagnosticCode)("INVALID_EFFECT_CHROMAKEY"),message:`Source[${r}] effects.chromaKey must be an object { color, similarity?, blend?, despill? } if set.`,severity:"error"});else{const o=i.chromaKey;(typeof o.color!="string"||o.color.trim()==="")&&t.push({code:(0,types_1.asDiagnosticCode)("INVALID_EFFECT_CHROMAKEY"),message:`Source[${r}] effects.chromaKey.color is required and must be a non-empty color string (e.g. "#00ff00").`,severity:"error"});for(const n of["similarity","blend"]){const f=o[n];f!==void 0&&(!s(f)||f<0||f>1)&&t.push({code:(0,types_1.asDiagnosticCode)("INVALID_EFFECT_CHROMAKEY"),message:`Source[${r}] effects.chromaKey.${n} must be a finite number in [0, 1] if set (received: ${String(f)}).`,severity:"error"})}o.despill!==void 0&&typeof o.despill!="boolean"&&t.push({code:(0,types_1.asDiagnosticCode)("INVALID_EFFECT_CHROMAKEY"),message:`Source[${r}] effects.chromaKey.despill must be a boolean if set (received: ${String(o.despill)}).`,severity:"error"})}if(i.grade!==void 0)if(i.grade==null||typeof i.grade!="object"||Array.isArray(i.grade))t.push({code:(0,types_1.asDiagnosticCode)("INVALID_EFFECT_GRADE"),message:`Source[${r}] effects.grade must be an object if set (received: ${Array.isArray(i.grade)?"array":typeof i.grade}).`,severity:"error"});else{const o=i.grade,n={brightness:[-1,1],contrast:[0,2],saturation:[0,3],gamma:[.1,10]};for(const[f,[u,c]]of Object.entries(n)){const a=o[f];a!==void 0&&(typeof a!="number"||!Number.isFinite(a)||a<u||a>c)&&t.push({code:(0,types_1.asDiagnosticCode)("INVALID_EFFECT_GRADE"),message:`Source[${r}] effects.grade.${f} must be a finite number in [${u}, ${c}] if set (received: ${String(a)}).`,severity:"error"})}}}m(validateEffects,"validateEffects");function validateFrac(e,r,t,i,s){return!Number.isFinite(e)||e<0||e>=.5?(i.push({code:(0,types_1.asDiagnosticCode)(`${s}_INVALID_${r.toUpperCase().replace(/\./g,"_")}`),message:`Source[${t}] placement.${r} must be a finite number in [0, 0.49] if set (received: ${e}).`,severity:"error"}),!1):!0}m(validateFrac,"validateFrac");function validateBoxFrac(e,r,t,i,s){if(e!=null){if(typeof e=="number"){validateFrac(e,r,t,i,s);return}e.x!==void 0&&validateFrac(e.x,`${r}.x`,t,i,s),e.y!==void 0&&validateFrac(e.y,`${r}.y`,t,i,s),e.top!==void 0&&validateFrac(e.top,`${r}.top`,t,i,s),e.right!==void 0&&validateFrac(e.right,`${r}.right`,t,i,s),e.bottom!==void 0&&validateFrac(e.bottom,`${r}.bottom`,t,i,s),e.left!==void 0&&validateFrac(e.left,`${r}.left`,t,i,s)}}m(validateBoxFrac,"validateBoxFrac");function validateFocus(e,r,t,i,s){e!==void 0&&(typeof e!="number"||!Number.isFinite(e)||e<0||e>1)&&i.push({code:(0,types_1.asDiagnosticCode)(`${s}_INVALID_${r.toUpperCase()}`),message:`Source[${t}] placement.${r} must be a finite number in [0, 1] if set (received: ${String(e)}).`,severity:"error"})}m(validateFocus,"validateFocus");function validateSourceRect(e,r,t,i,s){if(e===void 0)return;if(!s){t.push({code:(0,types_1.asDiagnosticCode)(`${i}_SOURCERECT_UNSUPPORTED`),message:`Source[${r}] placement.sourceRect is only supported on media sources.`,severity:"error"});return}const o=m(u=>{t.push({code:(0,types_1.asDiagnosticCode)(`${i}_INVALID_SOURCERECT`),message:`Source[${r}] placement.sourceRect ${u}`,severity:"error"})},"fail");if(typeof e!="object"||e===null||Array.isArray(e)){o(`must be an { x, y, w, h } object in source px (received: ${String(e)}).`);return}const n=e,f=m(u=>typeof u=="number"&&Number.isFinite(u),"finite");(!f(n.x)||n.x<0||!f(n.y)||n.y<0)&&o("x/y must be finite numbers >= 0 (source px)."),(!f(n.w)||n.w<1||!f(n.h)||n.h<1)&&o("w/h must be finite numbers >= 1 (source px).")}m(validateSourceRect,"validateSourceRect");function validatePlacement(e,r,t,i,s){if(!e)return;validateSourceRect(e.sourceRect,r,t,i,s?.allowSourceRect===!0);const o=e.fit;o!==void 0&&o!=="contain"&&o!=="cover"&&t.push({code:(0,types_1.asDiagnosticCode)(`${i}_INVALID_FIT`),message:`Source[${r}] placement.fit must be "contain" or "cover" if set (received: ${o}).`,severity:"error"}),validateBoxFrac(e.inset,"inset",r,t,i),o==="cover"?(e.padding!=null&&t.push({code:(0,types_1.asDiagnosticCode)(`${i}_COVER_PADDING`),message:`Source[${r}] placement.fit="cover" forbids padding.`,severity:"error"}),validateFocus(e.focusX,"focusX",r,t,i),validateFocus(e.focusY,"focusY",r,t,i)):(validateBoxFrac(e.padding,"padding",r,t,i),(e.focusX!==void 0||e.focusY!==void 0)&&t.push({code:(0,types_1.asDiagnosticCode)(`${i}_FOCUS_REQUIRES_COVER`),message:`Source[${r}] placement.focusX/focusY require placement.fit="cover" (contain never crops).`,severity:"error"}))}m(validatePlacement,"validatePlacement");function validateMediaSource(e,r,t,i){var s,o,n,f,u;const c=e.assetId;typeof c!="string"||c.trim()===""?t.push({code:(0,types_1.asDiagnosticCode)("MEDIA_ASSETID_EMPTY"),message:`Source[${r}] (media) must have a non-empty assetId.`,severity:"error"}):i[c]==null&&t.push({code:(0,types_1.asDiagnosticCode)("MEDIA_ASSETID_UNKNOWN"),message:`Source[${r}] (media) references unknown assetId "${c}".`,severity:"error"}),["video","image","audio"].includes(e.mediaType)||t.push({code:(0,types_1.asDiagnosticCode)("INVALID_MEDIA_TYPE"),message:`Source[${r}] has invalid mediaType "${e.mediaType}".`,severity:"error"}),validateMaskAgainstManifest(e.mask,r,t,i),validateEffects(e.effects,r,t),((s=e.effects)===null||s===void 0?void 0:s.chromaKey)!==void 0&&(e.mediaType==="image"||e.mediaType==="audio")&&t.push({code:(0,types_1.asDiagnosticCode)("EFFECT_CHROMAKEY_MEDIA_TYPE"),message:`Source[${r}] effects.chromaKey is only valid on video-like sources; this media source has mediaType "${e.mediaType}".`,severity:"error"});const a=(o=e.audio)===null||o===void 0?void 0:o.volume;a!==void 0&&(!Number.isFinite(a)||a<0)?t.push({code:(0,types_1.asDiagnosticCode)("INVALID_VOLUME"),message:`Source[${r}] audio.volume must be a finite gain >= 0 if set (1 = unchanged, 2 = double; received: ${a}).`,severity:"error"}):a!==void 0&&a>LOUD_GAIN_WARN&&t.push({code:(0,types_1.asDiagnosticCode)("LOUD_VOLUME"),message:`Source[${r}] audio.volume ${a} amplifies well past unity and will almost certainly clip \u2014 volume is a GAIN factor (1 = unchanged), not a percentage.`,severity:"warning"});const d=(n=e.playback)===null||n===void 0?void 0:n.playSpeed;d!==void 0&&(!Number.isFinite(d)||d<=0)&&t.push({code:(0,types_1.asDiagnosticCode)("INVALID_PLAY_SPEED"),message:`Source[${r}] playback.playSpeed must be > 0 if set (received: ${d}).`,severity:"error"});const l=(f=e.visual)===null||f===void 0?void 0:f.opacity;l!==void 0&&(!Number.isFinite(l)||l<0||l>1)&&t.push({code:(0,types_1.asDiagnosticCode)("INVALID_OPACITY"),message:`Source[${r}] visual.opacity must be between 0.0 and 1.0 if set (received: ${l}).`,severity:"error"}),validatePlacement(e.placement,r,t,"MEDIA_PLACEMENT",{allowSourceRect:!0}),e.mediaType==="image"&&!((u=e.audio)===null||u===void 0)&&u.enabled&&t.push({code:(0,types_1.asDiagnosticCode)("IMAGE_HAS_AUDIO"),message:`Source[${r}] is an image but audioEnabled=true; audio will be ignored.`,severity:"warning"})}m(validateMediaSource,"validateMediaSource");function validateMosaicSource(e,r,t,i){var s,o,n;validateMaskAgainstManifest(e.mask,r,t,i),validateEffects(e.effects,r,t),(!e.ref||e.ref.trim()==="")&&t.push({code:(0,types_1.asDiagnosticCode)("MOSAIC_REF_EMPTY"),message:`Source[${r}] (mosaic) must have a non-empty mosaic reference.`,severity:"error"});const f=(s=e.audio)===null||s===void 0?void 0:s.volume;f!==void 0&&(!Number.isFinite(f)||f<0)?t.push({code:(0,types_1.asDiagnosticCode)("INVALID_MOSAIC_VOLUME"),message:`Source[${r}] audio.volume must be a finite gain >= 0 if set (1 = unchanged, 2 = double; received: ${f}).`,severity:"error"}):f!==void 0&&f>LOUD_GAIN_WARN&&t.push({code:(0,types_1.asDiagnosticCode)("LOUD_VOLUME"),message:`Source[${r}] audio.volume ${f} amplifies well past unity and will almost certainly clip \u2014 volume is a GAIN factor (1 = unchanged), not a percentage.`,severity:"warning"});const u=(o=e.playback)===null||o===void 0?void 0:o.playSpeed;u!==void 0&&(!Number.isFinite(u)||u<=0)&&t.push({code:(0,types_1.asDiagnosticCode)("INVALID_MOSAIC_PLAY_SPEED"),message:`Source[${r}] playback.playSpeed must be > 0 if set (received: ${u}).`,severity:"error"});const c=(n=e.visual)===null||n===void 0?void 0:n.opacity;c!==void 0&&(!Number.isFinite(c)||c<0||c>1)&&t.push({code:(0,types_1.asDiagnosticCode)("INVALID_MOSAIC_OPACITY"),message:`Source[${r}] visual.opacity must be between 0.0 and 1.0 if set (received: ${c}).`,severity:"error"}),validatePlacement(e.placement,r,t,"MOSAIC_PLACEMENT")}m(validateMosaicSource,"validateMosaicSource");function validateTextSource(e,r,t,i){var s,o;if(validateMaskAgainstManifest(e.mask,r,t,i),validateEffects(e.effects,r,t),!Array.isArray(e.layers)||e.layers.length===0){t.push({code:(0,types_1.asDiagnosticCode)("TEXT_LAYERS_EMPTY"),message:`Source[${r}] (text) must have non-empty layers[].`,severity:"error"});return}if(e.renderMode!=null){const a=e.renderMode.kind;if(a!=="image"&&a!=="video")t.push({code:(0,types_1.asDiagnosticCode)("TEXT_RENDER_MODE_INVALID"),message:`Source[${r}] (text) renderMode.kind must be "image" or "video" (received: ${String(a)}).`,severity:"error"});else if(a==="video"){const d=e.renderMode.durationMs;d!==void 0&&(!Number.isFinite(d)||d<=0)&&t.push({code:(0,types_1.asDiagnosticCode)("TEXT_RENDER_MODE_DURATION_INVALID"),message:`Source[${r}] (text) renderMode.durationMs must be a finite number > 0 if set (received: ${d}).`,severity:"error"})}}if(e.rasterizer!=null){const a=e.rasterizer;a!=="drawtext"&&a!=="svg"&&t.push({code:(0,types_1.asDiagnosticCode)("TEXT_RASTERIZER_INVALID"),message:`Source[${r}] (text) rasterizer must be "drawtext" or "svg" (received: ${String(a)}).`,severity:"error"})}const n=m((a,d)=>{if(a==null)return;const l=a.fontWeight;l!==void 0&&(l==="normal"||l==="bold"||typeof l=="number"&&Number.isFinite(l)&&l>=1&&l<=1e3||t.push({code:(0,types_1.asDiagnosticCode)("TEXT_FONT_WEIGHT_INVALID"),message:`Source[${r}] (text) ${d} fontWeight must be a number 1\u20131000 or "normal"/"bold" (received: ${String(l)}).`,severity:"error"}));const p=a.fontStyle;p!==void 0&&p!=="normal"&&p!=="italic"&&t.push({code:(0,types_1.asDiagnosticCode)("TEXT_FONT_STYLE_INVALID"),message:`Source[${r}] (text) ${d} fontStyle must be "normal" or "italic" (received: ${String(p)}).`,severity:"error"})},"validateTextStyle");n(e.style,"style");let f=!1;e.layers.forEach((a,d)=>{n(a.style,`layer[${d}].style`);const l=a.content;if(l==null||typeof l!="object"){t.push({code:(0,types_1.asDiagnosticCode)("TEXT_LAYER_CONTENT_MISSING"),message:`Source[${r}] (text) layer[${d}] must have content.`,severity:"error"});return}const p=l.kind;if(p!=="literal"&&p!=="expr"){t.push({code:(0,types_1.asDiagnosticCode)("TEXT_LAYER_CONTENT_KIND_INVALID"),message:`Source[${r}] (text) layer[${d}] content.kind must be "literal" or "expr" (received: ${String(p)}).`,severity:"error"});return}if(p==="literal"){const v=l.text;typeof v!="string"&&t.push({code:(0,types_1.asDiagnosticCode)("TEXT_LAYER_LITERAL_TEXT_INVALID"),message:`Source[${r}] (text) layer[${d}] literal text must be a string (received: ${typeof v}).`,severity:"error"})}if(p==="expr"){const v=l.expr,y=l.eval;(typeof v!="string"||v.trim()==="")&&t.push({code:(0,types_1.asDiagnosticCode)("TEXT_LAYER_EXPR_INVALID"),message:`Source[${r}] (text) layer[${d}] expr must be a non-empty string.`,severity:"error"}),y!==void 0&&y!=="once"&&y!=="frame"&&t.push({code:(0,types_1.asDiagnosticCode)("TEXT_LAYER_EVAL_INVALID"),message:`Source[${r}] (text) layer[${d}] content.eval must be "once" or "frame" if set (received: ${String(y)}).`,severity:"error"}),(y??"frame")==="frame"&&(f=!0)}}),f&&((s=e.renderMode)===null||s===void 0?void 0:s.kind)==="image"&&t.push({code:(0,types_1.asDiagnosticCode)("TEXT_EXPR_FRAME_WITH_IMAGE_RENDER_MODE"),message:`Source[${r}] (text) has expr content with eval="frame" but renderMode.kind="image". The expression will not animate.`,severity:"warning"});const u=e.style;if(!u)return;u.fontSize!==void 0&&(!Number.isFinite(u.fontSize)||u.fontSize<=0)&&t.push({code:(0,types_1.asDiagnosticCode)("INVALID_FONT_SIZE"),message:`Source[${r}] style.fontSize must be > 0 if set (received: ${u.fontSize}).`,severity:"error"});const c=(o=e.visual)===null||o===void 0?void 0:o.opacity;c!==void 0&&(!Number.isFinite(c)||c<0||c>1)&&t.push({code:(0,types_1.asDiagnosticCode)("INVALID_TEXT_OPACITY"),message:`Source[${r}] visual.opacity must be between 0.0 and 1.0 if set (received: ${c}).`,severity:"error"}),validatePlacement(e.placement,r,t,"TEXT_PLACEMENT")}m(validateTextSource,"validateTextSource");
|
|
1
|
+
"use strict";var _=Object.defineProperty;var m=(e,r)=>_(e,"name",{value:r,configurable:!0});Object.defineProperty(exports,"__esModule",{value:!0}),exports.validateMosaicSources=validateMosaicSources;const types_1=require("@m0saic/types"),validateLavfiSource_1=require("./validateLavfiSource"),LOUD_GAIN_WARN=4;function validateMosaicSources(e,r={},i={}){const t=[];return e.forEach((s,o)=>{s.type==="media"?validateMediaSource(s,o,t,r):s.type==="mosaic"?validateMosaicSource(s,o,t,r):s.type==="text"?validateTextSource(s,o,t,r):s.type==="lavfi"?((0,validateLavfiSource_1.validateLavfiSource)(s,o,t),validateMaskAgainstManifest(s.mask,o,t,r),validateEffects(s.effects,o,t)):(0,types_1.isMosaicDataSource)(s)?validateDataSource(s,o,t):s.type==="ref"||(s.type==="template_invocation"?i.allowTemplateInvocation?validateTemplateInvocationSource(s,o,t):t.push({code:(0,types_1.asDiagnosticCode)("UNRESOLVED_TEMPLATE_INVOCATION"),message:`Source[${o}] is a template_invocation but the document was passed to the engine-strict source validator. Run resolveMosaicx first or use validateMosaicXDocument for source-form (.mosaicx) docs.`,severity:"error"}):t.push({code:(0,types_1.asDiagnosticCode)("UNKNOWN_SOURCE_TYPE"),message:`Source[${o}] has unknown type "${s.type}".`,severity:"error"}))}),validateDataSourcePartitioning(e,t),t}m(validateMosaicSources,"validateMosaicSources");function validateTemplateInvocationSource(e,r,i){const t=e.templateId;(typeof t!="string"||t.length===0||!(0,types_1.isTemplateId)(t))&&i.push({code:(0,types_1.asDiagnosticCode)("MOSAICX_INVOCATION_MISSING_TEMPLATE_ID"),message:`Source[${r}] (template_invocation) is missing templateId or it isn't a valid TemplateId; received: ${JSON.stringify(t)}.`,severity:"error"}),e.props===void 0&&i.push({code:(0,types_1.asDiagnosticCode)("MOSAICX_INVOCATION_MISSING_PROPS"),message:`Source[${r}] (template_invocation) is missing required field "props" (use empty {} for templates with no required props).`,severity:"error"})}m(validateTemplateInvocationSource,"validateTemplateInvocationSource");function validateDataSource(e,r,i){const t=e.variables;(t==null||typeof t!="object"||Array.isArray(t))&&i.push({code:(0,types_1.asDiagnosticCode)("DATA_SOURCE_VARIABLES_MALFORMED"),message:`Source[${r}] (data) must have a non-null object "variables" (received: ${t===null?"null":Array.isArray(t)?"array":typeof t}).`,severity:"error"}),e.alias!==void 0&&!(0,types_1.isAliasId)(e.alias)&&i.push({code:(0,types_1.asDiagnosticCode)("DATA_SOURCE_ALIAS_INVALID"),message:`Source[${r}] (data) alias must match STRICT_IDENTIFIER_PATTERN (letter/_/alphanumeric, max 64 chars); received: ${JSON.stringify(e.alias)}.`,severity:"error"})}m(validateDataSource,"validateDataSource");function validateDataSourcePartitioning(e,r){const i=[];if(e.forEach((t,s)=>{(0,types_1.isMosaicDataSource)(t)&&i.push(s)}),i.length>1){const t=new Map;for(const s of i){const o=e[s].alias;if(o===void 0)continue;const n=o,f=t.get(n);f!==void 0?r.push({code:(0,types_1.asDiagnosticCode)("MOSAIC_ALIAS_COLLISION"),message:`sources[${s}] (data) declares alias ${JSON.stringify(n)} already used by sources[${f}]. Aliases must be unique within a step.`,severity:"error"}):t.set(n,s)}}}m(validateDataSourcePartitioning,"validateDataSourcePartitioning");function validateMaskAgainstManifest(e,r,i,t){if(e==null)return;if(e.kind==="inline-mask"){const n=m(u=>{i.push({code:(0,types_1.asDiagnosticCode)("MASK_INLINE_INVALID"),message:`Source[${r}] inline-mask ${u}`,severity:"error"})},"bad"),f=m((u,c)=>{if(u===void 0)return!0;if(!Array.isArray(u)||u.length===0)return n(`${c} must be a non-empty array of { d, width }.`),!1;for(const a of u){const d=a;if(d==null||typeof d.d!="string"||d.d.trim()===""||typeof d.width!="number"||!Number.isFinite(d.width)||d.width<=0)return n(`${c} entries need a non-empty d and a positive width.`),!1}return!0},"validStrokes");if(f(e.strokes,"strokes"),e.parts!==void 0)if(!Array.isArray(e.parts)||e.parts.length===0)n("parts must be a non-empty array.");else for(const u of e.parts){const c=u?.translate;if(!c||typeof c.x!="number"||!Number.isFinite(c.x)||typeof c.y!="number"||!Number.isFinite(c.y)){n("parts entries need a finite { translate: { x, y } }.");break}if(!f(u.strokes,"parts[].strokes"))break;const a=u?.clip;if(a!==void 0&&(typeof a?.x!="number"||!Number.isFinite(a.x)||typeof a.y!="number"||!Number.isFinite(a.y)||typeof a.width!="number"||!Number.isFinite(a.width)||a.width<=0||typeof a.height!="number"||!Number.isFinite(a.height)||a.height<=0)){n("parts[].clip needs finite { x, y } and positive { width, height }.");break}}e.featherPx!==void 0&&(typeof e.featherPx!="number"||!Number.isFinite(e.featherPx)||e.featherPx<0)&&n("featherPx must be a finite number >= 0 (design px).");return}if(e.kind!=="alpha-image")return;const s=e.assetId;if(typeof s!="string"||s.length===0){i.push({code:(0,types_1.asDiagnosticCode)("MASK_ASSETID_EMPTY"),message:`Source[${r}] alpha-image mask has empty assetId.`,severity:"error"});return}const o=t[s];if(o==null){i.push({code:(0,types_1.asDiagnosticCode)("MASK_ASSETID_UNKNOWN"),message:`Source[${r}] alpha-image mask references unknown assetId "${s}".`,severity:"error"});return}o.kind!=="file"&&i.push({code:(0,types_1.asDiagnosticCode)("MASK_ASSET_KIND_INVALID"),message:`Source[${r}] alpha-image mask must reference a file asset (assetId="${s}" is kind="${o.kind}").`,severity:"error"})}m(validateMaskAgainstManifest,"validateMaskAgainstManifest");function validateEffects(e,r,i){if(e==null||typeof e!="object")return;const t=e,s=m(o=>typeof o=="number"&&Number.isFinite(o),"isFiniteNumber");if(t.rotate!==void 0&&(typeof t.rotate!="number"||!Number.isFinite(t.rotate))&&i.push({code:(0,types_1.asDiagnosticCode)("INVALID_EFFECT_ROTATE"),message:`Source[${r}] effects.rotate must be a finite number (degrees) if set (received: ${String(t.rotate)}).`,severity:"error"}),t.blur!==void 0)if(typeof t.blur=="number")(!Number.isFinite(t.blur)||t.blur<0)&&i.push({code:(0,types_1.asDiagnosticCode)("INVALID_EFFECT_BLUR"),message:`Source[${r}] effects.blur must be a finite number >= 0 (gaussian sigma in px) if set (received: ${String(t.blur)}).`,severity:"error"});else if(t.blur==null||typeof t.blur!="object"||Array.isArray(t.blur))i.push({code:(0,types_1.asDiagnosticCode)("INVALID_EFFECT_BLUR"),message:`Source[${r}] effects.blur must be a number or an object { sigma, backdrop? } if set.`,severity:"error"});else{const o=t.blur;(!s(o.sigma)||o.sigma<0)&&i.push({code:(0,types_1.asDiagnosticCode)("INVALID_EFFECT_BLUR"),message:`Source[${r}] effects.blur.sigma is required in object form and must be a finite number >= 0 (received: ${String(o.sigma)}).`,severity:"error"}),o.backdrop!==void 0&&typeof o.backdrop!="boolean"&&i.push({code:(0,types_1.asDiagnosticCode)("INVALID_EFFECT_BLUR"),message:`Source[${r}] effects.blur.backdrop must be a boolean if set (received: ${String(o.backdrop)}).`,severity:"error"})}for(const o of["fadeInMs","fadeOutMs"]){const n=t[o];n!==void 0&&(typeof n!="number"||!Number.isFinite(n)||n<0)&&i.push({code:(0,types_1.asDiagnosticCode)("INVALID_EFFECT_FADE"),message:`Source[${r}] effects.${o} must be a finite number >= 0 (milliseconds) if set (received: ${String(n)}).`,severity:"error"})}if(t.noise!==void 0)if(t.noise==null||typeof t.noise!="object"||Array.isArray(t.noise))i.push({code:(0,types_1.asDiagnosticCode)("INVALID_EFFECT_NOISE"),message:`Source[${r}] effects.noise must be an object { amount, seed } if set.`,severity:"error"});else{const o=t.noise;(!s(o.amount)||o.amount<0||o.amount>100)&&i.push({code:(0,types_1.asDiagnosticCode)("INVALID_EFFECT_NOISE"),message:`Source[${r}] effects.noise.amount must be a finite number in [0, 100] (received: ${String(o.amount)}).`,severity:"error"}),s(o.seed)||i.push({code:(0,types_1.asDiagnosticCode)("EFFECT_NOISE_SEED_REQUIRED"),message:`Source[${r}] effects.noise.seed is required and must be a finite number \u2014 determinism demands an explicit seed (same seed = same grain).`,severity:"error"})}if(t.pixelize!==void 0&&(!s(t.pixelize)||t.pixelize<0)&&i.push({code:(0,types_1.asDiagnosticCode)("INVALID_EFFECT_PIXELIZE"),message:`Source[${r}] effects.pixelize must be a finite number >= 0 (block px) if set (received: ${String(t.pixelize)}).`,severity:"error"}),t.chromaKey!==void 0)if(t.chromaKey==null||typeof t.chromaKey!="object"||Array.isArray(t.chromaKey))i.push({code:(0,types_1.asDiagnosticCode)("INVALID_EFFECT_CHROMAKEY"),message:`Source[${r}] effects.chromaKey must be an object { color, similarity?, blend?, despill? } if set.`,severity:"error"});else{const o=t.chromaKey;(typeof o.color!="string"||o.color.trim()==="")&&i.push({code:(0,types_1.asDiagnosticCode)("INVALID_EFFECT_CHROMAKEY"),message:`Source[${r}] effects.chromaKey.color is required and must be a non-empty color string (e.g. "#00ff00").`,severity:"error"});for(const n of["similarity","blend"]){const f=o[n];f!==void 0&&(!s(f)||f<0||f>1)&&i.push({code:(0,types_1.asDiagnosticCode)("INVALID_EFFECT_CHROMAKEY"),message:`Source[${r}] effects.chromaKey.${n} must be a finite number in [0, 1] if set (received: ${String(f)}).`,severity:"error"})}o.despill!==void 0&&typeof o.despill!="boolean"&&i.push({code:(0,types_1.asDiagnosticCode)("INVALID_EFFECT_CHROMAKEY"),message:`Source[${r}] effects.chromaKey.despill must be a boolean if set (received: ${String(o.despill)}).`,severity:"error"})}if(t.grade!==void 0)if(t.grade==null||typeof t.grade!="object"||Array.isArray(t.grade))i.push({code:(0,types_1.asDiagnosticCode)("INVALID_EFFECT_GRADE"),message:`Source[${r}] effects.grade must be an object if set (received: ${Array.isArray(t.grade)?"array":typeof t.grade}).`,severity:"error"});else{const o=t.grade,n={brightness:[-1,1],contrast:[0,2],saturation:[0,3],gamma:[.1,10]};for(const[f,[u,c]]of Object.entries(n)){const a=o[f];a!==void 0&&(typeof a!="number"||!Number.isFinite(a)||a<u||a>c)&&i.push({code:(0,types_1.asDiagnosticCode)("INVALID_EFFECT_GRADE"),message:`Source[${r}] effects.grade.${f} must be a finite number in [${u}, ${c}] if set (received: ${String(a)}).`,severity:"error"})}}}m(validateEffects,"validateEffects");function validateFrac(e,r,i,t,s){return!Number.isFinite(e)||e<0||e>=.5?(t.push({code:(0,types_1.asDiagnosticCode)(`${s}_INVALID_${r.toUpperCase().replace(/\./g,"_")}`),message:`Source[${i}] placement.${r} must be a finite number in [0, 0.49] if set (received: ${e}).`,severity:"error"}),!1):!0}m(validateFrac,"validateFrac");function validateBoxFrac(e,r,i,t,s){if(e!=null){if(typeof e=="number"){validateFrac(e,r,i,t,s);return}e.x!==void 0&&validateFrac(e.x,`${r}.x`,i,t,s),e.y!==void 0&&validateFrac(e.y,`${r}.y`,i,t,s),e.top!==void 0&&validateFrac(e.top,`${r}.top`,i,t,s),e.right!==void 0&&validateFrac(e.right,`${r}.right`,i,t,s),e.bottom!==void 0&&validateFrac(e.bottom,`${r}.bottom`,i,t,s),e.left!==void 0&&validateFrac(e.left,`${r}.left`,i,t,s)}}m(validateBoxFrac,"validateBoxFrac");function validateFocus(e,r,i,t,s){e!==void 0&&(typeof e!="number"||!Number.isFinite(e)||e<0||e>1)&&t.push({code:(0,types_1.asDiagnosticCode)(`${s}_INVALID_${r.toUpperCase()}`),message:`Source[${i}] placement.${r} must be a finite number in [0, 1] if set (received: ${String(e)}).`,severity:"error"})}m(validateFocus,"validateFocus");function validateSourceRect(e,r,i,t,s){if(e===void 0)return;if(!s){i.push({code:(0,types_1.asDiagnosticCode)(`${t}_SOURCERECT_UNSUPPORTED`),message:`Source[${r}] placement.sourceRect is only supported on media sources.`,severity:"error"});return}const o=m(u=>{i.push({code:(0,types_1.asDiagnosticCode)(`${t}_INVALID_SOURCERECT`),message:`Source[${r}] placement.sourceRect ${u}`,severity:"error"})},"fail");if(typeof e!="object"||e===null||Array.isArray(e)){o(`must be an { x, y, w, h } object in source px (received: ${String(e)}).`);return}const n=e,f=m(u=>typeof u=="number"&&Number.isFinite(u),"finite");(!f(n.x)||n.x<0||!f(n.y)||n.y<0)&&o("x/y must be finite numbers >= 0 (source px)."),(!f(n.w)||n.w<1||!f(n.h)||n.h<1)&&o("w/h must be finite numbers >= 1 (source px).")}m(validateSourceRect,"validateSourceRect");function validatePlacement(e,r,i,t,s){if(!e)return;validateSourceRect(e.sourceRect,r,i,t,s?.allowSourceRect===!0);const o=e.fit;o!==void 0&&o!=="contain"&&o!=="cover"&&i.push({code:(0,types_1.asDiagnosticCode)(`${t}_INVALID_FIT`),message:`Source[${r}] placement.fit must be "contain" or "cover" if set (received: ${o}).`,severity:"error"}),validateBoxFrac(e.inset,"inset",r,i,t),o==="cover"?(e.padding!=null&&i.push({code:(0,types_1.asDiagnosticCode)(`${t}_COVER_PADDING`),message:`Source[${r}] placement.fit="cover" forbids padding.`,severity:"error"}),validateFocus(e.focusX,"focusX",r,i,t),validateFocus(e.focusY,"focusY",r,i,t)):(validateBoxFrac(e.padding,"padding",r,i,t),(e.focusX!==void 0||e.focusY!==void 0)&&i.push({code:(0,types_1.asDiagnosticCode)(`${t}_FOCUS_REQUIRES_COVER`),message:`Source[${r}] placement.focusX/focusY require placement.fit="cover" (contain never crops).`,severity:"error"}))}m(validatePlacement,"validatePlacement");function validateMediaSource(e,r,i,t){var s,o,n,f,u;const c=e.assetId;typeof c!="string"||c.trim()===""?i.push({code:(0,types_1.asDiagnosticCode)("MEDIA_ASSETID_EMPTY"),message:`Source[${r}] (media) must have a non-empty assetId.`,severity:"error"}):t[c]==null&&i.push({code:(0,types_1.asDiagnosticCode)("MEDIA_ASSETID_UNKNOWN"),message:`Source[${r}] (media) references unknown assetId "${c}".`,severity:"error"}),["video","image","audio"].includes(e.mediaType)||i.push({code:(0,types_1.asDiagnosticCode)("INVALID_MEDIA_TYPE"),message:`Source[${r}] has invalid mediaType "${e.mediaType}".`,severity:"error"}),validateMaskAgainstManifest(e.mask,r,i,t),validateEffects(e.effects,r,i),((s=e.effects)===null||s===void 0?void 0:s.chromaKey)!==void 0&&(e.mediaType==="image"||e.mediaType==="audio")&&i.push({code:(0,types_1.asDiagnosticCode)("EFFECT_CHROMAKEY_MEDIA_TYPE"),message:`Source[${r}] effects.chromaKey is only valid on video-like sources; this media source has mediaType "${e.mediaType}".`,severity:"error"});const a=(o=e.audio)===null||o===void 0?void 0:o.volume;a!==void 0&&(!Number.isFinite(a)||a<0)?i.push({code:(0,types_1.asDiagnosticCode)("INVALID_VOLUME"),message:`Source[${r}] audio.volume must be a finite gain >= 0 if set (1 = unchanged, 2 = double; received: ${a}).`,severity:"error"}):a!==void 0&&a>LOUD_GAIN_WARN&&i.push({code:(0,types_1.asDiagnosticCode)("LOUD_VOLUME"),message:`Source[${r}] audio.volume ${a} amplifies well past unity and will almost certainly clip \u2014 volume is a GAIN factor (1 = unchanged), not a percentage.`,severity:"warning"});const d=(n=e.playback)===null||n===void 0?void 0:n.playSpeed;d!==void 0&&(!Number.isFinite(d)||d<=0)&&i.push({code:(0,types_1.asDiagnosticCode)("INVALID_PLAY_SPEED"),message:`Source[${r}] playback.playSpeed must be > 0 if set (received: ${d}).`,severity:"error"});const l=(f=e.visual)===null||f===void 0?void 0:f.opacity;l!==void 0&&(!Number.isFinite(l)||l<0||l>1)&&i.push({code:(0,types_1.asDiagnosticCode)("INVALID_OPACITY"),message:`Source[${r}] visual.opacity must be between 0.0 and 1.0 if set (received: ${l}).`,severity:"error"}),validatePlacement(e.placement,r,i,"MEDIA_PLACEMENT",{allowSourceRect:!0}),e.mediaType==="image"&&!((u=e.audio)===null||u===void 0)&&u.enabled&&i.push({code:(0,types_1.asDiagnosticCode)("IMAGE_HAS_AUDIO"),message:`Source[${r}] is an image but audioEnabled=true; audio will be ignored.`,severity:"warning"})}m(validateMediaSource,"validateMediaSource");function validateMosaicSource(e,r,i,t){var s,o,n;validateMaskAgainstManifest(e.mask,r,i,t),validateEffects(e.effects,r,i),(!e.ref||e.ref.trim()==="")&&i.push({code:(0,types_1.asDiagnosticCode)("MOSAIC_REF_EMPTY"),message:`Source[${r}] (mosaic) must have a non-empty mosaic reference.`,severity:"error"});const f=(s=e.audio)===null||s===void 0?void 0:s.volume;f!==void 0&&(!Number.isFinite(f)||f<0)?i.push({code:(0,types_1.asDiagnosticCode)("INVALID_MOSAIC_VOLUME"),message:`Source[${r}] audio.volume must be a finite gain >= 0 if set (1 = unchanged, 2 = double; received: ${f}).`,severity:"error"}):f!==void 0&&f>LOUD_GAIN_WARN&&i.push({code:(0,types_1.asDiagnosticCode)("LOUD_VOLUME"),message:`Source[${r}] audio.volume ${f} amplifies well past unity and will almost certainly clip \u2014 volume is a GAIN factor (1 = unchanged), not a percentage.`,severity:"warning"});const u=(o=e.playback)===null||o===void 0?void 0:o.playSpeed;u!==void 0&&(!Number.isFinite(u)||u<=0)&&i.push({code:(0,types_1.asDiagnosticCode)("INVALID_MOSAIC_PLAY_SPEED"),message:`Source[${r}] playback.playSpeed must be > 0 if set (received: ${u}).`,severity:"error"});const c=(n=e.visual)===null||n===void 0?void 0:n.opacity;c!==void 0&&(!Number.isFinite(c)||c<0||c>1)&&i.push({code:(0,types_1.asDiagnosticCode)("INVALID_MOSAIC_OPACITY"),message:`Source[${r}] visual.opacity must be between 0.0 and 1.0 if set (received: ${c}).`,severity:"error"}),validatePlacement(e.placement,r,i,"MOSAIC_PLACEMENT")}m(validateMosaicSource,"validateMosaicSource");function validateTextSource(e,r,i,t){var s,o;if(validateMaskAgainstManifest(e.mask,r,i,t),validateEffects(e.effects,r,i),!Array.isArray(e.layers)){i.push({code:(0,types_1.asDiagnosticCode)("TEXT_LAYERS_EMPTY"),message:`Source[${r}] (text) must have a layers[] array.`,severity:"error"});return}if(e.layers.length===0){i.push({code:(0,types_1.asDiagnosticCode)("TEXT_LAYERS_EMPTY"),message:`Source[${r}] (text) has no layers \u2014 it draws nothing (an empty handle for a bound prop).`,severity:"warning"});return}if(e.renderMode!=null){const a=e.renderMode.kind;if(a!=="image"&&a!=="video")i.push({code:(0,types_1.asDiagnosticCode)("TEXT_RENDER_MODE_INVALID"),message:`Source[${r}] (text) renderMode.kind must be "image" or "video" (received: ${String(a)}).`,severity:"error"});else if(a==="video"){const d=e.renderMode.durationMs;d!==void 0&&(!Number.isFinite(d)||d<=0)&&i.push({code:(0,types_1.asDiagnosticCode)("TEXT_RENDER_MODE_DURATION_INVALID"),message:`Source[${r}] (text) renderMode.durationMs must be a finite number > 0 if set (received: ${d}).`,severity:"error"})}}if(e.rasterizer!=null){const a=e.rasterizer;a!=="drawtext"&&a!=="svg"&&i.push({code:(0,types_1.asDiagnosticCode)("TEXT_RASTERIZER_INVALID"),message:`Source[${r}] (text) rasterizer must be "drawtext" or "svg" (received: ${String(a)}).`,severity:"error"})}const n=m((a,d)=>{if(a==null)return;const l=a.fontWeight;l!==void 0&&(l==="normal"||l==="bold"||typeof l=="number"&&Number.isFinite(l)&&l>=1&&l<=1e3||i.push({code:(0,types_1.asDiagnosticCode)("TEXT_FONT_WEIGHT_INVALID"),message:`Source[${r}] (text) ${d} fontWeight must be a number 1\u20131000 or "normal"/"bold" (received: ${String(l)}).`,severity:"error"}));const p=a.fontStyle;p!==void 0&&p!=="normal"&&p!=="italic"&&i.push({code:(0,types_1.asDiagnosticCode)("TEXT_FONT_STYLE_INVALID"),message:`Source[${r}] (text) ${d} fontStyle must be "normal" or "italic" (received: ${String(p)}).`,severity:"error"})},"validateTextStyle");n(e.style,"style");let f=!1;e.layers.forEach((a,d)=>{n(a.style,`layer[${d}].style`);const l=a.content;if(l==null||typeof l!="object"){i.push({code:(0,types_1.asDiagnosticCode)("TEXT_LAYER_CONTENT_MISSING"),message:`Source[${r}] (text) layer[${d}] must have content.`,severity:"error"});return}const p=l.kind;if(p!=="literal"&&p!=="expr"){i.push({code:(0,types_1.asDiagnosticCode)("TEXT_LAYER_CONTENT_KIND_INVALID"),message:`Source[${r}] (text) layer[${d}] content.kind must be "literal" or "expr" (received: ${String(p)}).`,severity:"error"});return}if(p==="literal"){const v=l.text;typeof v!="string"&&i.push({code:(0,types_1.asDiagnosticCode)("TEXT_LAYER_LITERAL_TEXT_INVALID"),message:`Source[${r}] (text) layer[${d}] literal text must be a string (received: ${typeof v}).`,severity:"error"})}if(p==="expr"){const v=l.expr,y=l.eval;(typeof v!="string"||v.trim()==="")&&i.push({code:(0,types_1.asDiagnosticCode)("TEXT_LAYER_EXPR_INVALID"),message:`Source[${r}] (text) layer[${d}] expr must be a non-empty string.`,severity:"error"}),y!==void 0&&y!=="once"&&y!=="frame"&&i.push({code:(0,types_1.asDiagnosticCode)("TEXT_LAYER_EVAL_INVALID"),message:`Source[${r}] (text) layer[${d}] content.eval must be "once" or "frame" if set (received: ${String(y)}).`,severity:"error"}),(y??"frame")==="frame"&&(f=!0)}}),f&&((s=e.renderMode)===null||s===void 0?void 0:s.kind)==="image"&&i.push({code:(0,types_1.asDiagnosticCode)("TEXT_EXPR_FRAME_WITH_IMAGE_RENDER_MODE"),message:`Source[${r}] (text) has expr content with eval="frame" but renderMode.kind="image". The expression will not animate.`,severity:"warning"});const u=e.style;if(!u)return;u.fontSize!==void 0&&(!Number.isFinite(u.fontSize)||u.fontSize<=0)&&i.push({code:(0,types_1.asDiagnosticCode)("INVALID_FONT_SIZE"),message:`Source[${r}] style.fontSize must be > 0 if set (received: ${u.fontSize}).`,severity:"error"});const c=(o=e.visual)===null||o===void 0?void 0:o.opacity;c!==void 0&&(!Number.isFinite(c)||c<0||c>1)&&i.push({code:(0,types_1.asDiagnosticCode)("INVALID_TEXT_OPACITY"),message:`Source[${r}] visual.opacity must be between 0.0 and 1.0 if set (received: ${c}).`,severity:"error"}),validatePlacement(e.placement,r,i,"TEXT_PLACEMENT")}m(validateTextSource,"validateTextSource");
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var c=Object.defineProperty;var s=(t,e)=>c(t,"name",{value:e,configurable:!0});Object.defineProperty(exports,"__esModule",{value:!0}),exports.MOSAIC_PACKAGE_TIER_LABEL=exports.MOSAIC_PACKAGE_TIER_ORDER=void 0,exports.describeMosaicPackage=describeMosaicPackage,exports.sortMosaicPackages=sortMosaicPackages;const LANGUAGE_REPO="https://github.com/m0saic-dsl/m0",SUBSTRATE_REPO="https://github.com/m0saic-project/m0saic-packages",LANGUAGE=["dsl","dsl-stdlib","dsl-file-formats","dsl-visual-tests"],SUBSTRATE=["types","platform","text","template-utils","dictionary","dsl-react","templates","momo-types","knowledge"],COMMUNITY={"community-templates":"https://github.com/m0saic-project/m0saic-community-templates","community-m":"https://github.com/m0saic-project/community-m"},npmUrl=s(t=>`https://www.npmjs.com/package/${t}`,"npmUrl");function describeMosaicPackage(t){const e=t.startsWith("@m0saic/")?t.slice(8):t;return LANGUAGE.includes(e)?{name:t,tier:"language",published:!0,npmUrl:npmUrl(t),repoUrl:LANGUAGE_REPO}:SUBSTRATE.includes(e)?{name:t,tier:"substrate",published:!0,npmUrl:npmUrl(t),repoUrl:SUBSTRATE_REPO}:e in COMMUNITY?{name:t,tier:"community",published:!0,repoUrl:COMMUNITY[e]}:{name:t,tier:"product",published:!1}}s(describeMosaicPackage,"describeMosaicPackage"),exports.MOSAIC_PACKAGE_TIER_ORDER=["language","substrate","product","community"],exports.MOSAIC_PACKAGE_TIER_LABEL={language:"Language",substrate:"Substrate",product:"Product (bundled, not published)",community:"Community (seeded; updates from GitHub)"};function sortMosaicPackages(t){return[...t].sort((e,r)=>{const o=exports.MOSAIC_PACKAGE_TIER_ORDER.indexOf(describeMosaicPackage(e.name).tier),i=exports.MOSAIC_PACKAGE_TIER_ORDER.indexOf(describeMosaicPackage(r.name).tier);return o-i||e.name.localeCompare(r.name)})}s(sortMosaicPackages,"sortMosaicPackages");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var u=Object.defineProperty;var o=(e,t)=>u(e,"name",{value:t,configurable:!0});var __createBinding=this&&this.__createBinding||(Object.create?(function(e,t,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:o(function(){return t[n]},"get")}),Object.defineProperty(e,r,i)}):(function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]})),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),__importStar=this&&this.__importStar||(function(){var e=o(function(t){return e=Object.getOwnPropertyNames||function(n){var r=[];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(r[r.length]=i);return r},e(t)},"ownKeys");return function(t){if(t&&t.__esModule)return t;var n={};if(t!=null)for(var r=e(t),i=0;i<r.length;i++)r[i]!=="default"&&__createBinding(n,t,r[i]);return __setModuleDefault(n,t),n}})();Object.defineProperty(exports,"__esModule",{value:!0}),exports.getM0saicRoot=getM0saicRoot,exports.getToolchainsRoot=getToolchainsRoot,exports.getFfmpegToolchainsRoot=getFfmpegToolchainsRoot,exports.getGoldenFfmpegSlotDir=getGoldenFfmpegSlotDir,exports.getGoldenFfmpegBinaryPath=getGoldenFfmpegBinaryPath,exports.getGoldenFfprobeBinaryPath=getGoldenFfprobeBinaryPath,exports.getCustomFfmpegRoot=getCustomFfmpegRoot,exports.getMomoRoot=getMomoRoot,exports.getMomoModelsRoot=getMomoModelsRoot,exports.getMomoModelPath=getMomoModelPath,exports.getRenderFeedRoot=getRenderFeedRoot,exports.getRenderFeedMarkerPath=getRenderFeedMarkerPath,exports.getRenderFeedLogPath=getRenderFeedLogPath,exports.getCommunityMRoot=getCommunityMRoot,exports.ensureDir=ensureDir;const os=__importStar(require("os")),path=__importStar(require("path")),fs=__importStar(require("fs")),ENV_OVERRIDE="M0SAIC_ROOT",ROOT_DIRNAME="m0saic";function getM0saicRoot(){const e=process.env[ENV_OVERRIDE];return e&&e.trim()!==""?path.resolve(e.trim()):path.join(os.homedir(),ROOT_DIRNAME)}o(getM0saicRoot,"getM0saicRoot");function getToolchainsRoot(){return path.join(getM0saicRoot(),"toolchains")}o(getToolchainsRoot,"getToolchainsRoot");function getFfmpegToolchainsRoot(){return path.join(getToolchainsRoot(),"ffmpeg")}o(getFfmpegToolchainsRoot,"getFfmpegToolchainsRoot");function getGoldenFfmpegSlotDir(e,t){return path.join(getFfmpegToolchainsRoot(),`${e}-${t}`)}o(getGoldenFfmpegSlotDir,"getGoldenFfmpegSlotDir");function getGoldenFfmpegBinaryPath(e,t){const n=process.platform==="win32"?"ffmpeg.exe":"ffmpeg";return path.join(getGoldenFfmpegSlotDir(e,t),"bin",n)}o(getGoldenFfmpegBinaryPath,"getGoldenFfmpegBinaryPath");function getGoldenFfprobeBinaryPath(e,t){const n=process.platform==="win32"?"ffprobe.exe":"ffprobe";return path.join(getGoldenFfmpegSlotDir(e,t),"bin",n)}o(getGoldenFfprobeBinaryPath,"getGoldenFfprobeBinaryPath");function getCustomFfmpegRoot(){return path.join(getFfmpegToolchainsRoot(),"custom")}o(getCustomFfmpegRoot,"getCustomFfmpegRoot");function getMomoRoot(){return path.join(getM0saicRoot(),"momo")}o(getMomoRoot,"getMomoRoot");function getMomoModelsRoot(){return path.join(getMomoRoot(),"models")}o(getMomoModelsRoot,"getMomoModelsRoot");function getMomoModelPath(e){return path.join(getMomoModelsRoot(),e)}o(getMomoModelPath,"getMomoModelPath");function getRenderFeedRoot(){return path.join(getM0saicRoot(),"render")}o(getRenderFeedRoot,"getRenderFeedRoot");function getRenderFeedMarkerPath(){return path.join(getRenderFeedRoot(),"active.json")}o(getRenderFeedMarkerPath,"getRenderFeedMarkerPath");function getRenderFeedLogPath(){return path.join(getRenderFeedRoot(),"live.jsonl")}o(getRenderFeedLogPath,"getRenderFeedLogPath");function getCommunityMRoot(){return path.join(getM0saicRoot(),"community-m")}o(getCommunityMRoot,"getCommunityMRoot");function ensureDir(e){fs.mkdirSync(e,{recursive:!0})}o(ensureDir,"ensureDir");
|
|
1
|
+
"use strict";var u=Object.defineProperty;var o=(e,t)=>u(e,"name",{value:t,configurable:!0});var __createBinding=this&&this.__createBinding||(Object.create?(function(e,t,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:o(function(){return t[n]},"get")}),Object.defineProperty(e,r,i)}):(function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]})),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),__importStar=this&&this.__importStar||(function(){var e=o(function(t){return e=Object.getOwnPropertyNames||function(n){var r=[];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(r[r.length]=i);return r},e(t)},"ownKeys");return function(t){if(t&&t.__esModule)return t;var n={};if(t!=null)for(var r=e(t),i=0;i<r.length;i++)r[i]!=="default"&&__createBinding(n,t,r[i]);return __setModuleDefault(n,t),n}})();Object.defineProperty(exports,"__esModule",{value:!0}),exports.getM0saicRoot=getM0saicRoot,exports.getToolchainsRoot=getToolchainsRoot,exports.getFfmpegToolchainsRoot=getFfmpegToolchainsRoot,exports.getGoldenFfmpegSlotDir=getGoldenFfmpegSlotDir,exports.getGoldenFfmpegBinaryPath=getGoldenFfmpegBinaryPath,exports.getGoldenFfprobeBinaryPath=getGoldenFfprobeBinaryPath,exports.getCustomFfmpegRoot=getCustomFfmpegRoot,exports.getMomoRoot=getMomoRoot,exports.getMomoModelsRoot=getMomoModelsRoot,exports.getMomoModelPath=getMomoModelPath,exports.getRenderFeedRoot=getRenderFeedRoot,exports.getRenderFeedMarkerPath=getRenderFeedMarkerPath,exports.getRenderFeedLogPath=getRenderFeedLogPath,exports.getCommunityMRoot=getCommunityMRoot,exports.ensureDir=ensureDir;const os=__importStar(require("os")),path=__importStar(require("path")),fs=__importStar(require("fs")),ENV_OVERRIDE="M0SAIC_ROOT",ROOT_DIRNAME="m0saic";function getM0saicRoot(){const e=process.env[ENV_OVERRIDE];return e&&e.trim()!==""?path.resolve(e.trim()):path.join(os.homedir(),ROOT_DIRNAME)}o(getM0saicRoot,"getM0saicRoot");function getToolchainsRoot(){return path.join(getM0saicRoot(),"toolchains")}o(getToolchainsRoot,"getToolchainsRoot");function getFfmpegToolchainsRoot(){return path.join(getToolchainsRoot(),"ffmpeg")}o(getFfmpegToolchainsRoot,"getFfmpegToolchainsRoot");function getGoldenFfmpegSlotDir(e,t="gpl"){return path.join(getFfmpegToolchainsRoot(),`${e}-${t}`)}o(getGoldenFfmpegSlotDir,"getGoldenFfmpegSlotDir");function getGoldenFfmpegBinaryPath(e,t="gpl"){const n=process.platform==="win32"?"ffmpeg.exe":"ffmpeg";return path.join(getGoldenFfmpegSlotDir(e,t),"bin",n)}o(getGoldenFfmpegBinaryPath,"getGoldenFfmpegBinaryPath");function getGoldenFfprobeBinaryPath(e,t="gpl"){const n=process.platform==="win32"?"ffprobe.exe":"ffprobe";return path.join(getGoldenFfmpegSlotDir(e,t),"bin",n)}o(getGoldenFfprobeBinaryPath,"getGoldenFfprobeBinaryPath");function getCustomFfmpegRoot(){return path.join(getFfmpegToolchainsRoot(),"custom")}o(getCustomFfmpegRoot,"getCustomFfmpegRoot");function getMomoRoot(){return path.join(getM0saicRoot(),"momo")}o(getMomoRoot,"getMomoRoot");function getMomoModelsRoot(){return path.join(getMomoRoot(),"models")}o(getMomoModelsRoot,"getMomoModelsRoot");function getMomoModelPath(e){return path.join(getMomoModelsRoot(),e)}o(getMomoModelPath,"getMomoModelPath");function getRenderFeedRoot(){return path.join(getM0saicRoot(),"render")}o(getRenderFeedRoot,"getRenderFeedRoot");function getRenderFeedMarkerPath(){return path.join(getRenderFeedRoot(),"active.json")}o(getRenderFeedMarkerPath,"getRenderFeedMarkerPath");function getRenderFeedLogPath(){return path.join(getRenderFeedRoot(),"live.jsonl")}o(getRenderFeedLogPath,"getRenderFeedLogPath");function getCommunityMRoot(){return path.join(getM0saicRoot(),"community-m")}o(getCommunityMRoot,"getCommunityMRoot");function ensureDir(e){fs.mkdirSync(e,{recursive:!0})}o(ensureDir,"ensureDir");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var m=Object.defineProperty;var u=(e,n)=>m(e,"name",{value:n,configurable:!0});Object.defineProperty(exports,"__esModule",{value:!0}),exports.sanitizeInstallContext=sanitizeInstallContext,exports.checkAndEnqueueLifecycle=checkAndEnqueueLifecycle;const types_1=require("@m0saic/types"),hostFingerprint_1=require("./hostFingerprint"),outbox_1=require("./outbox"),renderRecord_1=require("./renderRecord"),settingsStore_1=require("./settingsStore");function sanitizeInstallContext(e){if(!e)return{};const n={};if((e.surface==="cli"||e.surface==="desktop")&&(n.surface=e.surface),(e.invocation==="npx"||e.invocation==="global")&&(n.invocation=e.invocation),typeof e.source=="string"){const o=e.source.trim().toLowerCase();types_1.MOSAIC_INSTALL_SOURCE_RE.test(o)&&(n.source=o)}return n}u(sanitizeInstallContext,"sanitizeInstallContext");function checkAndEnqueueLifecycle(e){var n;const o=(n=e.nowMs)!==null&&n!==void 0?n:Date.now(),c=(0,settingsStore_1.getEffectiveTelemetryMode)(e.env);if(c.mode==="ghost")return{enqueued:null};const t=(0,settingsStore_1.loadTelemetrySettings)(),s=t.lastSeenVersion===void 0,i=(0,renderRecord_1.versionMajorMinor)(t.lastSeenVersion),r=(0,renderRecord_1.versionMajorMinor)(e.currentVersion),d=!s&&i!==void 0&&r!==void 0&&i!==r;if(t.lastSeenVersion!==e.currentVersion&&(0,settingsStore_1.saveTelemetrySettings)({...t,lastSeenVersion:e.currentVersion}),!s&&!d)return{enqueued:null};if(!(0,types_1.isUpstreamAllowed)(c.mode))return{enqueued:null};if(!(0,types_1.isAnalyticsEmissionEnabled)(t.consent)||!t.consent.channels.lifecycle)return{enqueued:null};const f=(0,hostFingerprint_1.buildHostFingerprint)({mosaicVersion:e.currentVersion}),l={installId:t.consent.installId,timestamp:o,schemaVersion:1,host:f},a=s?{kind:"install_completed",...l,...sanitizeInstallContext(e.install)}:{kind:"update_completed",...l,fromVersion:i??"0.0",toVersion:r??"0.0"};return(0,outbox_1.enqueueOutbox)(a,{channel:"immediate",nowMs:o}),{enqueued:a.kind}}u(checkAndEnqueueLifecycle,"checkAndEnqueueLifecycle");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var A=Object.defineProperty;var
|
|
1
|
+
"use strict";var A=Object.defineProperty;var U=(n,a)=>A(n,"name",{value:a,configurable:!0});Object.defineProperty(exports,"__esModule",{value:!0}),exports.UPSTREAM_FIELD_ANNOTATIONS=exports.UPSTREAM_ROLLUP_CADENCE=exports.UPSTREAM_NEVER_SENT=void 0,exports.buildUpstreamPreview=buildUpstreamPreview;const types_1=require("@m0saic/types"),outbox_1=require("./outbox"),recordStore_1=require("./recordStore"),redactor_1=require("./redactor"),rollup_1=require("./rollup"),sender_1=require("./sender"),settingsStore_1=require("./settingsStore"),usageStore_1=require("./usageStore");exports.UPSTREAM_NEVER_SENT=["file paths or file names","template source, props, or your media (built-in template ids are counted by name; community and third-party templates are counted, never named)","ffmpeg arguments or stderr","error messages or stack traces (only closed error classes + a hash)","your layout strings, canvas sizes or layout shapes \u2014 creating a Layout share link only adds one to a share count","personal identifiers \u2014 the anonymous install id is the only identifier"],exports.UPSTREAM_ROLLUP_CADENCE="One day summary per UTC day, plus a today-so-far update after each render or feature use; each update replaces the previous one for that day upstream, and the day summary replaces them all. Feature-use counts and built-in template opens ride the same rollups.",exports.UPSTREAM_FIELD_ANNOTATIONS={installId:"anonymous per-install UUID \u2014 the only persistent identifier",timestamp:"when this payload was assembled (epoch ms)",schemaVersion:"payload schema version",windowStart:"aggregation window start (epoch ms) \u2014 a UTC midnight",windowEnd:"aggregation window end (epoch ms) \u2014 a UTC midnight for day summaries; the time of the last render for today-so-far updates, which replace each other for the same day","host.os":"coarse OS bucket (macos / windows / linux / other)","host.arch":"CPU architecture string","host.mosaicVersion":"m0saic version, floored to major.minor","host.ffmpegVersion":"ffmpeg version, floored to major.minor","metrics.rendersStarted":"count of renders in the window","metrics.rendersByOutcome":"counts per closed outcome enum","metrics.rendersByKind":"document vs pipeline counts","metrics.ffmpegInvocations":"total ffmpeg subprocess count","metrics.renderDurationMsBuckets":"duration histogram [<1s, 1-5s, 5-30s, 30s-2m, 2-10m, 10-30m, 30m+] \u2014 counts only","metrics.distinctTemplatesUsed":"COUNT of distinct templates \u2014 ids never leave","metrics.planCommandCountBuckets":"per-render command-count histogram [1, 2-3, 4-9, 10-29, 30-99, 100+]","metrics.features":"feature-use counts for the window \u2014 closed key enum, counts only, never timestamps","metrics.templatesUsed":"built-in (first-party) template ids opened, with counts \u2014 community and third-party templates are counted under features, never named",errorClass:"closed error-class enum (error reports)",ffmpegExitCode:"raw ffmpeg exit code (error reports)",stackHash:"12-hex hash of error CODES for de-dup \u2014 never messages or frames",renderableKind:"document vs pipeline (error reports)"};function buildUpstreamPreview(n={}){var a,c,u;const r=(a=n.nowMs)!==null&&a!==void 0?a:Date.now(),e=(0,settingsStore_1.loadTelemetrySettings)(),v=(0,settingsStore_1.getEffectiveTelemetryMode)(n.env),m=(0,sender_1.resolveUpstreamEndpoint)({env:n.env,settings:e}),o=(0,rollup_1.utcDayStartMs)(r),i=(0,recordStore_1.listRenderRecordsInWindow)(0,r+1),p=(0,rollup_1.pendingRollupWindowStartMs)({...((c=e.upstream)===null||c===void 0?void 0:c.lastRollupDayUtc)!==void 0?{lastRollupDayUtc:e.upstream.lastRollupDayUtc}:{},...i.length>0?{earliestRecordMs:Date.parse(i[0].finishedAt)||0}:{}}),d=(0,usageStore_1.listUsageRecordsInWindow)(0,r+1),h=(0,rollup_1.pendingRollupWindowStartMs)({...((u=e.upstream)===null||u===void 0?void 0:u.lastRollupDayUtc)!==void 0?{lastRollupDayUtc:e.upstream.lastRollupDayUtc}:{},...d.length>0?{earliestRecordMs:d[0].atMs}:{}}),s=p===void 0?h:h===void 0?p:Math.min(p,h),l=s===void 0||s>=o?[]:i.filter(t=>{const E=Date.parse(t.finishedAt)||0;return E>=s&&E<o}),w=s===void 0||s>=o?[]:d.filter(t=>t.atMs>=s&&t.atMs<o),y={mosaicVersion:n.currentVersion},R=s===void 0||l.length===0&&w.length===0?null:(0,rollup_1.buildRollupEvent)({records:l,usage:w,windowStartMs:s,windowEndMs:o,consent:e.consent,host:(0,rollup_1.hostFromRecords)(l,y),timestampMs:r}),f=i.filter(t=>(Date.parse(t.finishedAt)||0)>=o),S=d.filter(t=>t.atMs>=o),M=f.length===0&&S.length===0?null:(0,rollup_1.buildRollupEvent)({records:f,usage:S,windowStartMs:o,windowEndMs:r,consent:e.consent,host:(0,rollup_1.hostFromRecords)(f,y),timestampMs:r}),g=[...i].reverse().find(t=>t.outcome!=="ok"&&t.outcome!=="cancelled"),_=g===void 0?null:(0,redactor_1.buildErrorReportFromRecord)(g,{...e.consent,channels:{...e.consent.channels,errorReports:!0}},(0,redactor_1.hostFromRecord)(g));return{generatedAt:new Date(r).toISOString(),upstreamAllowed:(0,types_1.isUpstreamAllowed)(v.mode),channels:e.consent.channels,endpoint:{configured:m.endpoint!==void 0,...m.source!==void 0?{source:m.source}:{}},nextRollup:R,...R!==null&&s!==void 0?{nextRollupWindow:{windowStart:s,windowEnd:o,records:l.length}}:{},todayRollup:M,sampleErrorReport:_,errorReportsEnabled:e.consent.channels.errorReports,queued:(0,outbox_1.listOutbox)(),sent:(0,outbox_1.listSent)(),neverSent:exports.UPSTREAM_NEVER_SENT,fieldAnnotations:exports.UPSTREAM_FIELD_ANNOTATIONS,rollupCadence:exports.UPSTREAM_ROLLUP_CADENCE}}U(buildUpstreamPreview,"buildUpstreamPreview");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var g=Object.defineProperty;var a=(e,t)=>g(e,"name",{value:t,configurable:!0});Object.defineProperty(exports,"__esModule",{value:!0}),exports.CI_ENV=exports.TELEMETRY_EVENT_ID_HEADER=exports.TELEMETRY_INGEST_KEY_HEADER=exports.TELEMETRY_ENDPOINT_OFF=exports.TELEMETRY_INGEST_KEY_ENV=exports.TELEMETRY_ENDPOINT_ENV=void 0,exports.resolveUpstreamEndpoint=resolveUpstreamEndpoint,exports.resolveUpstreamIngestKey=resolveUpstreamIngestKey,exports.flushOutbox=flushOutbox,exports.runUpstreamMaintenance=runUpstreamMaintenance;const types_1=require("@m0saic/types"),lifecycle_1=require("./lifecycle"),outbox_1=require("./outbox"),rollup_1=require("./rollup"),settingsStore_1=require("./settingsStore"),upstreamDefaults_1=require("./upstreamDefaults");exports.TELEMETRY_ENDPOINT_ENV="M0SAIC_TELEMETRY_ENDPOINT",exports.TELEMETRY_INGEST_KEY_ENV="M0SAIC_TELEMETRY_INGEST_KEY",exports.TELEMETRY_ENDPOINT_OFF="off",exports.TELEMETRY_INGEST_KEY_HEADER="x-m0saic-ingest-key",exports.TELEMETRY_EVENT_ID_HEADER="x-m0saic-event-id",exports.CI_ENV="CI";const BACKOFF_BASE_MS=36e5,BACKOFF_MAX_MS=7*864e5,POST_TIMEOUT_MS=5e3,DROP_STATUSES=new Set([400,413,415,422]);function resolveUpstreamEndpoint(e={}){var t,n,r,s,u,o,i;const f=(n=((t=e.env)!==null&&t!==void 0?t:process.env)[exports.TELEMETRY_ENDPOINT_ENV])===null||n===void 0?void 0:n.trim();if(f!==void 0&&f!=="")return f.toLowerCase()===exports.TELEMETRY_ENDPOINT_OFF?{source:"off"}:{endpoint:f,source:"env"};const
|
|
1
|
+
"use strict";var g=Object.defineProperty;var a=(e,t)=>g(e,"name",{value:t,configurable:!0});Object.defineProperty(exports,"__esModule",{value:!0}),exports.CI_ENV=exports.TELEMETRY_EVENT_ID_HEADER=exports.TELEMETRY_INGEST_KEY_HEADER=exports.TELEMETRY_ENDPOINT_OFF=exports.TELEMETRY_INGEST_KEY_ENV=exports.TELEMETRY_ENDPOINT_ENV=void 0,exports.resolveUpstreamEndpoint=resolveUpstreamEndpoint,exports.resolveUpstreamIngestKey=resolveUpstreamIngestKey,exports.flushOutbox=flushOutbox,exports.runUpstreamMaintenance=runUpstreamMaintenance;const types_1=require("@m0saic/types"),lifecycle_1=require("./lifecycle"),outbox_1=require("./outbox"),rollup_1=require("./rollup"),settingsStore_1=require("./settingsStore"),upstreamDefaults_1=require("./upstreamDefaults");exports.TELEMETRY_ENDPOINT_ENV="M0SAIC_TELEMETRY_ENDPOINT",exports.TELEMETRY_INGEST_KEY_ENV="M0SAIC_TELEMETRY_INGEST_KEY",exports.TELEMETRY_ENDPOINT_OFF="off",exports.TELEMETRY_INGEST_KEY_HEADER="x-m0saic-ingest-key",exports.TELEMETRY_EVENT_ID_HEADER="x-m0saic-event-id",exports.CI_ENV="CI";const BACKOFF_BASE_MS=36e5,BACKOFF_MAX_MS=7*864e5,POST_TIMEOUT_MS=5e3,DROP_STATUSES=new Set([400,413,415,422]);function resolveUpstreamEndpoint(e={}){var t,n,r,s,u,o,i;const f=(n=((t=e.env)!==null&&t!==void 0?t:process.env)[exports.TELEMETRY_ENDPOINT_ENV])===null||n===void 0?void 0:n.trim();if(f!==void 0&&f!=="")return f.toLowerCase()===exports.TELEMETRY_ENDPOINT_OFF?{source:"off"}:{endpoint:f,source:"env"};const l=(u=(s=(r=e.settings)===null||r===void 0?void 0:r.upstream)===null||s===void 0?void 0:s.endpoint)===null||u===void 0?void 0:u.trim();if(l!==void 0&&l!=="")return{endpoint:l,source:"settings"};const E=(i=(o=(0,upstreamDefaults_1.getUpstreamDefaults)())===null||o===void 0?void 0:o.endpoint)===null||i===void 0?void 0:i.trim();return E!==void 0&&E!==""?{endpoint:E,source:"default"}:{}}a(resolveUpstreamEndpoint,"resolveUpstreamEndpoint");function resolveUpstreamIngestKey(e={}){var t,n,r,s;const o=(n=((t=e.env)!==null&&t!==void 0?t:process.env)[exports.TELEMETRY_INGEST_KEY_ENV])===null||n===void 0?void 0:n.trim();if(o!==void 0&&o!=="")return o;const i=(s=(r=(0,upstreamDefaults_1.getUpstreamDefaults)())===null||r===void 0?void 0:r.ingestKey)===null||s===void 0?void 0:s.trim();return i!==void 0&&i!==""?i:void 0}a(resolveUpstreamIngestKey,"resolveUpstreamIngestKey");const isCi=a(e=>!!e[exports.CI_ENV],"isCi"),none=a((e,t)=>({attempted:0,sent:0,failed:0,skipped:e,rejected:0,reason:t}),"none");async function flushOutbox(e={}){var t,n,r,s,u;const o=(t=e.nowMs)!==null&&t!==void 0?t:Date.now(),i=(n=e.env)!==null&&n!==void 0?n:process.env,p=(0,settingsStore_1.getEffectiveTelemetryMode)(e.env);if(!(0,types_1.isUpstreamAllowed)(p.mode))return none((0,outbox_1.listOutbox)().length,"upstream-off");const f=(0,settingsStore_1.loadTelemetrySettings)(),l=resolveUpstreamEndpoint({env:e.env,settings:f}),E=(r=e.endpoint)!==null&&r!==void 0?r:l.endpoint;if(E===void 0)return none((0,outbox_1.listOutbox)().length,l.source==="off"?"endpoint-off":"dormant-no-endpoint");if(isCi(i)&&e.endpoint===void 0&&l.source!=="env")return none((0,outbox_1.listOutbox)().length,"ci-exempt");const m=(s=e.ingestKey)!==null&&s!==void 0?s:resolveUpstreamIngestKey({env:e.env}),O=(u=e.fetchImpl)!==null&&u!==void 0?u:fetch,R=Date.now();let M=0,x=0,N=0,v=0,y=0,D=!1;for(const d of(0,outbox_1.listOutbox)()){if(d.nextAttemptAtMs>o||D){v++;continue}if(e.deadlineMs!==void 0&&Date.now()-R>e.deadlineMs){v++;continue}M++;let c,I=!1;try{const _=new AbortController,S=setTimeout(()=>_.abort(),POST_TIMEOUT_MS);try{const T=await O(E,{method:"POST",headers:{"content-type":"application/json",[exports.TELEMETRY_EVENT_ID_HEADER]:d.id,...m!==void 0?{[exports.TELEMETRY_INGEST_KEY_HEADER]:m}:{}},body:JSON.stringify(d.payload),signal:_.signal});c=T.ok?T.status||200:T.status}finally{clearTimeout(S)}}catch{I=!0}if(c!==void 0&&c>=200&&c<300)(0,outbox_1.markSent)(d,o),x++;else if(c!==void 0&&DROP_STATUSES.has(c))(0,outbox_1.markSent)(d,o,{rejected:{status:c}}),y++;else{const _=d.attempts+1;(0,outbox_1.updateOutboxEntry)({...d,attempts:_,nextAttemptAtMs:o+Math.min(BACKOFF_BASE_MS*2**(_-1),BACKOFF_MAX_MS)}),N++,I&&(D=!0)}}return{attempted:M,sent:x,failed:N,skipped:v,rejected:y,endpoint:E}}a(flushOutbox,"flushOutbox");function runUpstreamMaintenance(e){const t={...e.nowMs!==void 0?{nowMs:e.nowMs}:{},...e.env!==void 0?{env:e.env}:{}};try{(0,lifecycle_1.checkAndEnqueueLifecycle)({currentVersion:e.currentVersion,...t,...e.install!==void 0?{install:e.install}:{}})}catch{}const n={...t,currentVersion:e.currentVersion};try{(0,rollup_1.maybeEnqueueDailyRollup)(n)}catch{}try{(0,rollup_1.maybeEnqueueTodayRollup)(n)}catch{}e.flush!==!1&&flushOutbox({...e.env!==void 0?{env:e.env}:{}}).catch(()=>{})}a(runUpstreamMaintenance,"runUpstreamMaintenance");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var d=Object.defineProperty;var a=(e,t)=>d(e,"name",{value:t,configurable:!0});Object.defineProperty(exports,"__esModule",{value:!0}),exports.recordFeatureUsage=recordFeatureUsage;const types_1=require("@m0saic/types"),settingsStore_1=require("./settingsStore"),usageStore_1=require("./usageStore");function recordFeatureUsage(e){var t,r;try{if(!(0,types_1.isFeatureKeyShaped)(e.feature)||(0,settingsStore_1.getEffectiveTelemetryMode)(e.env).mode==="ghost")return null;const u=e.templateKind==="builtin"&&e.templateId!==void 0&&e.templateId.length<=types_1.MAX_TEMPLATE_ID_CHARS&&types_1.FIRST_PARTY_TEMPLATE_ID_RE.test(e.templateId),n={schemaVersion:types_1.TELEMETRY_USAGE_RECORD_SCHEMA_VERSION,atMs:(t=e.nowMs)!==null&&t!==void 0?t:Date.now(),surface:e.surface,feature:e.feature,...e.templateKind!==void 0?{templateKind:e.templateKind}:{},...u?{templateId:e.templateId}:{}};return((r=e.append)!==null&&r!==void 0?r:usageStore_1.appendUsageRecord)(n),n}catch{return null}}a(recordFeatureUsage,"recordFeatureUsage");
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
"use strict";var
|
|
2
|
-
`,"utf8")}
|
|
3
|
-
`)){const n=s.trim();if(n!=="")try{const
|
|
1
|
+
"use strict";var l=Object.defineProperty;var o=(t,e)=>l(t,"name",{value:e,configurable:!0});var __createBinding=this&&this.__createBinding||(Object.create?(function(t,e,r,s){s===void 0&&(s=r);var n=Object.getOwnPropertyDescriptor(e,r);(!n||("get"in n?!e.__esModule:n.writable||n.configurable))&&(n={enumerable:!0,get:o(function(){return e[r]},"get")}),Object.defineProperty(t,s,n)}):(function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]})),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?(function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}):function(t,e){t.default=e}),__importStar=this&&this.__importStar||(function(){var t=o(function(e){return t=Object.getOwnPropertyNames||function(r){var s=[];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(s[s.length]=n);return s},t(e)},"ownKeys");return function(e){if(e&&e.__esModule)return e;var r={};if(e!=null)for(var s=t(e),n=0;n<s.length;n++)s[n]!=="default"&&__createBinding(r,e,s[n]);return __setModuleDefault(r,e),r}})();Object.defineProperty(exports,"__esModule",{value:!0}),exports.usageRecordFileForMs=usageRecordFileForMs,exports.appendUsageRecord=appendUsageRecord,exports.listUsageRecordsInWindow=listUsageRecordsInWindow,exports.countUsageRecords=countUsageRecords,exports.clearUsageRecords=clearUsageRecords,exports.tallyUsage=tallyUsage;const fs=__importStar(require("fs")),path=__importStar(require("path")),types_1=require("@m0saic/types"),m0saicRoot_1=require("../paths/m0saicRoot"),paths_1=require("./paths"),MONTH_FILE_RE=/^\d{4}-\d{2}\.jsonl$/;function usageRecordFileForMs(t){const e=new Date(t).toISOString();return path.join((0,paths_1.getTelemetryUsageDir)(),`${e.slice(0,7)}.jsonl`)}o(usageRecordFileForMs,"usageRecordFileForMs");function appendUsageRecord(t){(0,m0saicRoot_1.ensureDir)((0,paths_1.getTelemetryUsageDir)()),fs.appendFileSync(usageRecordFileForMs(t.atMs),`${JSON.stringify(t)}
|
|
2
|
+
`,"utf8")}o(appendUsageRecord,"appendUsageRecord");const isUsageLine=o(t=>{if(typeof t!="object"||t===null)return!1;const e=t;return e.schemaVersion===types_1.TELEMETRY_USAGE_RECORD_SCHEMA_VERSION&&typeof e.atMs=="number"&&(e.surface==="cli"||e.surface==="app")&&(0,types_1.isFeatureKeyShaped)(e.feature)},"isUsageLine"),listMonthFilesDesc=o(()=>{const t=(0,paths_1.getTelemetryUsageDir)();let e;try{e=fs.readdirSync(t)}catch{return[]}return e.filter(r=>MONTH_FILE_RE.test(r)).sort().reverse().map(r=>path.join(t,r))},"listMonthFilesDesc"),readMonthFile=o(t=>{let e;try{e=fs.readFileSync(t,"utf8")}catch{return[]}const r=[];for(const s of e.split(`
|
|
3
|
+
`)){const n=s.trim();if(n!=="")try{const a=JSON.parse(n);isUsageLine(a)&&r.push(a)}catch{}}return r},"readMonthFile");function listUsageRecordsInWindow(t,e){const r=[];for(const s of listMonthFilesDesc())for(const n of readMonthFile(s))n.atMs>=t&&n.atMs<e&&r.push(n);return r.sort((s,n)=>s.atMs-n.atMs),r}o(listUsageRecordsInWindow,"listUsageRecordsInWindow");function countUsageRecords(){let t=0;for(const e of listMonthFilesDesc())t+=readMonthFile(e).length;return t}o(countUsageRecords,"countUsageRecords");function clearUsageRecords(){let t=0;for(const e of listMonthFilesDesc())try{fs.unlinkSync(e),t++}catch{}return{filesDeleted:t}}o(clearUsageRecords,"clearUsageRecords");const bucketIndex=o((t,e)=>{for(let r=0;r<e.length;r++)if(t<e[r])return r;return e.length},"bucketIndex");function tallyUsage(t){var e,r;const s={},n={};let a=0;for(const i of t)s[i.feature]=((e=s[i.feature])!==null&&e!==void 0?e:0)+1,a++,i.templateKind==="builtin"&&i.templateId!==void 0&&i.templateId.length<=types_1.MAX_TEMPLATE_ID_CHARS&&types_1.FIRST_PARTY_TEMPLATE_ID_RE.test(i.templateId)&&(n[i.templateId]=((r=n[i.templateId])!==null&&r!==void 0?r:0)+1);const c=Object.entries(n).sort((i,u)=>u[1]-i[1]||i[0].localeCompare(u[0])).slice(0,types_1.MAX_TEMPLATES_USED);return{...a>0?{features:s}:{},...c.length>0?{templatesUsed:Object.fromEntries(c)}:{}}}o(tallyUsage,"tallyUsage");
|