import { generate } from 'css-tree';

class Index {
  constructor() {
    this.map = new Map();
  }
  resolve(str) {
    let index = this.map.get(str);

    if (index === undefined) {
      index = this.map.size + 1;
      this.map.set(str, index);
    }

    return index;
  }
}

export default function createDeclarationIndexer() {
  const ids = new Index();

  return function markDeclaration(node) {
    const id = generate(node);

    node.id = ids.resolve(id);
    node.length = id.length;
    node.fingerprint = null;

    return node;
  };
}