function extractPinnedCardsFromURLText()

in tensorboard/webapp/routes/dashboard_deeplink_provider.ts [236:307]


function extractPinnedCardsFromURLText(
  urlText: string
): CardUniqueInfo[] | null {
  // Check that the URL text parses.
  let object;
  try {
    object = JSON.parse(urlText) as unknown;
  } catch {
    return null;
  }
  if (!Array.isArray(object)) {
    return null;
  }

  const result = [];
  for (const item of object) {
    // Validate types.
    const isPluginString = typeof item.plugin === 'string';
    const isRunString = typeof item.runId === 'string';
    const isSampleNumber = typeof item.sample === 'number';
    const isTagString = typeof item.tag === 'string';
    const isRunTypeValid = isRunString || typeof item.runId === 'undefined';
    const isSampleTypeValid =
      isSampleNumber || typeof item.sample === 'undefined';
    if (
      !isPluginString ||
      !isTagString ||
      !isRunTypeValid ||
      !isSampleTypeValid
    ) {
      continue;
    }

    // Required fields and range errors.
    if (!isPluginType(item.plugin)) {
      continue;
    }
    if (!item.tag) {
      continue;
    }
    if (isSingleRunPlugin(item.plugin)) {
      // A single run plugin must specify a non-empty run.
      if (!item.runId) {
        continue;
      }
    } else {
      // A multi run plugin must not specify a run.
      if (item.runId) {
        continue;
      }
    }
    if (isSampleNumber) {
      if (!isSampledPlugin(item.plugin)) {
        continue;
      }
      if (!Number.isInteger(item.sample) || item.sample < 0) {
        continue;
      }
    }

    // Assemble result.
    const resultItem = {plugin: item.plugin, tag: item.tag} as CardUniqueInfo;
    if (isRunString) {
      resultItem.runId = item.runId;
    }
    if (isSampleNumber) {
      resultItem.sample = item.sample;
    }
    result.push(resultItem);
  }
  return result;
}