Faits:
A.
Le 11 novembre 2012, D._ a requis un permis de construire huit chalets constituant dix appartements sur la parcelle n° 1231 de la commune de Leysin. Ce projet a suscité plusieurs oppositions, dont celles d'Helvetia Nostra, des propriétaires voisins A._ et B._ ainsi que C._. Par trois décisions séparées du 31 décembre 2012, la Municipalité de Leysin a écarté ces oppositions.
Helvetia Nostra a recouru par acte du 30 janvier 2013 auprès de la Cour de droit administratif et public du Tribunal cantonal. Le 4 février 2013, Helvetia Nostra, C._ ainsi que A._ et B._ ont, par l'intermédiaire de leur conseil commun, adressé un acte de recours à la cour cantonale. Celle-ci a statué dans deux causes séparées. Par arrêt du 8 avril 2013, elle a rejeté le recours d'Helvetia Nostra dans la mesure où il était recevable - laissant indécise la question de la qualité pour agir de l'association. Un émolument judiciaire de 1'000 fr. a été mis à la charge de l'association recourante. Par arrêt du 16 avril 2013, la cour cantonale a rejeté le recours des propriétaires voisins et, dans la mesure de sa recevabilité et en tant qu'il n'était pas devenu sans objet, celui d'Helvetia Nostra. Un émolument judiciaire de 1'000 fr. a été mis à la charge des recourants, solidairement entre eux. La cour cantonale s'est référée à un arrêt de principe du 22 novembre 2012 selon lequel l'art. 75b Cst. ne faisait pas obstacle à la délivrance de permis de construire avant le 1er janvier 2013.
B.
Par acte du 7 mai 2013, Helvetia Nostra recourt auprès du Tribunal fédéral contre l'arrêt cantonal du 8 avril 2013 (cause 1C_478/2013). Par acte du 15 mai 2013, Helvetia Nostra, C._ ainsi que A._ et B._ recourent auprès du Tribunal fédéral contre l'arrêt cantonal du 16 avril 2013 (cause 1C_499/2013). Ils demandent l'annulation de ces arrêts et le renvoi de la cause à l'autorité de dernière instance, subsidiairement la réforme des arrêts attaqués en ce sens que le permis de construire délivré à l'intimée est annulé.
Dans des arrêts de principe du 22 mai 2013, le Tribunal fédéral a notamment admis la qualité pour recourir d'Helvetia Nostra (ATF 139 II 271) ainsi que l'applicabilité directe des art. 75b et 197 ch. 9 Cst. (ATF 139 II 243 et 263).
Sur le vu de ces arrêts, les parties ont été invitées à se déterminer. Le Tribunal cantonal s'en remet à justice. La constructrice et la Municipalité de Leysin ont fait savoir que le projet serait affecté à de la résidence principale et que l'annotation d'une mention correspondante au registre foncier serait requise.
Considérant en droit:
1.
Les deux recours ont trait au même projet de construction. Les mêmes griefs ont été soulevés contre les décisions communales puis contre les arrêts cantonaux. Il se justifie dès lors de joindre les causes 1C_478/2012 et 1C_499/2012, pour des motifs d'économie de procédure, et de statuer à leur sujet dans un seul arrêt (cf. art. 24 PCF applicable par analogie vu le renvoi de l'art. 71 LTF).
2.
2.1. Dans son arrêt de principe du 22 mai 2013 (ATF 139 II 271), le Tribunal fédéral rappelle qu'Helvetia Nostra fait partie des organisations habilitées à recourir dans le domaine de la protection de la nature et du paysage au sens de l'art. 12 al. 1 let. b LPN (ch. 9 de la liste annexée ODO, RS 814.076). Le recours de ces associations n'est recevable que dans la mesure où l'objet du litige procède d'une tâche de la Confédération au sens des art. 78 Cst. et 2 LPN. L'art. 75b Cst. est une disposition directement applicable qui charge la Confédération de veiller au plafonnement des résidences secondaires à 20 %. L'objectif de cette norme est en premier lieu la protection de la nature et du paysage. Le Tribunal fédéral considère ainsi que le permis de construire une résidence secondaire repose sur des éléments spécialement régis par le droit fédéral et intervient donc en exécution d'une tâche de la Confédération (consid. 11.3). La qualité pour recourir doit dès lors être reconnue à Helvetia Nostra (consid. 11.4).
2.2. Le Tribunal fédéral a par ailleurs admis, dans un deuxième arrêt de principe du 22 mai 2013 (ATF 139 II 243 consid. 9-11), que l'art. 75b Cst. (en relation avec l'art. 197 ch. 9 al. 2 Cst.) est directement applicable dès son entrée en vigueur le 11 mars 2012. Dans les communes où le taux de 20 % de résidences secondaires est déjà atteint, les permis de construire délivrés entre le 11 mars 2012 et le 31 décembre 2012 sont annulables.
3.
Sur le vu de ces arrêts, il y a lieu d'admettre à tout le moins la qualité d'Helvetia Nostra pour s'opposer au projet litigieux. La qualité pour agir des autres opposants peut, en l'état, demeurer indécise.
La cour cantonale a laissé indécise la question de l'affectation de la construction litigieuse, en résidence principale ou secondaire. Or la nature du projet de construction n'est pas clairement définie. Dans ses dernières écritures, l'intimée prétend vouloir affecter les constructions à de la résidence principale. Cette question, déterminante, n'a pas été examinée par les instances précédentes puisque les nouvelles dispositions constitutionnelles ont été jugées, à tort, inapplicables. Conformément à l'art. 99 al. 1 LTF, il n'appartient pas au Tribunal fédéral de statuer en première instance sur la base d'éléments nouveaux.
4.
Il y a lieu dès lors d'annuler l'arrêt attaqué. Dans un tel cas, le Tribunal fédéral peut renvoyer la cause à l'autorité précédente ou à celle qui a statué en première instance (art. 107 al. 2 LTF). Se pose la question de savoir si la cause doit être renvoyée à la cour cantonale ou à l'autorité communale, après annulation des décisions levant les oppositions des recourants. En l'occurrence, la question de la conformité de l'autorisation de construire à l'art. 75b Cst. n'a pas été examinée lors du rejet des oppositions par la commune. La constructrice devra donc, si elle maintient sa demande de permis de construire, apporter les éclaircissements nécessaires sur ces points. Il y a ainsi lieu d'annuler les décisions levant les oppositions au permis de construire (dont l'admissibilité n'est en l'état pas démontrée) et de renvoyer la cause à l'autorité communale pour nouvelles décisions.
5.
Compte tenu de l'issue de la cause, les frais judiciaires et les dépens sont mis à la charge de l'intimée qui, à ce stade, succombe (art. 66 al. 1 et 68 al. 1 LTF). Il y a lieu également, conformément aux art. 67 et 68 al. 5 LTF, de fixer les frais et dépens pour la procédure devant le Tribunal cantonal. La constructrice n'a certes pas eu l'occasion de procéder devant cette instance mais, compte tenu de ce qui précède, la cour cantonale aurait dû statuer en sa défaveur, ce qui justifie la mise à sa charge des frais de justice, ainsi que des dépens en faveur de la recourante. Il ne se justifie en revanche pas de lui imputer les frais de deux procédures cantonales, qui, par économie de procédure, auraient dû faire l'objet d'une jonction de cause. Au vu du grand nombre de recours similaires déposés par l'association recourante à laquelle se sont joints les propriétaires voisins pour agir, il convient de réduire les dépens et de les fixer à 2'500 fr. pour l'ensemble des procédures fédérales et cantonales.
Par ces motifs, le Tribunal fédéral prononce:
1.
Les causes 1C_478/2013 et 1C_499/2013 sont jointes.
2.
Les recours sont admis dans la mesure où ils sont recevables. Les arrêts attaqués sont annulés, de même que les décisions du 31 décembre 2012. La cause est renvoyée à la Municipalité de Leysin pour nouvelles décisions dans le sens des considérants.
3.
Les frais judiciaires pour les procédures fédérales, arrêtés à 1'000 fr., de même que les frais des arrêts cantonaux, ramenés à 1'000 fr., sont mis à la charge de l'intimée D._.
4.
Une indemnité de dépens de 2'500 fr. est allouée aux recourants, pour les procédures fédérales et cantonales, à la charge de l'intimée D._.
5.
Le présent arrêt est communiqué aux parties, à la Municipalité de Leysin et au Tribunal cantonal du canton de Vaud, Cour de droit administratif et public.
Lausanne, le 22 octobre 2013
Au nom de la Ire Cour de droit public
du Tribunal fédéral suisse
Le Juge présidant: Aemisegger
La Greffière: Sidi-Ali