{"id":671,"date":"2013-12-09T16:02:12","date_gmt":"2013-12-09T16:02:12","guid":{"rendered":"https:\/\/wade.one\/blog\/?p=671"},"modified":"2013-12-09T16:02:12","modified_gmt":"2013-12-09T16:02:12","slug":"phantomjs-custom-module-require-and-create","status":"publish","type":"post","link":"https:\/\/wade.one\/blog\/2013\/12\/09\/phantomjs-custom-module-require-and-create\/","title":{"rendered":"phantomjs custom module &#8211; require and create"},"content":{"rendered":"<p>Recently I&#8217;ve been working with <a href=\"http:\/\/phantomjs.org\/\" target=\"_blank\">phantomjs<\/a>\u00a0in order to do some on-page control without wanting to use an actual browser (phantomjs is headless and requires no X server to be running).<\/p>\n<p>One of the first things I wanted to do was created custom modules so I could organise my code clearly. I found a surprising lack of information on this topic so decided to quickly write up how I did it so it follows how the included modules work.<\/p>\n<p>To use a custom module, you need to prefix the require with a path (.\/ works fine for the current directory) and exclude the .js extension:<\/p>\n<pre>var mymodule = require('.\/mymodule');<\/pre>\n<p>So in this case, alongside your primary JS file, you&#8217;d have a mymodule.js file.<\/p>\n<p>Next, in mymodule.js, you&#8217;d write code something like this:<\/p>\n<pre>function MyCustomModule(){\r\n...your code here...\r\n}\r\n\r\nMyCustomModule.prototype.someFunction = function(){\r\n...your function code...\r\n};\r\n\r\nexports.create = function(){\r\n    return new MyCustomModule();\r\n};<\/pre>\n<p>This will allow you to return a new instance of your MyCustomModule class while using prototyping.<\/p>\n<p>So going backing to the original require, to create a new instance you could do the following:<\/p>\n<pre>var customModule = require('.\/mymodule').create();<\/pre>\n<p>It&#8217;s really simple and obvious once you see it, there just was no where to see it!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Recently I&#8217;ve been working with phantomjs\u00a0in order to do some on-page control without wanting to use an actual browser (phantomjs is headless and requires no X server to be running). One of the first things I wanted to do was created custom modules so I could organise my code clearly. I found a surprising lack &#8230; <a href=\"https:\/\/wade.one\/blog\/2013\/12\/09\/phantomjs-custom-module-require-and-create\/\" class=\"more-link\">Read More<span class=\"screen-reader-text\"> &#8220;phantomjs custom module &#8211; require and create&#8221;<\/span> &raquo;<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[13],"tags":[],"class_list":["post-671","post","type-post","status-publish","format-standard","hentry","category-programming"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>phantomjs custom module - require and create - wade.one<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/wade.one\/blog\/2013\/12\/09\/phantomjs-custom-module-require-and-create\/\" \/>\n<meta property=\"og:locale\" content=\"en_GB\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"phantomjs custom module - require and create - wade.one\" \/>\n<meta property=\"og:description\" content=\"Recently I&#8217;ve been working with phantomjs\u00a0in order to do some on-page control without wanting to use an actual browser (phantomjs is headless and requires no X server to be running). One of the first things I wanted to do was created custom modules so I could organise my code clearly. I found a surprising lack ... Read More &quot;phantomjs custom module &#8211; require and create&quot; &raquo;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/wade.one\/blog\/2013\/12\/09\/phantomjs-custom-module-require-and-create\/\" \/>\n<meta property=\"og:site_name\" content=\"wade.one\" \/>\n<meta property=\"article:published_time\" content=\"2013-12-09T16:02:12+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/wade.one\/blog\/wp-content\/uploads\/2015\/02\/Wade-Logo-cropped.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1518\" \/>\n\t<meta property=\"og:image:height\" content=\"1506\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Wade\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@wadewomersley\" \/>\n<meta name=\"twitter:site\" content=\"@wadewomersley\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Wade\" \/>\n\t<meta name=\"twitter:label2\" content=\"Estimated reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/wade.one\\\/blog\\\/2013\\\/12\\\/09\\\/phantomjs-custom-module-require-and-create\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/wade.one\\\/blog\\\/2013\\\/12\\\/09\\\/phantomjs-custom-module-require-and-create\\\/\"},\"author\":{\"name\":\"Wade\",\"@id\":\"https:\\\/\\\/wade.one\\\/blog\\\/#\\\/schema\\\/person\\\/f9dedd948575256e77a44aa1417f63de\"},\"headline\":\"phantomjs custom module &#8211; require and create\",\"datePublished\":\"2013-12-09T16:02:12+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/wade.one\\\/blog\\\/2013\\\/12\\\/09\\\/phantomjs-custom-module-require-and-create\\\/\"},\"wordCount\":190,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/wade.one\\\/blog\\\/#\\\/schema\\\/person\\\/8b4739f8f8bb2cff5d792d4b8779fcc3\"},\"articleSection\":[\"Programming\"],\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/wade.one\\\/blog\\\/2013\\\/12\\\/09\\\/phantomjs-custom-module-require-and-create\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/wade.one\\\/blog\\\/2013\\\/12\\\/09\\\/phantomjs-custom-module-require-and-create\\\/\",\"url\":\"https:\\\/\\\/wade.one\\\/blog\\\/2013\\\/12\\\/09\\\/phantomjs-custom-module-require-and-create\\\/\",\"name\":\"phantomjs custom module - require and create - wade.one\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/wade.one\\\/blog\\\/#website\"},\"datePublished\":\"2013-12-09T16:02:12+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/wade.one\\\/blog\\\/2013\\\/12\\\/09\\\/phantomjs-custom-module-require-and-create\\\/#breadcrumb\"},\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/wade.one\\\/blog\\\/2013\\\/12\\\/09\\\/phantomjs-custom-module-require-and-create\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/wade.one\\\/blog\\\/2013\\\/12\\\/09\\\/phantomjs-custom-module-require-and-create\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/wade.one\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"phantomjs custom module &#8211; require and create\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/wade.one\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/wade.one\\\/blog\\\/\",\"name\":\"wade.one\",\"description\":\"wade womersley - york based software engineer\",\"publisher\":{\"@id\":\"https:\\\/\\\/wade.one\\\/blog\\\/#\\\/schema\\\/person\\\/8b4739f8f8bb2cff5d792d4b8779fcc3\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/wade.one\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-GB\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/wade.one\\\/blog\\\/#\\\/schema\\\/person\\\/8b4739f8f8bb2cff5d792d4b8779fcc3\",\"name\":\"Wade Womersley\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\\\/\\\/wade.one\\\/blog\\\/wp-content\\\/uploads\\\/2015\\\/02\\\/200px.png\",\"url\":\"https:\\\/\\\/wade.one\\\/blog\\\/wp-content\\\/uploads\\\/2015\\\/02\\\/200px.png\",\"contentUrl\":\"https:\\\/\\\/wade.one\\\/blog\\\/wp-content\\\/uploads\\\/2015\\\/02\\\/200px.png\",\"width\":202,\"height\":200,\"caption\":\"Wade Womersley\"},\"logo\":{\"@id\":\"https:\\\/\\\/wade.one\\\/blog\\\/wp-content\\\/uploads\\\/2015\\\/02\\\/200px.png\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/wade.one\\\/blog\\\/#\\\/schema\\\/person\\\/f9dedd948575256e77a44aa1417f63de\",\"name\":\"Wade\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/94100ef7361b8aaac136b852c8df93bdd10942165a122d5c56e4466cc403e5d9?s=96&d=retro&r=pg\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/94100ef7361b8aaac136b852c8df93bdd10942165a122d5c56e4466cc403e5d9?s=96&d=retro&r=pg\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/94100ef7361b8aaac136b852c8df93bdd10942165a122d5c56e4466cc403e5d9?s=96&d=retro&r=pg\",\"caption\":\"Wade\"},\"url\":\"https:\\\/\\\/wade.one\\\/blog\\\/author\\\/wade\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"phantomjs custom module - require and create - wade.one","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/wade.one\/blog\/2013\/12\/09\/phantomjs-custom-module-require-and-create\/","og_locale":"en_GB","og_type":"article","og_title":"phantomjs custom module - require and create - wade.one","og_description":"Recently I&#8217;ve been working with phantomjs\u00a0in order to do some on-page control without wanting to use an actual browser (phantomjs is headless and requires no X server to be running). One of the first things I wanted to do was created custom modules so I could organise my code clearly. I found a surprising lack ... Read More \"phantomjs custom module &#8211; require and create\" &raquo;","og_url":"https:\/\/wade.one\/blog\/2013\/12\/09\/phantomjs-custom-module-require-and-create\/","og_site_name":"wade.one","article_published_time":"2013-12-09T16:02:12+00:00","og_image":[{"width":1518,"height":1506,"url":"https:\/\/wade.one\/blog\/wp-content\/uploads\/2015\/02\/Wade-Logo-cropped.png","type":"image\/png"}],"author":"Wade","twitter_card":"summary_large_image","twitter_creator":"@wadewomersley","twitter_site":"@wadewomersley","twitter_misc":{"Written by":"Wade","Estimated reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/wade.one\/blog\/2013\/12\/09\/phantomjs-custom-module-require-and-create\/#article","isPartOf":{"@id":"https:\/\/wade.one\/blog\/2013\/12\/09\/phantomjs-custom-module-require-and-create\/"},"author":{"name":"Wade","@id":"https:\/\/wade.one\/blog\/#\/schema\/person\/f9dedd948575256e77a44aa1417f63de"},"headline":"phantomjs custom module &#8211; require and create","datePublished":"2013-12-09T16:02:12+00:00","mainEntityOfPage":{"@id":"https:\/\/wade.one\/blog\/2013\/12\/09\/phantomjs-custom-module-require-and-create\/"},"wordCount":190,"commentCount":0,"publisher":{"@id":"https:\/\/wade.one\/blog\/#\/schema\/person\/8b4739f8f8bb2cff5d792d4b8779fcc3"},"articleSection":["Programming"],"inLanguage":"en-GB","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/wade.one\/blog\/2013\/12\/09\/phantomjs-custom-module-require-and-create\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/wade.one\/blog\/2013\/12\/09\/phantomjs-custom-module-require-and-create\/","url":"https:\/\/wade.one\/blog\/2013\/12\/09\/phantomjs-custom-module-require-and-create\/","name":"phantomjs custom module - require and create - wade.one","isPartOf":{"@id":"https:\/\/wade.one\/blog\/#website"},"datePublished":"2013-12-09T16:02:12+00:00","breadcrumb":{"@id":"https:\/\/wade.one\/blog\/2013\/12\/09\/phantomjs-custom-module-require-and-create\/#breadcrumb"},"inLanguage":"en-GB","potentialAction":[{"@type":"ReadAction","target":["https:\/\/wade.one\/blog\/2013\/12\/09\/phantomjs-custom-module-require-and-create\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/wade.one\/blog\/2013\/12\/09\/phantomjs-custom-module-require-and-create\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/wade.one\/blog\/"},{"@type":"ListItem","position":2,"name":"phantomjs custom module &#8211; require and create"}]},{"@type":"WebSite","@id":"https:\/\/wade.one\/blog\/#website","url":"https:\/\/wade.one\/blog\/","name":"wade.one","description":"wade womersley - york based software engineer","publisher":{"@id":"https:\/\/wade.one\/blog\/#\/schema\/person\/8b4739f8f8bb2cff5d792d4b8779fcc3"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/wade.one\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-GB"},{"@type":["Person","Organization"],"@id":"https:\/\/wade.one\/blog\/#\/schema\/person\/8b4739f8f8bb2cff5d792d4b8779fcc3","name":"Wade Womersley","image":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/wade.one\/blog\/wp-content\/uploads\/2015\/02\/200px.png","url":"https:\/\/wade.one\/blog\/wp-content\/uploads\/2015\/02\/200px.png","contentUrl":"https:\/\/wade.one\/blog\/wp-content\/uploads\/2015\/02\/200px.png","width":202,"height":200,"caption":"Wade Womersley"},"logo":{"@id":"https:\/\/wade.one\/blog\/wp-content\/uploads\/2015\/02\/200px.png"}},{"@type":"Person","@id":"https:\/\/wade.one\/blog\/#\/schema\/person\/f9dedd948575256e77a44aa1417f63de","name":"Wade","image":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/secure.gravatar.com\/avatar\/94100ef7361b8aaac136b852c8df93bdd10942165a122d5c56e4466cc403e5d9?s=96&d=retro&r=pg","url":"https:\/\/secure.gravatar.com\/avatar\/94100ef7361b8aaac136b852c8df93bdd10942165a122d5c56e4466cc403e5d9?s=96&d=retro&r=pg","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/94100ef7361b8aaac136b852c8df93bdd10942165a122d5c56e4466cc403e5d9?s=96&d=retro&r=pg","caption":"Wade"},"url":"https:\/\/wade.one\/blog\/author\/wade\/"}]}},"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack-related-posts":[{"id":982,"url":"https:\/\/wade.one\/blog\/2016\/04\/02\/useful-tidbits-for-raspberry-pi-users-on-raspian-aka-things-i-wish-i-knew-quickereasier\/","url_meta":{"origin":671,"position":0},"title":"Useful tidbits for Raspberry pi users on Raspian &#8211; aka things I wish I knew quicker\/easier","author":"Wade","date":"April 2, 2016","format":false,"excerpt":"I love my Pi2 and my Pi3, they're amazing pieces of cheap kit I can do anything with - although to be honest I don't use them anywhere near as much as I should. So here is a compilation of things I found useful this last week when I finally\u2026","rel":"","context":"In &quot;Programming&quot;","block_context":{"text":"Programming","link":"https:\/\/wade.one\/blog\/category\/programming\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/wade.one\/blog\/wp-content\/uploads\/2016\/04\/IMG_4090.jpg?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/wade.one\/blog\/wp-content\/uploads\/2016\/04\/IMG_4090.jpg?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/wade.one\/blog\/wp-content\/uploads\/2016\/04\/IMG_4090.jpg?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/wade.one\/blog\/wp-content\/uploads\/2016\/04\/IMG_4090.jpg?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/wade.one\/blog\/wp-content\/uploads\/2016\/04\/IMG_4090.jpg?resize=1050%2C600&ssl=1 3x, https:\/\/i0.wp.com\/wade.one\/blog\/wp-content\/uploads\/2016\/04\/IMG_4090.jpg?resize=1400%2C800&ssl=1 4x"},"classes":[]},{"id":1149,"url":"https:\/\/wade.one\/blog\/2026\/03\/25\/typescript-6-0-is-out-what-actually-matters\/","url_meta":{"origin":671,"position":1},"title":"TypeScript 6.0 Is Out: What Actually Matters","author":"Wade","date":"March 25, 2026","format":false,"excerpt":"TypeScript 6.0 is now live, but the main story is not flashy syntax. It is the upgrade work you should do now before TypeScript 7 lands.","rel":"","context":"In &quot;Programming&quot;","block_context":{"text":"Programming","link":"https:\/\/wade.one\/blog\/category\/programming\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1154,"url":"https:\/\/wade.one\/blog\/2026\/03\/25\/typescript-7-0-looks-like-the-bigger-story\/","url_meta":{"origin":671,"position":2},"title":"TypeScript 7.0 Looks Like the Bigger Story","author":"Wade","date":"March 25, 2026","format":false,"excerpt":"TypeScript 6.0 matters, but TypeScript 7.0 looks like the real shift. The native compiler work is the part I think most teams should actually care about.","rel":"","context":"In &quot;Programming&quot;","block_context":{"text":"Programming","link":"https:\/\/wade.one\/blog\/category\/programming\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":764,"url":"https:\/\/wade.one\/blog\/2015\/02\/07\/standardising-logging-and-parallelisation-in-multiple-languages\/","url_meta":{"origin":671,"position":3},"title":"Standardising logging and parallelisation in multiple languages","author":"Wade","date":"February 7, 2015","format":false,"excerpt":"Over the last few days I've been working on interfaces to use across multiple programming languages to standardise how some things are done. This stemmed from a requirement to allow processing to be dealt with in any language from any other language. People do this all the time, it's nothing\u2026","rel":"","context":"In &quot;Programming&quot;","block_context":{"text":"Programming","link":"https:\/\/wade.one\/blog\/category\/programming\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/wade.one\/blog\/wp-content\/uploads\/2015\/02\/source-code-583537_640.jpg?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/wade.one\/blog\/wp-content\/uploads\/2015\/02\/source-code-583537_640.jpg?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/wade.one\/blog\/wp-content\/uploads\/2015\/02\/source-code-583537_640.jpg?resize=525%2C300&ssl=1 1.5x"},"classes":[]},{"id":31,"url":"https:\/\/wade.one\/blog\/2009\/09\/02\/another-day-another-group-of-php-funness\/","url_meta":{"origin":671,"position":4},"title":"Another day, another group of PHP &#8220;funness&#8221;","author":"Wade","date":"September 2, 2009","format":false,"excerpt":"PHP and Serializing...don't try and store the result in a plain text file, there's just a chance you may end up storing NUL so when you go to read a line, you'll end up only reading part of it (the serialized object had a stack trace in it from an\u2026","rel":"","context":"In &quot;Programming&quot;","block_context":{"text":"Programming","link":"https:\/\/wade.one\/blog\/category\/programming\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1109,"url":"https:\/\/wade.one\/blog\/2023\/03\/26\/php-8-2-vs-7-4\/","url_meta":{"origin":671,"position":5},"title":"PHP 8.2 vs 7.4","author":"Wade","date":"March 26, 2023","format":false,"excerpt":"PHP is a widely used programming language that has been evolving rapidly in recent years. PHP 8.2 is the latest release, which came out on November 25th, 2021. This version brings several improvements, new features, and bug fixes, making it more efficient and secure than PHP 7.4. In this blog\u2026","rel":"","context":"In &quot;PHP&quot;","block_context":{"text":"PHP","link":"https:\/\/wade.one\/blog\/category\/php\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"_links":{"self":[{"href":"https:\/\/wade.one\/blog\/wp-json\/wp\/v2\/posts\/671","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wade.one\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wade.one\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wade.one\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wade.one\/blog\/wp-json\/wp\/v2\/comments?post=671"}],"version-history":[{"count":1,"href":"https:\/\/wade.one\/blog\/wp-json\/wp\/v2\/posts\/671\/revisions"}],"predecessor-version":[{"id":672,"href":"https:\/\/wade.one\/blog\/wp-json\/wp\/v2\/posts\/671\/revisions\/672"}],"wp:attachment":[{"href":"https:\/\/wade.one\/blog\/wp-json\/wp\/v2\/media?parent=671"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wade.one\/blog\/wp-json\/wp\/v2\/categories?post=671"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wade.one\/blog\/wp-json\/wp\/v2\/tags?post=671"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}