UNPKG

renew-ip

Version:

A module for renewing 4G/LTE IP addresses on tethered Android phones from Node JS.

1 lines 7.65 kB
{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":";;;;AAAA,4DAA2B;AAC3B,6BAAuB;AAEvB;;;GAGG;AACU,QAAA,qBAAqB,GAAG,OAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAA;AAE/D;;;GAGG;AACU,QAAA,2BAA2B,GAAG,OAAC,CAAC,KAAK,CAAC;IACjD,OAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC;IACjB,OAAC,CAAC,MAAM,EAAE;CACX,CAAC,CAAA;AAEF;;;GAGG;AACU,QAAA,SAAS,GAAG,OAAC,CAAC,MAAM,CAAC;IAChC,iBAAiB,EAAE,OAAC,CAAC,MAAM,EAAE;IAC7B,gBAAgB,EAAE,OAAC,CAAC,MAAM,EAAE;IAC5B,mBAAmB,EAAE,6BAAqB,CAAC,OAAO,CAAC,QAAQ,CAAC;IAC5D,0BAA0B,EAAE,mCAA2B,CAAC,OAAO,CAAC,OAAO,CAAC;IACxE,uBAAuB,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAC9C,gBAAgB,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAC1C,aAAa,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACpC,YAAY,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IACtC,YAAY,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IACvC,cAAc,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC;CAC3C,CAAC,CAAA;AAEF;;;GAGG;AACU,QAAA,GAAG,GAA8B,iBAAS,CAAC,KAAK,CAC3D,gBAAM,CAAC,MAAM,EAAE,CAAC,MAAM,IAAI,EAAE,CAC7B,CAAA;AACD;;;GAGG;AACU,QAAA,qBAAqB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC5C,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,WAAG,CAAC,iBAAiB,CAAC;IACjD,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,WAAG,CAAC,gBAAgB,CAAC;IAC5C,QAAQ,EAAE,6BAAqB,CAAC,OAAO,CAAC,WAAG,CAAC,mBAAmB,CAAC;IAChE,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,OAAO,EAAE,mCAA2B,CAAC,OAAO,CAAC,WAAG,CAAC,0BAA0B,CAAC;CAC7E,CAAC,CAAA;AAEF;;;GAGG;AACU,QAAA,kBAAkB,GAAG,OAAC,CAAC,KAAK,CACvC,OAAC,CAAC,IAAI,CAAC;IACL,IAAI;IACJ,MAAM;IACN,QAAQ;IACR,aAAa;IACb,QAAQ;IACR,cAAc;IACd,cAAc;IACd,KAAK;IACL,SAAS;IACT,WAAW;IACX,QAAQ;CACT,CAAC,CACH,CAAA;AAED;;;GAGG;AACU,QAAA,kBAAkB,GAAG,OAAC,CAAC,MAAM,CAAC;IACzC,GAAG,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,WAAG,CAAC,cAAc,CAAC;IAC3C,MAAM,EAAE,0BAAkB,CAAC,OAAO,CAAC;QACjC,IAAI;QACJ,MAAM;QACN,QAAQ;QACR,aAAa;QACb,QAAQ;QACR,cAAc;QACd,cAAc;QACd,KAAK;QACL,SAAS;QACT,WAAW;QACX,QAAQ;KACT,CAAC;CACH,CAAC,CAAA;AAEF;;;GAGG;AACU,QAAA,kBAAkB,GAAG,6BAAqB,CAAC,MAAM,CAAC;IAC7D,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,WAAG,CAAC,uBAAuB,CAAC;IAC5D,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,WAAG,CAAC,gBAAgB,CAAC;IAC/C,MAAM,EAAE,0BAAkB,CAAC,OAAO,CAAC,EAAE,CAAC;CACvC,CAAC,CAAA;AAEF;;;GAGG;AACU,QAAA,yBAAyB,GAAG,0BAAkB,CAAC,WAAW,EAAE,CAAA;AAEzE;;;GAGG;AACU,QAAA,oBAAoB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC3C,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE;IACd,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,YAAY,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACnC,YAAY,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACnC,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,SAAS,EAAE,OAAC;SACT,MAAM,CAAC;QACN,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE;QAChB,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE;QAChB,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE;QAClB,MAAM,EAAE,OAAC,CAAC,OAAO,EAAE;QACnB,YAAY,EAAE,OAAC,CAAC,MAAM,EAAE;KACzB,CAAC;SACD,QAAQ,EAAE;IACb,MAAM,EAAE,OAAC;SACN,MAAM,CAAC;QACN,MAAM,EAAE,OAAC,CAAC,OAAO,EAAE;QACnB,QAAQ,EAAE,OAAC,CAAC,OAAO,EAAE;QACrB,YAAY,EAAE,OAAC,CAAC,OAAO,EAAE;QACzB,iBAAiB,EAAE,OAAC,CAAC,OAAO,EAAE;QAC9B,eAAe,EAAE,OAAC,CAAC,OAAO,EAAE;QAC5B,SAAS,EAAE,OAAC,CAAC,OAAO,EAAE;QACtB,QAAQ,EAAE,OAAC,CAAC,OAAO,EAAE;KACtB,CAAC;SACD,QAAQ,EAAE;IACb,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,aAAa,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACrC,CAAC,CAAA;AAEF;;;GAGG;AACU,QAAA,eAAe,GAAG,4BAAoB,CAAC,MAAM,CAAC;IACzD,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE;IACd,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE;CACtB,CAAC,CAAA","sourcesContent":["import dotenv from \"dotenv\"\nimport { z } from \"zod\"\n\n/**\n * Define the priority level options.\n * @type {z.ZodEnum}\n */\nexport const RenewalPrioritySchema = z.enum([\"normal\", \"high\"])\n\n/**\n * Define the trigger expected in the Automate payload.\n * @type {z.ZodEnum}\n */\nexport const RenewalPayloadContentSchema = z.union([\n z.enum([\"renew\"]),\n z.string()\n])\n\n/**\n * Define a validation schema for environment variables.\n * @type {z.ZodObject}\n */\nexport const EnvSchema = z.object({\n IP_RENEWAL_SECRET: z.string(),\n IP_RENEWAL_EMAIL: z.string(),\n IP_RENEWAL_PRIORITY: RenewalPrioritySchema.default(\"normal\"),\n IP_RENEWAL_PAYLOAD_CONTENT: RenewalPayloadContentSchema.default(\"renew\"),\n IP_RENEWAL_MAX_ATTEMPTS: z.number().default(3),\n IP_RENEWAL_DELAY: z.number().default(1000),\n POLL_ATTEMPTS: z.number().default(5),\n POLL_TIMEOUT: z.number().default(3000),\n TOGGLE_DELAY: z.number().default(15000),\n IPDATA_API_KEY: z.string().default(\"test\")\n})\n\n/**\n * Exports a typed env file.\n * @type {RouterEnv}\n */\nexport const env: z.infer<typeof EnvSchema> = EnvSchema.parse(\n dotenv.config().parsed || {}\n)\n/**\n * Define a validation schema for the request sent to the Automate endpoint.\n * @type {z.ZodObject}\n */\nexport const AutomatePayloadSchema = z.object({\n secret: z.string().default(env.IP_RENEWAL_SECRET),\n to: z.string().default(env.IP_RENEWAL_EMAIL),\n priority: RenewalPrioritySchema.default(env.IP_RENEWAL_PRIORITY),\n device: z.string().optional(),\n payload: RenewalPayloadContentSchema.default(env.IP_RENEWAL_PAYLOAD_CONTENT)\n})\n\n/**\n * Define the possible values for IPData field selection.\n * @type {z.ZodArray}\n */\nexport const IpDataFieldsSchema = z.array(\n z.enum([\n \"ip\",\n \"city\",\n \"region\",\n \"region_code\",\n \"postal\",\n \"country_name\",\n \"country_code\",\n \"asn\",\n \"carrier\",\n \"time_zone\",\n \"threat\"\n ])\n)\n\n/**\n * Define validation schema for IPData vendor config.\n * @type {z.ZodObject}\n */\nexport const IpDataConfigSchema = z.object({\n key: z.string().default(env.IPDATA_API_KEY),\n fields: IpDataFieldsSchema.default([\n \"ip\",\n \"city\",\n \"region\",\n \"region_code\",\n \"postal\",\n \"country_name\",\n \"country_code\",\n \"asn\",\n \"carrier\",\n \"time_zone\",\n \"threat\"\n ])\n})\n\n/**\n * Define a validation schema for top level router config which extends the Automate schema.\n * @type {z.ZodObject}\n */\nexport const RouterConfigSchema = AutomatePayloadSchema.extend({\n maxAttempts: z.number().default(env.IP_RENEWAL_MAX_ATTEMPTS),\n delay: z.number().default(env.IP_RENEWAL_DELAY),\n ipdata: IpDataConfigSchema.default({})\n})\n\n/**\n * Define a partial of the base router config to allow passing incomplete configs.\n * @type {z.ZodObject}\n */\nexport const PartialRouterConfigSchema = RouterConfigSchema.deepPartial()\n\n/**\n * Define the schema for an expected response from the IPData vendor service.\n * @type {z.ZodObject}\n */\nexport const IpDataResponseSchema = z.object({\n ip: z.string(),\n city: z.string().optional(),\n region: z.string().optional(),\n region_code: z.string().optional(),\n country_name: z.string().optional(),\n country_code: z.string().optional(),\n postal: z.string().optional(),\n time_zone: z\n .object({\n name: z.string(),\n abbr: z.string(),\n offset: z.string(),\n is_dst: z.boolean(),\n current_time: z.string()\n })\n .optional(),\n threat: z\n .object({\n is_tor: z.boolean(),\n is_proxy: z.boolean(),\n is_anonymous: z.boolean(),\n is_known_attacker: z.boolean(),\n is_known_abuser: z.boolean(),\n is_threat: z.boolean(),\n is_bogon: z.boolean()\n })\n .optional(),\n statusCode: z.number().optional(),\n statusMessage: z.string().optional()\n})\n\n/**\n * Define the shape of IP history records.\n * @type {z.ZodObject}\n */\nexport const IpHistorySchema = IpDataResponseSchema.extend({\n ip: z.string(),\n timestamp: z.number()\n})\n"]}