Marketplace móvil para negocios locales mexicanos. Estructura inicial: - apps/backend (NestJS API) - apps/frontend (React Web) - apps/mobile (Expo/React Native) - apps/mcp-server (Claude MCP Server) - apps/whatsapp-service (WhatsApp Business API) - database/ (PostgreSQL DDL) - docs/ (Documentación) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
21 lines
1.0 KiB
JavaScript
21 lines
1.0 KiB
JavaScript
import assertString from './util/assertString';
|
|
|
|
/* Based on https://tools.ietf.org/html/rfc3339#section-5.6 */
|
|
|
|
var dateFullYear = /[0-9]{4}/;
|
|
var dateMonth = /(0[1-9]|1[0-2])/;
|
|
var dateMDay = /([12]\d|0[1-9]|3[01])/;
|
|
var timeHour = /([01][0-9]|2[0-3])/;
|
|
var timeMinute = /[0-5][0-9]/;
|
|
var timeSecond = /([0-5][0-9]|60)/;
|
|
var timeSecFrac = /(\.[0-9]+)?/;
|
|
var timeNumOffset = new RegExp("[-+]".concat(timeHour.source, ":").concat(timeMinute.source));
|
|
var timeOffset = new RegExp("([zZ]|".concat(timeNumOffset.source, ")"));
|
|
var partialTime = new RegExp("".concat(timeHour.source, ":").concat(timeMinute.source, ":").concat(timeSecond.source).concat(timeSecFrac.source));
|
|
var fullDate = new RegExp("".concat(dateFullYear.source, "-").concat(dateMonth.source, "-").concat(dateMDay.source));
|
|
var fullTime = new RegExp("".concat(partialTime.source).concat(timeOffset.source));
|
|
var rfc3339 = new RegExp("^".concat(fullDate.source, "[ tT]").concat(fullTime.source, "$"));
|
|
export default function isRFC3339(str) {
|
|
assertString(str);
|
|
return rfc3339.test(str);
|
|
} |