{"version":3,"sources":["../src/index.ts","../src/index.constants.ts","../src/utils/utils.ts","../src/modes/comment/comment.ts","../src/modes/meta-tag/meta-tag.ts"],"sourcesContent":["import type { StampMode, StampOptions, StampMetaTagOptions } from \"@/index.types\";\nimport { DEFAULT_STAMP_OPTIONS } from \"@/index.constants\";\nimport { stampCommentInHtml } from \"@/modes/comment/comment\";\nimport { stampMetaTagInHtml } from \"@/modes/meta-tag/meta-tag\";\nimport { getStampOptions, validateBrowserEnvironment } from \"@/utils/utils\";\n\nfunction stampInHtml(message: string, options: Partial<StampOptions> = DEFAULT_STAMP_OPTIONS): void {\n  const mergedOptions = getStampOptions(options);\n  const stampMethods: Record<StampMode, () => void> = {\n    \"comment\": () => stampCommentInHtml(message, mergedOptions),\n    \"meta-tag\": () => stampMetaTagInHtml(message, mergedOptions),\n  };\n\n  try {\n    validateBrowserEnvironment();\n    stampMethods[mergedOptions.mode]();\n  } catch (error) {\n    console.error(error);\n  }\n}\n\nexport {\n  stampInHtml,\n};\n\nexport type {\n  StampOptions,\n  StampMetaTagOptions,\n};","import type { StampCommentOptions, StampMetaTagOptions, StampOptions } from \"@/index.types\";\n\nconst DEFAULT_COMMENT_OPTIONS: StampCommentOptions = {\n  innerDisplay: \"inline\",\n} as const;\n\nconst DEFAULT_META_TAG_OPTIONS: StampMetaTagOptions = {\n  name: \"dev-stamp\",\n  strictValidation: true,\n  overwrite: true,\n} as const;\n\nconst DEFAULT_STAMP_OPTIONS: StampOptions = {\n  mode: \"comment\",\n  targetSelector: \"body\",\n  comment: DEFAULT_COMMENT_OPTIONS,\n  metaTag: DEFAULT_META_TAG_OPTIONS,\n} as const;\n\nexport { DEFAULT_STAMP_OPTIONS };","import { DEFAULT_STAMP_OPTIONS } from \"@/index.constants\";\nimport type { PartialStampOptions, StampCommentOptions, StampMetaTagOptions, StampOptions } from \"@/index.types\";\n\nfunction validateBrowserEnvironment(): void {\n  if (typeof window === \"undefined\" || typeof window.document === \"undefined\") {\n    throw new Error(\"This function can only be run in a browser environment.\");\n  }\n}\n\nfunction getTargetElement(targetSelector: string): Element {\n  const targetElement = window.document.querySelector(targetSelector);\n  if (!targetElement) {\n    throw new Error(`Target element not found: ${targetSelector}`);\n  }\n  return targetElement;\n}\n\nfunction getStampMetaTagOptions(options: PartialStampOptions): StampMetaTagOptions {\n  return {\n    ...DEFAULT_STAMP_OPTIONS.metaTag,\n    ...options.metaTag,\n  };\n}\n\nfunction getStampCommentOptions(options: PartialStampOptions): StampCommentOptions {\n  return {\n    ...DEFAULT_STAMP_OPTIONS.comment,\n    ...options.comment,\n  };\n}\n\nfunction getStampOptions(options: PartialStampOptions): StampOptions {\n  return {\n    ...DEFAULT_STAMP_OPTIONS,\n    ...options,\n    comment: getStampCommentOptions(options),\n    metaTag: getStampMetaTagOptions(options),\n  };\n}\n\nexport {\n  validateBrowserEnvironment,\n  getTargetElement,\n  getStampMetaTagOptions,\n  getStampCommentOptions,\n  getStampOptions,\n};","import type { StampCommentOptions, StampOptions } from \"@/index.types\";\nimport { getTargetElement } from \"@/utils/utils\";\n\nfunction getFormattedComment(message: string, options: StampCommentOptions): string {\n  const { innerDisplay } = options;\n  if (innerDisplay === \"block\") {\n    return `\\n${message}\\n`;\n  }\n  if (innerDisplay === \"spaced-inline\") {\n    return ` ${message} `;\n  }\n  return message;\n}\n\nfunction stampCommentInHtml(message: string, options: StampOptions): void {\n  const { targetSelector, comment: commentOptions } = options;\n  const targetElement = getTargetElement(targetSelector);\n  const formattedComment = getFormattedComment(message, commentOptions);\n  const commentNode = window.document.createComment(formattedComment);\n  targetElement.appendChild(commentNode);\n}\n\nexport {\n  getFormattedComment,\n  stampCommentInHtml,\n};","import type { StampMetaTagOptions, StampOptions } from \"@/index.types\";\n\nfunction stampOnExistingMetaTag(message: string, existingMetaTag: Element, options: StampMetaTagOptions): void {\n  const { overwrite: doesOverride } = options;\n  if (!doesOverride) {\n    throw new Error(`Meta tag with name \"${options.name}\" already exists. Use \"metaTag.overwrite\" option to replace it.`);\n  }\n  existingMetaTag.setAttribute(\"content\", message);\n}\n\nfunction validateMetaTagOptions(name: string, options: StampMetaTagOptions): void {\n  if (!options.strictValidation) {\n    return;\n  }\n  if (!name) {\n    throw new Error(\"Meta tag name cannot be empty. Set 'metaTag.strictValidation' to false to skip this check.\");\n  }\n  const validNamePattern = /^[a-zA-Z0-9_\\-:.]+$/u;\n  if (!validNamePattern.test(name)) {\n    throw new Error(`Invalid meta tag name: \"${name}\". Only alphanumeric characters, underscores, hyphens, colons, and periods are allowed. Set 'metaTag.strictValidation' to false to skip this check.`);\n  }\n}\n\nfunction stampMetaTagInHtml(message: string, options: StampOptions): void {\n  const { head } = window.document;\n  const { name } = options.metaTag;\n  const trimmedName = name.trim();\n  validateMetaTagOptions(trimmedName, options.metaTag);\n  const existingMetaTag = head.querySelector(`meta[name=\"${trimmedName}\"]`);\n  if (existingMetaTag) {\n    stampOnExistingMetaTag(message, existingMetaTag, options.metaTag);\n\n    return;\n  }\n  const metaTag = window.document.createElement(\"meta\");\n  metaTag.setAttribute(\"name\", trimmedName);\n  metaTag.setAttribute(\"content\", message);\n  head.appendChild(metaTag);\n}\n\nexport {\n  stampOnExistingMetaTag,\n  validateMetaTagOptions,\n  stampMetaTagInHtml,\n};"],"mappings":"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","names":["index_exports","__export","stampInHtml","__toCommonJS","DEFAULT_COMMENT_OPTIONS","DEFAULT_META_TAG_OPTIONS","DEFAULT_STAMP_OPTIONS","validateBrowserEnvironment","getTargetElement","targetSelector","targetElement","getStampMetaTagOptions","options","DEFAULT_STAMP_OPTIONS","getStampCommentOptions","getStampOptions","getFormattedComment","message","options","innerDisplay","stampCommentInHtml","targetSelector","commentOptions","targetElement","getTargetElement","formattedComment","commentNode","stampOnExistingMetaTag","message","existingMetaTag","options","doesOverride","validateMetaTagOptions","name","stampMetaTagInHtml","head","trimmedName","metaTag","stampInHtml","message","options","DEFAULT_STAMP_OPTIONS","mergedOptions","getStampOptions","stampMethods","stampCommentInHtml","stampMetaTagInHtml","validateBrowserEnvironment","error"]}