{"version":3,"sources":["components/NavMenu.tsx","components/Layout.tsx","components/SearchResult.tsx","components/SearchTaxPayerForm.tsx","components/Home.tsx","components/FAQ.tsx","components/ForDevelopers.tsx","components/Contact.tsx","components/Login.tsx","components/ArchiveHistory.tsx","components/UserDashboard.tsx","components/UserDashboardRFCs.tsx","components/UserDashboardReports.tsx","components/RegisterUser.tsx","components/UserDashboardSideBar.tsx","components/NoticyOfPrivacy.tsx","components/ValidateInvoice.tsx","App.tsx","registerServiceWorker.ts","index.tsx"],"names":["NavMenu","state","isOpen","isLogged","localStorage","getItem","toggle","setState","caches","keys","then","names","forEach","name","delete","console","log","Navbar","className","light","Container","NavbarBrand","tag","Link","to","NavbarToggler","onClick","this","Collapse","navbar","NavItem","NavLink","React","props","children","href","SearchResult","alertVariant","estatus","role","rfc","razonSocial","numOficioPresuntoSAT","numOficioPresuntoDOF","numOficioDesvirtuadoSAT","numOficioDefinitivoSAT","numOficioSentenciaFavorableSAT","numOficioSentenciaFavortableDOF","detalle","SearchTaxPayerForm","errors","taxPayer","searched","handleSubmit","bind","validateForm","length","test","e","preventDefault","fetch","process","res","status","json","data","comments","Array","isArray","details","elements","map","value","index","key","onSubmit","type","placeholder","onChange","currentTarget","toUpperCase","renderErrors","Home","FAQ","ForDevelopers","Contact","Login","userName","password","window","location","Alert","color","m","formError","push","body","email","requestInit","method","JSON","stringify","headers","response","ok","setItem","token","ArchiveHistory","archiveHistory","archiveSearch","searchTerm","retrieveDocumentList","result","Map","item","has","searchDetails","set","substr","externalFileId","items","notResults","download","event","filter","includes","renderTable","UserDashboard","xmlns","width","height","viewBox","fill","stroke","strokeWidth","strokeLinecap","strokeLinejoin","x","y","rx","ry","x1","y1","x2","y2","UserDashboardRFCs","Rfc","Ciec","ShortName","renderUploadRfcForm","trim","Name","RFC","CIEC","UserDashboardReports","RegisterUser","confirmPassword","passwordConfirm","UserDashboardSideBar","id","d","points","NoticyOfPrivacy","ValidateInvoice","file","Blob","validationResult","blackListStatus","structure","validationDate","validity","emisorName","emisorRfc","receptorRfc","receptorName","sendFile","handleInputFileChange","formData","FormData","size","append","estatusListaNegra","estructura","fechaDeValidacion","vigencia","emisorNombre","receptorNombre","undefined","files","renderValidationResult","LogOut","removeItem","Dashboard","MyRFC","Reports","App","ClearCacheData","Layout","exact","path","component","isLocalhost","Boolean","hostname","match","registerValidSW","swUrl","navigator","serviceWorker","register","registration","onupdatefound","installingWorker","installing","onstatechange","controller","catch","error","ReactDOM","document","getElementById","URL","toString","origin","addEventListener","contentType","get","indexOf","ready","unregister","reload","checkValidServiceWorker"],"mappings":"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","file":"static/js/main.7ece637e.chunk.js","sourcesContent":["import * as React from 'react';\r\nimport { Collapse, Container, Navbar, NavbarBrand, NavbarToggler, NavItem, NavLink } from 'reactstrap';\r\nimport { Link } from 'react-router-dom';\r\nimport './NavMenu.css';\r\n\r\nexport default class NavMenu extends React.PureComponent<{}, { isOpen: boolean }> {\r\n public state = {\r\n isOpen: false\r\n };\r\n\r\n public isLogged = localStorage.getItem(\"token\");\r\n\r\n public ClearCacheData() {\r\n caches.keys().then((names) => {\r\n names.forEach((name) => {\r\n caches.delete(name);\r\n });\r\n });\r\n console.log(\"cache cleared\");\r\n };\r\n\r\n public render() {\r\n return (\r\n
\r\n \r\n \r\n La Lista Negra del SAT\r\n \r\n \r\n
    \r\n \r\n Valida tu Factura\r\n \r\n \r\n Histórico de Archivos\r\n \r\n \r\n Preguntas Frecuentes\r\n \r\n \r\n Desarrolladores\r\n \r\n \r\n Contacto\r\n \r\n \r\n Aviso de Privacidad\r\n \r\n {\r\n //!this.isLogged &&\r\n //\r\n // Login\r\n //\r\n }\r\n {\r\n //this.isLogged &&\r\n //\r\n // Logout\r\n //\r\n }\r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n private toggle = () => {\r\n this.setState({\r\n isOpen: !this.state.isOpen\r\n });\r\n }\r\n}\r\n","import * as React from 'react';\r\nimport NavMenu from './NavMenu';\r\n\r\nexport default (props: { children?: React.ReactNode }) => (\r\n \r\n \r\n
\r\n {props.children}\r\n
\r\n \r\n
\r\n);\r\n","import * as React from 'react';\r\nimport ITaxPayer from '../interfaces/ITaxPayer';\r\nimport { Alert } from 'reactstrap';\r\n\r\nclass SearchResult extends React.Component {\r\n\r\n public render() {\r\n let alertVariant = this.props.estatus === 'NoEncontrado' ? 'alert alert-primary':'alert alert-danger';\r\n return (\r\n
\r\n
\r\n
\r\n RFC: {this.props.rfc}
\r\n Razón social: {this.props.razonSocial}
\r\n Estatus :{this.props.estatus}
\r\n
\r\n
\r\n {this.props.estatus != 'NoEncontrado' && \r\n
\r\n Detalle completo:
\r\n RFC: {this.props.rfc}
\r\n Razón social: {this.props.razonSocial}
\r\n Estatus: {this.props.estatus}
\r\n Número de Oficio Presunto SAT: {this.props.numOficioPresuntoSAT ? this.props.numOficioPresuntoSAT : 'N/A'}
\r\n Número de Oficio Presunto DOF: {this.props.numOficioPresuntoDOF ? this.props.numOficioPresuntoDOF : 'N/A'}
\r\n Número de Oficio Desvirtuado SAT: {this.props.numOficioDesvirtuadoSAT ? this.props.numOficioDesvirtuadoSAT : 'N/A'}
\r\n Número de Oficio Definitivo SAT: {this.props.numOficioDefinitivoSAT ? this.props.numOficioDefinitivoSAT : 'N/A'}
\r\n Número de Oficio Sentencia Favorable SAT: {this.props.numOficioSentenciaFavorableSAT ? this.props.numOficioSentenciaFavorableSAT : 'N/A'}
\r\n Numero de Oficio Sentencia Favorable DOF: {this.props.numOficioSentenciaFavortableDOF ? this.props.numOficioSentenciaFavortableDOF : 'N/A'}
\r\n Detalle de búsqueda {this.props.detalle}\r\n
\r\n }\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default SearchResult;","import * as React from 'react';\r\nimport SearchResult from './SearchResult';\r\nimport ITaxPayer from '../interfaces/ITaxPayer';\r\nimport IStateSearchTaxPayerForm from '../interfaces/IStateSearchTaxPayerForm';\r\n\r\nclass SearchTaxPayerForm extends React.PureComponent<{}, IStateSearchTaxPayerForm> {\r\n\r\n constructor(props: {}) {\r\n super(props);\r\n this.state = {\r\n rfc: \"\",\r\n errors: [],\r\n taxPayer: {\r\n rfc: '',\r\n razonSocial: '',\r\n estatus: '',\r\n detalle: '',\r\n numOficioPresuntoSAT: '',\r\n numOficioPresuntoDOF: '',\r\n numOficioDesvirtuadoSAT: '',\r\n numOficioDefinitivoSAT: '',\r\n numOficioSentenciaFavorableSAT: '',\r\n numOficioSentenciaFavortableDOF: ''\r\n },\r\n searched: false\r\n };\r\n this.handleSubmit = this.handleSubmit.bind(this)\r\n this.validateForm = this.validateForm.bind(this)\r\n }\r\n\r\n private validateForm() {\r\n if (this.state.rfc.length === 0) {\r\n this.setState({ errors: [\"Introduzca un RFC antes de hacer la búsqueda\"] })\r\n return false;\r\n }\r\n if (/^([A-Z,Ñ,&]{3,4}([0-9]{2})(0[1-9]|1[0-2])(0[1-9]|1[0-9]|2[0-9]|3[0-1])[A-Z|\\d]{3})$/.test(this.state.rfc) == false)\r\n {\r\n this.setState({ errors: [\"Introduzca un RFC válido antes de hacer la búsqueda\"] })\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n private handleSubmit(e: React.FormEvent) {\r\n e.preventDefault();\r\n if (this.validateForm()) {\r\n //console.log(this.state);\r\n let url = process.env.NODE_ENV === 'development' ? process.env.REACT_APP_API_URL_DEV : process.env.REACT_APP_API_URL_PROD;\r\n this.setState(\r\n {\r\n taxPayer: {\r\n rfc: '',\r\n razonSocial: '',\r\n estatus: '',\r\n detalle: '',\r\n numOficioPresuntoSAT: '',\r\n numOficioPresuntoDOF: '',\r\n numOficioDesvirtuadoSAT: '',\r\n numOficioDefinitivoSAT: '',\r\n numOficioSentenciaFavorableSAT: '',\r\n numOficioSentenciaFavortableDOF: ''\r\n },\r\n searched: false,\r\n errors: []\r\n }\r\n );\r\n \r\n\r\n fetch(`${url}api/blacklist/${this.state.rfc}`)\r\n .then(res => {\r\n if (res.status === 200) {\r\n res.json().then(data => {\r\n if (data !== null) {\r\n let taxPayer: ITaxPayer = {\r\n rfc: data.rfc,\r\n razonSocial: data.razonSocial,\r\n estatus: data.estatus,\r\n detalle: `${data.detalle.comments}`,\r\n numOficioPresuntoSAT: data.numOficioPresuntoSAT,\r\n numOficioPresuntoDOF: data.numOficioPresuntoDOF,\r\n numOficioDesvirtuadoSAT: data.numOficioDesvirtuadoSAT,\r\n numOficioDefinitivoSAT: data.numOficioDefinitivoSAT,\r\n numOficioSentenciaFavorableSAT: data.numOficioSentenciaFavorableSAT,\r\n numOficioSentenciaFavortableDOF: data.numOficioSentenciaFavortableDOF\r\n };\r\n this.setState({ taxPayer: taxPayer, searched: true });\r\n }\r\n else {\r\n this.setState({ searched: true });\r\n }\r\n })\r\n }\r\n else if (res.status === 404) {\r\n res.json().then(data => {\r\n if (data !== null) {\r\n let taxPayer: ITaxPayer = {\r\n rfc: data.rfc,\r\n razonSocial: data.razonSocial,\r\n estatus: data.estatus,\r\n detalle: `${data.detalle.comments}`,\r\n numOficioPresuntoSAT: data.numOficioPresuntoSAT,\r\n numOficioPresuntoDOF: data.numOficioPresuntoDOF,\r\n numOficioDesvirtuadoSAT: data.numOficioDesvirtuadoSAT,\r\n numOficioDefinitivoSAT: data.numOficioDefinitivoSAT,\r\n numOficioSentenciaFavorableSAT: data.numOficioSentenciaFavorableSAT,\r\n numOficioSentenciaFavortableDOF: data.numOficioSentenciaFavortableDOF\r\n };\r\n this.setState({ taxPayer: taxPayer, searched: true });\r\n }\r\n else {\r\n this.setState({ searched: true });\r\n }\r\n })\r\n }\r\n else if (res.status !== 200) {\r\n res.json().then(data => {\r\n if(Array.isArray(data.details)){\r\n this.setState({ searched: false, errors: data.details });\r\n }\r\n else{ \r\n this.setState({ searched: false, errors: [data.details] });\r\n }\r\n });\r\n }\r\n })\r\n }\r\n }\r\n\r\n private renderErrors() {\r\n const elements = this.state.errors;\r\n return (\r\n
\r\n {elements.map((value, index) => {\r\n return
{value}
\r\n\r\n })}\r\n
\r\n )\r\n }\r\n\r\n public render() {\r\n return (\r\n
\r\n
\r\n
\r\n ) =>\r\n this.setState({ rfc: e.currentTarget.value.toUpperCase(), errors: [], searched: false })} />\r\n
\r\n
\r\n \r\n
\r\n
\r\n {\r\n this.state.searched && this.state.taxPayer.rfc !== \"\" &&\r\n \r\n }\r\n {\r\n this.state.searched && this.state.taxPayer.rfc === \"\" &&\r\n
\r\n
\r\n El emisor con RFC {this.state.rfc} no está en lista negra\r\n
\r\n
\r\n }\r\n {this.renderErrors()}\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default SearchTaxPayerForm;","import * as React from 'react';\r\nimport SearchTaxPayerForm from './SearchTaxPayerForm';\r\nimport { Link } from 'react-router-dom';\r\n\r\nconst Home = () => (\r\n
\r\n
\r\n
\r\n

La Lista Negra del SAT

\r\n

Bienvenido a La Lista Negra del SAT:

\r\n

Aquí podrás consultar si uno de tus proveedores está en la dichosa lista y en que estatus

\r\n

Más información sobre que es la lista negra: ¿Qué son las listas negras del SAT?

\r\n
\r\n \r\n
\r\n

Este portal se actualiza a diario con la información oficial publicada por el SAT

\r\n

Este portal permite realizar hasta 10 búsquedas gratuitas al día. Si necesitas realizar más búsquedas o validar de manera masiva o conocer más sobre las posibilidades del servicio por favor envíanos un mensaje

\r\n
\r\n
\r\n
\r\n);\r\n\r\nexport default Home;","import * as React from 'react';\r\n\r\n\r\nconst FAQ = () => (\r\n
\r\n
\r\n
\r\n

Preguntas Frecuentes

\r\n
    \r\n
  • Pregunta: ¿Por qué entra en la lista negra una empresa?
  • \r\n
  • Respuesta: Incumplimiento de las obligaciones fiscales. Cuando una persona física o moral no cumple con sus obligaciones (pago de impuestos) o hay sospecha de transacciones ilícitas (ej, lavado de dinero), esas personas se vuelven sujeto de ser agregados en la lista negra
  • \r\n
\r\n
    \r\n
  • Pregunta: ¿Que implica para mi el que uno o varios de mis proveedores esten en la lista negra?
  • \r\n
  • Respuesta: Todos los proveedores y clientes que tengan facturas con esa persona que está en la lista negra, no pueden presentar sus declaraciones con esas operaciones por lo cuál les \"rebotan\" todas sus operaciones
  • \r\n
\r\n
    \r\n
  • Pregunta: ¿Qué debo hacer yo si sospecho que uno de mis proveedores realiza operaciones ilicitas?
  • \r\n
  • Respuesta: Es obligación tuya como persona física o moral estar seguro de que no tienes operaciones con un proveedor o cliente que está en la lista negra.\r\n
    \r\n Si sospechas que alguno de tus proveedores realiza operaciones ilicitas o incumple sus obligaciones fiscales debes avisar al SAT lo antes posible.\r\n
  • \r\n
\r\n
    \r\n
  • Pregunta: ¿Puedo realizar validaciones masivas?
  • \r\n
  • Respuesta: Por supuesto, contactanos y te armamos un paquete para que puedas validar usando un archivo excel o alguno de los endpoint REST o SOAP.
  • \r\n
\r\n
    \r\n
  • Pregunta: ¿Qué tan seguido se actualiza esta lista?
  • \r\n
  • Respuesta: Nosotros realizamos una actualización diaria de la información para estar al día con el SAT
  • \r\n
\r\n
    \r\n
  • Pregunta: ¿Qué otra información puedo obtener si uso el servicio completo?
  • \r\n
  • Respuesta: El número de oficio y fecha en que se declara un contribuyente como Presunto o Definitivo por el SAT así como las fechas en que se pública dicha información en el Diario Oficial de la Federación entre otros datos
  • \r\n
\r\n
\r\n
\r\n
\r\n);\r\n\r\nexport default FAQ;\r\n","import * as React from 'react';\r\n\r\n\r\nconst ForDevelopers = () => (\r\n
\r\n
\r\n
\r\n

Para Desarrolladores

\r\n
\r\n
\r\n

Eres desarrollador y quieres realizar búsquedas desde tu sistema? Usa el API REST o el endpoint SOAP

\r\n
\r\n
\r\n

REST

\r\n
\r\n EndPoint\r\n
\r\n \r\n HTTP:GET lalistanegradelsat.com.mx/api/blacklist/AAA091014835
\r\n
\r\n
\r\n
\r\n
\r\n Response RFC Encontrado\r\n
\r\n
\r\n                            \r\n                                {
\r\n "RFC":"AAA091014835",
\r\n "RazonSocial":"EMPRESA SA DE CV, S.C.",
\r\n "Estatus":"Desvirtuado",
\r\n "Detalle":"Información actualizada al 27 de abril de 2020"
\r\n }\r\n
\r\n
\r\n
\r\n
\r\n
\r\n Response RFC No Encontrado\r\n
\r\n
\r\n                            \r\n                                null\r\n                            \r\n                        
\r\n
\r\n
\r\n
\r\n Bad Request\r\n
\r\n
\r\n                            \r\n                                {
\r\n "messages":[
\r\n "El RFC enviado no es válido",
\r\n "Otros mensajes..."
\r\n ]
\r\n }\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n

SOAP

\r\n
\r\n EndPoint\r\n
\r\n \r\n https://soap.lalistanegradelsat.com.mx?wsdl
\r\n
\r\n
\r\n
\r\n
\r\n Request\r\n
\r\n
\r\n                            \r\n                                <soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soap="soap.lalistanegradelsat.com.mx">
\r\n <soapenv:Header/>
\r\n <soapenv:Body>
\r\n <soap:search soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
\r\n <taxPayer xsi:type="soap:taxPayer">
\r\n <RFC xsi:type="xsd:string">AAA091014835</RFC>
\r\n </taxPayer>
\r\n </soap:search>
\r\n </soapenv:Body>
\r\n </soapenv:Envelope>
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n Response RFC Encontrado\r\n
\r\n
\r\n                            \r\n                                <SOAP-ENV: Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="soap.lalistanegradelsat.com.mx">
\r\n <SOAP-ENV: Body>
\r\n <ns1:searchResponse xmlns:ns1="soap.lalistanegradelsat.com.mx">
\r\n <return xsi: type="tns:taxPayer">
\r\n <RFC xsi:type="xsd:string">AAA091014835</RFC>
\r\n <RazonSocial xsi:type="xsd:string">Empresa SA DE CV</RazonSocial>
\r\n <Estatus xsi:type="xsd:string">Definitivo</Estatus>
\r\n <Detalle xsi: type="xsd:string">Información actualizada al 27 de abril de 2020.</Detalle>
\r\n </return>
\r\n </ns1: searchResponse>
\r\n </SOAP-ENV: Body>
\r\n </SOAP-ENV:Envelope>
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n Response RFC No Encontrado\r\n
\r\n
\r\n                            \r\n                                <SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="soap.lalistanegradelsat.com.mx">
\r\n <SOAP-ENV:Body>
\r\n <ns1:searchResponse xmlns:ns1="soap.lalistanegradelsat.com.mx">
\r\n <return xsi:nil="true" xsi:type="tns:taxPayer"/>
\r\n </ns1:searchResponse>
\r\n </SOAP-ENV:Body>
\r\n </SOAP-ENV:Envelope>\r\n
\r\n
\r\n
\r\n
\r\n
\r\n Bad Request\r\n
\r\n
\r\n                            \r\n                                <SOAP-ENV: Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="soap.lalistanegradelsat.com.mx">
\r\n <SOAP-ENV: Body>
\r\n <ns1:searchResponse xmlns:ns1="soap.lalistanegradelsat.com.mx">
\r\n <return xsi: type="tns:taxPayer">
\r\n <RFC xsi: nil="true" xsi:type="xsd:string"/>
\r\n <RazonSocial xsi: nil="true" xsi:type="xsd:string"/>
\r\n <Estatus xsi: nil="true" xsi:type="xsd:string"/>
\r\n <Detalle xsi: type="xsd:string">El RFC enviado no es válido.</Detalle>
\r\n </return>
\r\n </ns1: searchResponse>
\r\n </SOAP-ENV: Body>
\r\n </SOAP-ENV:Envelope>
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n);\r\n\r\nexport default ForDevelopers;","import * as React from 'react';\r\n\r\n\r\nconst Contact = () => (\r\n
\r\n
\r\n
\r\n

Contacto

\r\n Ventas: Cristhian Rosillo - Cristhian.Rosillo@outlook.com
\r\n Desarrollo: Lucio Flores - lucio.flores@live.com\r\n
\r\n
\r\n
\r\n);\r\n\r\nexport default Contact;","import * as React from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport { Alert } from 'reactstrap';\r\nimport IStateLogin from '../interfaces/IStateLogin';\r\n\r\nexport default class Login extends React.PureComponent<{}, IStateLogin> {\r\n constructor(props: {}) {\r\n super(props)\r\n this.state = {\r\n userName: \"test@localhost.com\",\r\n password: \"test@localhost.com\",\r\n errors: []\r\n }\r\n\r\n if (localStorage.getItem(\"token\")) {\r\n window.location.href = \"/\";\r\n }\r\n\r\n this.handleSubmit = this.handleSubmit.bind(this)\r\n this.validateForm = this.validateForm.bind(this)\r\n this.renderErrors = this.renderErrors.bind(this)\r\n\r\n }\r\n private renderErrors() {\r\n return this.state.errors.length > 0 && < Alert color=\"danger\" >\r\n \r\n ;\r\n }\r\n private validateForm() {\r\n this.setState({\r\n errors: []\r\n })\r\n let formError = []\r\n if (this.state.userName.length === 0 || this.state.password.length === 0) {\r\n formError.push(\"Ingrese el usuario y/o contraseña\");\r\n }\r\n\r\n if (formError.length > 0) {\r\n this.setState({\r\n errors: formError\r\n })\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n private handleSubmit(e: React.FormEvent) {\r\n e.preventDefault()\r\n if (!this.validateForm()) {\r\n console.log(this.state.errors)\r\n return\r\n };\r\n\r\n let body = {\r\n email: this.state.userName,\r\n password: this.state.password\r\n }\r\n //para enviar archivos hay que usar el objeto form data de javascript y enviarlo en el parámetro body\r\n let requestInit: RequestInit = {\r\n method: 'POST',\r\n body: JSON.stringify(body),\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n }\r\n }\r\n\r\n fetch('api/account/login', requestInit).then((response) => {\r\n if (response.ok) {\r\n response.json().then(data => {\r\n localStorage.setItem(\"token\", data.token);\r\n window.location.href = \"/\";\r\n });\r\n }\r\n else {\r\n this.setState({\r\n errors: [\"Usuario y/o contraseña incorrectos\"]\r\n })\r\n }\r\n })\r\n }\r\n\r\n\r\n public render() {\r\n return (\r\n
\r\n
\r\n
\r\n

Inicio de sesión

\r\n
\r\n
\r\n \r\n ) =>\r\n this.setState({\r\n userName: e.currentTarget.value\r\n })\r\n } />\r\n
\r\n
\r\n \r\n ) =>\r\n this.setState({\r\n password: e.currentTarget.value\r\n })\r\n } />\r\n
\r\n
\r\n \r\n
\r\n {this.renderErrors()}\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n}","import * as React from 'react';\r\nimport IArchiveHistoryList from '../interfaces/IArchiveHistoryList';\r\n\r\nclass ArchiveHistory extends React.Component<{}, IArchiveHistoryList>\r\n{\r\n constructor(props: {}) {\r\n super(props);\r\n this.state = {\r\n archiveHistory: [],\r\n archiveSearch:[],\r\n searchTerm:'',\r\n errors:[]\r\n };\r\n }\r\n\r\n componentWillMount() {\r\n this.retrieveDocumentList();\r\n }\r\n\r\n private retrieveDocumentList() {\r\n let url = process.env.NODE_ENV === 'development' ? process.env.REACT_APP_API_URL_DEV : process.env.REACT_APP_API_URL_PROD;\r\n fetch(`${url}api/blacklist/documentList`)\r\n .then(res => {\r\n if (res.status === 200) {\r\n res.json().then(data => {\r\n const result = [];\r\n const map = new Map();\r\n for (const item of data) {\r\n if (!map.has(item.searchDetails)) {\r\n map.set(item.searchDetails, true);\r\n result.push({\r\n searchDetails:item.searchDetails.substr(0,46),\r\n externalFileId: item.externalFileId\r\n });\r\n }\r\n }\r\n this.setState({ archiveHistory: result})\r\n });\r\n }\r\n else if (res.status !== 200) {\r\n res.json().then(data => {\r\n if(Array.isArray(data.details)){\r\n this.setState({ errors: data.details });\r\n }\r\n else{ \r\n this.setState({ errors: [data.details] });\r\n }\r\n });\r\n }\r\n })\r\n }\r\n\r\n private renderTable(items: Array) {\r\n\r\n const notResults = (
No se encontraron resultados
)\r\n\r\n return (\r\n items.length > 0 ?\r\n items.map(item =>\r\n (
\r\n \r\n {item.searchDetails}\r\n \r\n
)\r\n )\r\n :\r\n notResults\r\n );\r\n }\r\n\r\n private handleSubmit(event: any) {\r\n event.preventDefault();\r\n }\r\n\r\n render() {\r\n return (\r\n
\r\n

Histórico de archivos del SAT

\r\n
\r\n
\r\n ) =>\r\n this.setState({\r\n searchTerm: e.currentTarget.value.toUpperCase(),\r\n archiveSearch: this.state.archiveHistory.filter((item) => { return item.searchDetails.toUpperCase().includes(e.currentTarget.value.toUpperCase()) })\r\n })} />\r\n
\r\n
\r\n {(this.state.archiveSearch.length > 0 || this.state.searchTerm.length > 0) ? this.renderTable(this.state.archiveSearch) : this.renderTable(this.state.archiveHistory)}\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default ArchiveHistory;","import * as React from 'react';\r\n\r\nclass UserDashboard extends React.PureComponent<{}, {}>{\r\n public render() {\r\n return (<>\r\n
\r\n
\r\n

Dashboard

\r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n

Section title

\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
#HeaderHeaderHeaderHeader
1,001randomdataplaceholdertext
1,002placeholderirrelevantvisuallayout
1,003datarichdashboardtabular
1,003informationplaceholderillustrativedata
1,004textrandomlayoutdashboard
1,005dashboardirrelevanttextplaceholder
1,006dashboardillustrativerichdata
1,007placeholdertabularinformationirrelevant
1,008randomdataplaceholdertext
1,009placeholderirrelevantvisuallayout
1,010datarichdashboardtabular
1,011informationplaceholderillustrativedata
1,012textplaceholderlayoutdashboard
1,013dashboardirrelevanttextvisual
1,014dashboardillustrativerichdata
1,015randomtabularinformationtext
\r\n
\r\n
\r\n )\r\n }\r\n}\r\nexport default UserDashboard;","import * as React from 'react';\r\nimport { Alert } from 'reactstrap';\r\n\r\ninterface IUserDashboardRFCs {\r\n Ciec: string,\r\n Rfc: string,\r\n ShortName: string,\r\n errors: Array\r\n}\r\n\r\nclass UserDashboardRFCs extends React.PureComponent<{}, IUserDashboardRFCs>{\r\n\r\n constructor(props: {}) {\r\n super(props);\r\n if (!localStorage.getItem(\"token\")) {\r\n window.location.href = '/login';\r\n }\r\n this.state = {\r\n Rfc: '',\r\n Ciec: '',\r\n ShortName: '',\r\n errors: []\r\n }\r\n this.validateForm = this.validateForm.bind(this);\r\n this.handleSubmit = this.handleSubmit.bind(this);\r\n this.renderUploadRfcForm = this.renderUploadRfcForm.bind(this);\r\n }\r\n\r\n private validateForm() {\r\n this.setState({\r\n errors: []\r\n })\r\n let formError = []\r\n if (this.state.ShortName.trim().length === 0\r\n ||\r\n this.state.Rfc.trim().length === 0\r\n ||\r\n this.state.Ciec.trim().length === 0) {\r\n formError.push(\"Ingrese los datos\");\r\n }\r\n\r\n //validate rfc\r\n let rfcIsValid = /^([A-Z,Ñ,&]{3,4}([0-9]{2})(0[1-9]|1[0-2])(0[1-9]|1[0-9]|2[0-9]|3[0-1])[A-Z|\\d]{3})$/.test(this.state.Rfc);\r\n if (!rfcIsValid) {\r\n formError.push(\"Introduzca un RFC válido\");\r\n }\r\n \r\n\r\n if (formError.length > 0) {\r\n this.setState({\r\n errors: formError\r\n })\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n private renderErrors() {\r\n return this.state.errors.length > 0 && \r\n
    \r\n {this.state.errors.map(m => { return
  • {m}
  • ; })}\r\n
\r\n
;\r\n }\r\n\r\n private handleSubmit(e: React.FormEvent) {\r\n e.preventDefault();\r\n\r\n if (!this.validateForm()) return;\r\n\r\n let body = {\r\n Name: this.state.ShortName,\r\n RFC: this.state.Rfc,\r\n CIEC: this.state.Ciec\r\n }\r\n\r\n let requestInit: RequestInit = {\r\n method: 'POST',\r\n body: JSON.stringify(body),\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Authorization': `Bearer ${localStorage.getItem(\"token\")}`\r\n }\r\n }\r\n\r\n fetch('api/rfc', requestInit).then((response) => {\r\n if (response.ok) {\r\n response.json().then(data => {\r\n console.log(data);\r\n });\r\n }\r\n else {\r\n this.setState({\r\n errors: [\"No se pudo guardar la información. Intente de nuevo.\"]\r\n })\r\n }\r\n })\r\n }\r\n\r\n \r\n public renderUploadRfcForm() {\r\n return (<>\r\n
\r\n
\r\n
\r\n ) =>\r\n this.setState({\r\n ShortName: e.currentTarget.value\r\n })\r\n }/>\r\n
\r\n
\r\n ) =>\r\n this.setState({\r\n Rfc: e.currentTarget.value\r\n })\r\n }/>\r\n
\r\n
\r\n ) =>\r\n this.setState({\r\n Ciec: e.currentTarget.value\r\n })\r\n }/>\r\n
\r\n
\r\n \r\n
\r\n {this.renderErrors()}\r\n
\r\n
\r\n \r\n );\r\n }\r\n \r\n public render() {\r\n return (<>\r\n
\r\n
\r\n

Mis RFCs

\r\n
\r\n
\r\n
\r\n {this.renderUploadRfcForm()}\r\n
\r\n )\r\n }\r\n}\r\nexport default UserDashboardRFCs;","import * as React from 'react';\r\n\r\nclass UserDashboardReports extends React.PureComponent<{}, {}>{\r\n constructor(props: {}) {\r\n super(props);\r\n if (!localStorage.getItem(\"token\")) {\r\n window.location.href = '/login';\r\n }\r\n }\r\n\r\n public render() {\r\n return (<>\r\n
\r\n
\r\n

Reportes

\r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n )\r\n }\r\n}\r\nexport default UserDashboardReports;","import * as React from 'react';\r\n\r\nimport { Link } from 'react-router-dom';\r\nimport { Alert } from 'reactstrap';\r\nimport IStateRegisterUser from '../interfaces/IStateRegisterUser';\r\nclass RegisterUser extends React.PureComponent<{}, IStateRegisterUser> {\r\n constructor(props: {}) {\r\n super(props)\r\n this.state = {\r\n userName: \"\",\r\n password: \"\",\r\n confirmPassword: \"\",\r\n errors: []\r\n }\r\n this.handleSubmit = this.handleSubmit.bind(this)\r\n this.validateForm = this.validateForm.bind(this)\r\n this.renderErrors = this.renderErrors.bind(this)\r\n\r\n }\r\n\r\n private renderErrors() {\r\n return this.state.errors.length > 0 && < Alert color=\"danger\" >\r\n
    \r\n {this.state.errors.map(m => { return
  • {m}
  • ; })}\r\n
\r\n ;\r\n }\r\n\r\n private validateForm() {\r\n this.setState({\r\n errors: []\r\n })\r\n let formError = []\r\n\r\n if (this.state.userName.length === 0 || this.state.password.length === 0) {\r\n formError.push(\"Ingrese los datos\");\r\n }\r\n\r\n if (this.state.confirmPassword !== this.state.password) {\r\n formError.push(\"Las contraseñas no coinciden\");\r\n }\r\n\r\n if (formError.length > 0) {\r\n this.setState({\r\n errors: formError\r\n })\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n private handleSubmit(e: React.FormEvent) {\r\n e.preventDefault()\r\n if (!this.validateForm()) {\r\n console.log(this.state.errors)\r\n return\r\n };\r\n\r\n let body = {\r\n email: this.state.userName,\r\n password: this.state.password,\r\n passwordConfirm: this.state.password\r\n }\r\n //para enviar archivos hay que usar el objeto form data de javascript y enviarlo en el parámetro body\r\n let requestInit: RequestInit = {\r\n method: 'POST',\r\n body: JSON.stringify(body),\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n }\r\n }\r\n\r\n fetch('api/account/register', requestInit).then((response) => {\r\n if (response.ok) {\r\n response.json().then(data => {\r\n localStorage.setItem(\"token\", data.token);\r\n window.location.href = \"/\";\r\n });\r\n }\r\n else {\r\n this.setState({\r\n errors: [\"Error desconocido, intente de nuevo\"]\r\n })\r\n }\r\n })\r\n }\r\n\r\n\r\n public render() {\r\n return (\r\n
\r\n
\r\n
\r\n

Registro

\r\n
\r\n
\r\n \r\n ) =>\r\n this.setState({\r\n userName: e.currentTarget.value\r\n })\r\n } />\r\n
\r\n
\r\n \r\n ) =>\r\n this.setState({\r\n password: e.currentTarget.value\r\n })\r\n } />\r\n
\r\n
\r\n \r\n ) =>\r\n this.setState({\r\n confirmPassword: e.currentTarget.value\r\n })\r\n } />\r\n
\r\n
\r\n \r\n
\r\n {this.renderErrors()}\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\nexport default RegisterUser;","import * as React from 'react';\r\nimport { Link } from 'react-router-dom';\r\n\r\nclass UserDashboardSideBar extends React.PureComponent<{}, {}>{\r\n public render() {\r\n return (<>\r\n \r\n )\r\n }\r\n}\r\n\r\nexport default UserDashboardSideBar;","import * as React from 'react';\r\n\r\nconst NoticyOfPrivacy = () => (\r\n
\r\n
\r\n
\r\n

Aviso de Privacidad

\r\n

\r\n El ciudadano Lucio Flores con domicilio en la Colonia Santa Clara Coatitla CP 5540. Ecatepec de Morelos. EdoMex. conforme a lo establecido en la Ley Federal de Protección de Datos en Posesión de Particulares, pone a disposición de nuestro público en general, el Aviso de Privacidad.\r\n

\r\n

\r\n Los datos personales que nos proporciona son utilizados estrictamente en la realización de funciones propias del portal de La Lista Negra del SAT y por ningún motivo serán transferidos a terceros.\r\n

\r\n

\r\n A nuestro público Usuario\r\n

    \r\n
  • Dirección IP
  • \r\n
  • Cadena UserAgent del explorador de internet
  • \r\n
\r\n

\r\n

\r\n A nuestros clientes les solicitamos los siguientes datos personales:\r\n

    \r\n
  • Nombre, teléfono y correo electrónico para facilitar el proceso de contratación de nuestro servicio y/o compra de nuestros productos.
  • \r\n
  • \r\n RFC para completar los datos de facturación y realizar el proceso en cuestión.\r\n
  • \r\n
\r\n

\r\n\r\n

\r\n A nuestros proveedores solicitamos los siguientes datos personales:\r\n

    \r\n
  • Nombre, teléfono, correo electrónico y domicilio para facilitar el proceso de contratación de servicio y/o compra de productos.
  • \r\n
  • Datos bancarios para realizar los pagos correspondientes.
  • \r\n
\r\n

\r\n

\r\n A nuestros empleados solicitamos los siguientes datos personales:\r\n

    \r\n
  • Nombre, teléfono, correo electrónico, domicilio, fecha y lugar de nacimiento.
  • \r\n
  • Antecedentes laborales
  • \r\n
\r\n

\r\n\r\n

\r\n En caso de realizar modificaciones al presente Aviso de Privacidad, le informaremos mediante nuestro sitio web oficial\r\n

\r\n
\r\n
\r\n
\r\n);\r\n\r\nexport default NoticyOfPrivacy;","import * as React from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport IValidateInvoice from '../interfaces/IValidateInvoice';\r\n\r\nclass ValidateInvoice extends React.Component<{}, IValidateInvoice>\r\n{\r\n constructor(props: {}) {\r\n super(props)\r\n this.state = {\r\n file: new Blob(),\r\n validationResult: {\r\n blackListStatus: '',\r\n structure: '',\r\n validationDate: '',\r\n validity: '',\r\n emisorName: '',\r\n emisorRfc: '',\r\n receptorRfc: '',\r\n receptorName: '',\r\n },\r\n errors: []\r\n }\r\n this.sendFile = this.sendFile.bind(this);\r\n this.handleInputFileChange = this.handleInputFileChange.bind(this);\r\n this.renderErrors = this.renderErrors.bind(this);\r\n }\r\n\r\n sendFile(event: React.FormEvent) {\r\n event.preventDefault();\r\n\r\n let url = process.env.NODE_ENV === 'development' ? process.env.REACT_APP_API_URL_DEV : process.env.REACT_APP_API_URL_PROD;\r\n let appKey = process.env.NODE_ENV === 'development' ? process.env.REACT_APP_API_KEY_DEV : process.env.REACT_APP_API_KEY_PROD;\r\n\r\n let formData = new FormData();\r\n if (this.state.file.size == 0) {\r\n this.setState({ errors: ['Seleccione un archivo'] })\r\n return;\r\n }\r\n\r\n formData.append('invoice', this.state.file);\r\n this.setState({\r\n validationResult:{\r\n blackListStatus: '',\r\n structure: '',\r\n validationDate: '',\r\n validity: '',\r\n emisorName: '',\r\n emisorRfc: '',\r\n receptorRfc: '',\r\n receptorName: '',\r\n }\r\n });\r\n fetch(`${url}api/invoice?rfc=FOGL900501K94&appkey=${appKey}`, {\r\n method: 'POST',\r\n body: formData\r\n }).then(res => {\r\n if (res.status === 200) {\r\n res.json().then(data => {\r\n this.setState({\r\n validationResult: {\r\n blackListStatus: data.estatusListaNegra,\r\n structure: data.estructura,\r\n validationDate: data.fechaDeValidacion,\r\n validity: data.vigencia,\r\n emisorRfc: data.emisorRfc,\r\n emisorName: data.emisorNombre,\r\n receptorName: data.receptorNombre,\r\n receptorRfc: data.receptorRfc\r\n },\r\n errors:[]\r\n })\r\n });\r\n }\r\n else {\r\n res.json().then(data => {\r\n if (Array.isArray(data.details)) {\r\n this.setState({ errors: data.details });\r\n }\r\n else {\r\n this.setState({ errors: [data.details] });\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n handleInputFileChange(event: React.FormEvent) {\r\n if (event.currentTarget.files != undefined) {\r\n let file = event.currentTarget.files[0];\r\n this.setState({ file: file });\r\n }\r\n }\r\n\r\n renderErrors() {\r\n const elements = this.state.errors;\r\n return (\r\n
\r\n
\r\n
Errores
\r\n
    \r\n {elements.map((value, index) => {\r\n return
  • {value}
  • \r\n\r\n })}\r\n
\r\n
\r\n
\r\n )\r\n }\r\n\r\n renderValidationResult() {\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n Resultados validación:\r\n
\r\n Emisor: {`${this.state.validationResult.emisorName} (${this.state.validationResult.emisorRfc})`}
\r\n Receptor: {`${this.state.validationResult.receptorName} (${this.state.validationResult.receptorRfc})`}
\r\n Estatus Lista Negra Emisor:: {this.state.validationResult.blackListStatus}
\r\n Estructura: {this.state.validationResult.structure}
\r\n Fecha de validación: {this.state.validationResult.validationDate}
\r\n Vigencia: {this.state.validationResult.validity}
\r\n
\r\n
\r\n
\r\n )\r\n }\r\n\r\n render() {\r\n return (\r\n
\r\n
\r\n
\r\n

Valida tu factura

\r\n

En esta sección del portal puedes validar tu factura en XML.

\r\n

Ingresa el archivo XML y da clic en Validar para conocer el resultado

\r\n
\r\n
\r\n
\r\n
\r\n ) => this.handleInputFileChange(e)} />\r\n
\r\n \r\n
\r\n {this.state.validationResult.blackListStatus.length > 0 && this.renderValidationResult()}\r\n {this.state.errors.length > 0 && this.renderErrors()}\r\n
\r\n
\r\n
\r\n )\r\n }\r\n\r\n}\r\nexport default ValidateInvoice;","import * as React from 'react';\r\nimport {\r\n BrowserRouter,\r\n Route\r\n} from \"react-router-dom\";\r\nimport Layout from './components/Layout';\r\nimport Home from './components/Home';\r\nimport FAQ from './components/FAQ';\r\nimport ForDevelopers from './components/ForDevelopers';\r\nimport Contact from './components/Contact';\r\nimport './custom.css'\r\nimport './dashboard.css'\r\nimport Login from './components/Login';\r\nimport ArchiveHistory from './components/ArchiveHistory';\r\nimport UserDashboard from './components/UserDashboard';\r\nimport UserDashboardRFCs from './components/UserDashboardRFCs';\r\nimport UserDashboardReports from './components/UserDashboardReports';\r\nimport RegisterUser from './components/RegisterUser';\r\nimport UserDashboardSideBar from './components/UserDashboardSideBar';\r\nimport NoticyOfPrivacy from './components/NoticyOfPrivacy';\r\nimport ValidateInvoice from './components/ValidateInvoice';\r\nimport { Switch } from 'react-router';\r\n\r\nfunction LogOut() {\r\n localStorage.removeItem(\"token\");\r\n window.location.href = \"/login\";\r\n return (<>);\r\n}\r\n\r\nlet isLogged = localStorage.getItem(\"token\");\r\n\r\nfunction Dashboard() {\r\n return (
\r\n \r\n \r\n
);\r\n}\r\n\r\n\r\nfunction MyRFC() {\r\n return (
\r\n \r\n \r\n
);\r\n}\r\n\r\n\r\nfunction Reports() {\r\n return (
\r\n \r\n \r\n
);\r\n}\r\n\r\nclass App extends React.Component<{}, {}>{\r\n\r\n private logOut() {\r\n\r\n }\r\n\r\n public ClearCacheData() {\r\n caches.keys().then((names) => {\r\n names.forEach((name) => {\r\n caches.delete(name);\r\n });\r\n });\r\n };\r\n\r\n public render() {\r\n this.ClearCacheData();\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
);\r\n }\r\n}\r\n\r\nexport default App;","// In production, we register a service worker to serve assets from local cache.\r\n\r\n// This lets the app load faster on subsequent visits in production, and gives\r\n// it offline capabilities. However, it also means that developers (and users)\r\n// will only see deployed updates on the \"N+1\" visit to a page, since previously\r\n// cached resources are updated in the background.\r\n\r\n// To learn more about the benefits of this model, read https://goo.gl/KwvDNy.\r\n// This link also includes instructions on opting out of this behavior.\r\n\r\nconst isLocalhost = Boolean(\r\n window.location.hostname === 'localhost' ||\r\n // [::1] is the IPv6 localhost address.\r\n window.location.hostname === '[::1]' ||\r\n // 127.0.0.1/8 is considered localhost for IPv4.\r\n window.location.hostname.match(\r\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\r\n )\r\n);\r\n\r\nexport default function register() {\r\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\r\n // The URL constructor is available in all browsers that support SW.\r\n const url = process.env.PUBLIC_URL as string;\r\n const publicUrl = new URL(url, window.location.toString());\r\n if (publicUrl.origin !== window.location.origin) {\r\n // Our service worker won't work if PUBLIC_URL is on a different origin\r\n // from what our page is served on. This might happen if a CDN is used to\r\n // serve assets; see https://github.com/facebookincubator/create-react-app/issues/2374\r\n return;\r\n }\r\n\r\n window.addEventListener('load', () => {\r\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\r\n\r\n if (isLocalhost) {\r\n // This is running on localhost. Lets check if a service worker still exists or not.\r\n checkValidServiceWorker(swUrl);\r\n } else {\r\n // Is not local host. Just register service worker\r\n registerValidSW(swUrl);\r\n }\r\n });\r\n }\r\n}\r\n\r\nfunction registerValidSW(swUrl: string) {\r\n navigator.serviceWorker\r\n .register(swUrl)\r\n .then(registration => {\r\n registration.onupdatefound = () => {\r\n const installingWorker = registration.installing as ServiceWorker;\r\n installingWorker.onstatechange = () => {\r\n if (installingWorker.state === 'installed') {\r\n if (navigator.serviceWorker.controller) {\r\n // At this point, the old content will have been purged and\r\n // the fresh content will have been added to the cache.\r\n // It's the perfect time to display a \"New content is\r\n // available; please refresh.\" message in your web app.\r\n console.log('New content is available; please refresh.');\r\n } else {\r\n // At this point, everything has been precached.\r\n // It's the perfect time to display a\r\n // \"Content is cached for offline use.\" message.\r\n console.log('Content is cached for offline use.');\r\n }\r\n }\r\n };\r\n };\r\n })\r\n .catch(error => {\r\n console.error('Error during service worker registration:', error);\r\n });\r\n}\r\n\r\nfunction checkValidServiceWorker(swUrl: string) {\r\n // Check if the service worker can be found. If it can't reload the page.\r\n fetch(swUrl)\r\n .then(response => {\r\n // Ensure service worker exists, and that we really are getting a JS file.\r\n const contentType = response.headers.get('content-type');\r\n if (response.status === 404 || (contentType && contentType.indexOf('javascript') === -1)) {\r\n // No service worker found. Probably a different app. Reload the page.\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister().then(() => {\r\n window.location.reload();\r\n });\r\n });\r\n } else {\r\n // Service worker found. Proceed as normal.\r\n registerValidSW(swUrl);\r\n }\r\n })\r\n .catch(() => {\r\n console.log('No internet connection found. App is running in offline mode.');\r\n });\r\n}\r\n\r\nexport function unregister() {\r\n if ('serviceWorker' in navigator) {\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister();\r\n });\r\n }\r\n}\r\n","import 'bootstrap/dist/css/bootstrap.css';\r\n\r\nimport * as React from 'react';\r\nimport * as ReactDOM from 'react-dom';\r\nimport App from './App';\r\nimport unregister from './registerServiceWorker';\r\n\r\nReactDOM.render(\r\n ,\r\n document.getElementById('root'));\r\n\r\nunregister();\r\n//registerServiceWorker();\r\n"],"sourceRoot":""}