govuk_publishing_components 16.18.0 → 16.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d090a080c10033952f1ac19354eb5c1b8a3a6290f4c2fca3a7733b31496e871b
4
- data.tar.gz: 8bd7cf1abf0ab7c69a260cae338ac2c34afbc4bb0bb8bd043da057e4ec90ff46
3
+ metadata.gz: fbca39d94e05ae06beee0e1af782b21e582dab064e8011dc78e4b8e718be79df
4
+ data.tar.gz: 4163e6b84aa536d51f044042a2e90f30a5e86100e79a59b61ba1a03b149883cd
5
5
  SHA512:
6
- metadata.gz: bf11d37fb9ea41516d4330ce8d220aa7b8191ea53599f977ceebde9ffc381eadfd207d5caedcadcbda8a018bf0b667b5b87ba8ebd7170406d3c67a3afda33749
7
- data.tar.gz: 6803e2390d56bfd216cf26645447d4eebbb7ba2005d462f1ee6964d364dc23bbc8040b1a0eb13b223f3e072587cc46193ce0d5ea2645bf744649bebee126fb16
6
+ metadata.gz: d029cae28cc95720bd890d404860e06960dbe76ef931be0bb40f84e71197e2fa88e79b34a1dd46531e3882d97f370b10553e20786dec47850cd1e33f4d307349
7
+ data.tar.gz: ec1bf64a9309f27c01d15f5c82ee3062fc004723d011023ca78bef45d01628796b01e26e05f66399513c17495f760926db2983c1b748fcbd8f6ea05804ab6606
@@ -6,6 +6,11 @@
6
6
  // - alphagov/govspeak: ✔︎
7
7
 
8
8
  .gem-c-govspeak {
9
+
10
+ // Scope attachment and attachment-link component styles to gem-c-govspeak
11
+ @import "../attachment-link";
12
+ @import "../attachment";
13
+
9
14
  // This block is duplicated from Whitehall as a transitional step, see the
10
15
  // commit message for 2d893c10ee3f2cab27162b9aba38b12379a71d07 before making
11
16
  // changes, original version:
@@ -1,7 +1,7 @@
1
1
  <% component = capture do %>
2
2
  <% if example.has_block? %>
3
3
  <%= render component_doc.partial_path, example.html_safe_data do %>
4
- <%= example.block.html_safe %>
4
+ <%= render inline: example.block %>
5
5
  <% end %>
6
6
  <% else %>
7
7
  <%= render component_doc.partial_path, example.html_safe_data %>
@@ -9,7 +9,7 @@
9
9
  <% end %>
10
10
 
11
11
  <% if example.has_embed? %>
12
- <%= ERB.new(example.embed).result(binding).html_safe %>
12
+ <%= render inline: example.embed, locals: { component: component } %>
13
13
  <% else %>
14
14
  <%= component %>
15
15
  <% end %>
@@ -6,6 +6,9 @@
6
6
  <%# Rendering step by step nav breadcrumbs because there's 1 step by step %>
7
7
  <%= render 'govuk_publishing_components/components/step_by_step_nav_header',
8
8
  navigation.step_nav_helper.header %>
9
+ <% elsif navigation.content_tagged_to_a_finder? %>
10
+ <%# Rendering finder breadcrumbs because the page is tagged to a finder %>
11
+ <%= render 'govuk_publishing_components/components/breadcrumbs', breadcrumbs: navigation.breadcrumbs %>
9
12
  <% elsif navigation.content_is_tagged_to_a_live_taxon? && prioritise_taxon_breadcrumbs %>
10
13
  <%# Rendering taxonomy breadcrumbs because the page is tagged to live taxons
11
14
  and we want to prioritise them over all other breadcrumbs %>
@@ -54,3 +54,18 @@ examples:
54
54
  content_type: text/plain
55
55
  file_size: 108515
56
56
  hide_help_text: true
57
+ embedded_in_govspeak:
58
+ description: |
59
+ This component can be embedded in Govspeak with the `[Attachment:]` code.
60
+ embed: |
61
+ <%= render "govuk_publishing_components/components/govspeak" do %>
62
+ <p>Some text.</p>
63
+ <%= component %>
64
+ <% end %>
65
+ data:
66
+ attachment:
67
+ title: "BEIS Information Asset Register"
68
+ url: https://assets.publishing.service.gov.uk/government/uploads/system/uploads/attachment_data/file/744083/BEIS_Information_Asset_Register_.ods
69
+ filename: BEIS_Information_Asset_Register_.ods
70
+ content_type: application/vnd.oasis.opendocument.spreadsheet
71
+ file_size: 20000
@@ -39,6 +39,21 @@ examples:
39
39
  content_type: application/pdf
40
40
  file_size: 20000
41
41
  number_of_pages: 1
42
+ embedded_in_govspeak:
43
+ description: |
44
+ This component can be embedded in Govspeak with the `[AttachmentLink:]` code.
45
+ embed: |
46
+ <%= render "govuk_publishing_components/components/govspeak" do %>
47
+ <p>Some introductory information about <%= component %>.</p>
48
+ <% end %>
49
+ data:
50
+ attachment:
51
+ title: "Temporary snow ploughs: guidance note"
52
+ url: https://assets.publishing.service.gov.uk/government/uploads/system/uploads/attachment_data/file/259634/temporary-snow-ploughs.pdf
53
+ filename: temporary-snow-ploughs.pdf
54
+ content_type: application/pdf
55
+ file_size: 20000
56
+ number_of_pages: 1
42
57
  with_target_blank:
43
58
  data:
44
59
  attachment:
@@ -374,14 +374,43 @@ examples:
374
374
  </li>
375
375
  </ol>
376
376
  </div>
377
+ attachment_link:
378
+ description: Attachment link component rendered within Govspeak
379
+ data:
380
+ block: |
381
+ <p>
382
+ A reference to my
383
+ <%= render "govuk_publishing_components/components/attachment_link",
384
+ attachment: { url: "https://example.com/file.pdf",
385
+ title: "Attachment",
386
+ file_size: 1024,
387
+ content_type: "application/pdf",
388
+ number_of_pages: 2 }
389
+ %>
390
+ that is in my paragraph.
391
+ </p>
392
+ attachment:
393
+ description: Attachment component rendered within Govspeak
394
+ data:
395
+ block: |
396
+ <p>An attachment as a block</p>
397
+
398
+ <%= render "govuk_publishing_components/components/attachment",
399
+ attachment: { url: "https://example.com/file.odt",
400
+ title: "Attachment",
401
+ file_size: 1024,
402
+ content_type: "application/vnd.oasis.opendocument.text" }
403
+ %>
377
404
  inline_attachment:
405
+ description: Legacy inline attachment embed used by Whitehall and Specialist Publisher
378
406
  data:
379
407
  block: |
380
408
  <p>testing my attachment <span class="inline-attachment" id="attachment_1399340">
381
409
  <a href="/government/uploads/system/uploads/attachment_data/file/498071/PHE_Payments_over__25k_Jun_15.csv">testing</a>
382
410
  (<span class="type"><abbr title="Comma-separated Values">CSV</abbr></span>, <span class="file-size">65.4KB</span>)</span> works in the middle of copy.
383
411
  </p>
384
- block_attachments:
412
+ whitehall_block_attachments:
413
+ description: Attachments rendered by govspeak extensions within Whitehall
385
414
  data:
386
415
  block: |
387
416
  <section class="attachment embedded" id="attachment_1399345">
@@ -521,7 +550,8 @@ examples:
521
550
  </p>
522
551
  </div>
523
552
  </section>
524
- block_attachment_rtl:
553
+ whitehall_block_attachment_rtl:
554
+ description: Attachments rendered by govspeak extensions within Whitehall
525
555
  data:
526
556
  direction: rtl
527
557
  block: |
@@ -21,7 +21,7 @@ module GovukPublishingComponents
21
21
  end
22
22
 
23
23
  def breadcrumbs
24
- if content_is_a_specialist_document?
24
+ if content_tagged_to_a_finder?
25
25
  parent_finder = content_item.dig("links", "finder", 0)
26
26
  return [] unless parent_finder
27
27
 
@@ -40,6 +40,10 @@ module GovukPublishingComponents
40
40
  end
41
41
  end
42
42
 
43
+ def content_tagged_to_a_finder?
44
+ content_item.dig("links", "finder").present?
45
+ end
46
+
43
47
  def content_tagged_to_mainstream_browse_pages?
44
48
  content_item.dig("links", "mainstream_browse_pages").present?
45
49
  end
@@ -1,3 +1,3 @@
1
1
  module GovukPublishingComponents
2
- VERSION = '16.18.0'.freeze
2
+ VERSION = '16.19.0'.freeze
3
3
  end
@@ -49,7 +49,7 @@
49
49
  "/"
50
50
  ],
51
51
  "_resolved": "git://github.com/alphagov/accessible-autocomplete.git#0c518b4fa79b9a95b544410858486ed9e6403c84",
52
- "_shasum": "646ef91bb4b51cb7d08732054c406475491bca2e",
52
+ "_shasum": "5e8e39c6fda8e9ab73c042da6750e02b8742650c",
53
53
  "_shrinkwrap": null,
54
54
  "_spec": "accessible-autocomplete@git://github.com/alphagov/accessible-autocomplete.git#add-multiselect-support",
55
55
  "_where": "/var/lib/jenkins/workspace/ublishing_components_master-N4FWJIUY4CIFHKGZOAAEVVXODRY3YBORQOPIBBXWX72VUPSGJRRQ",
@@ -2,7 +2,11 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. Dates are displayed in UTC.
4
4
 
5
- #### [Unreleased](https://github.com/browserify/resolve/compare/v1.10.0...HEAD)
5
+ #### [Unreleased](https://github.com/browserify/resolve/compare/v1.11.0...HEAD)
6
+
7
+ #### [v1.11.0](https://github.com/browserify/resolve/compare/v1.10.1...v1.11.0) - 15 May 2019
8
+ - [New] Add `isDirectory`; use to speed up `node_modules` lookups (#192, #191, #190)
9
+ - [Tests] up to `node` `v12.2`, `v11.15`, `v6.17`
6
10
 
7
11
  #### [v1.10.1](https://github.com/browserify/resolve/compare/v1.10.0...v1.10.1) - 23 April 2019
8
12
  - [Fix] `core`: 6 `v8/` core modules and 3 `node-inspect/` core modules no longer exist in node 12 ([`b54d33a`][])
@@ -15,6 +15,16 @@ var defaultIsFile = function isFile(file, cb) {
15
15
  });
16
16
  };
17
17
 
18
+ var defaultIsDir = function isDirectory(dir, cb) {
19
+ fs.stat(dir, function (err, stat) {
20
+ if (!err) {
21
+ return cb(null, stat.isDirectory());
22
+ }
23
+ if (err.code === 'ENOENT' || err.code === 'ENOTDIR') return cb(null, false);
24
+ return cb(err);
25
+ });
26
+ };
27
+
18
28
  module.exports = function resolve(x, options, callback) {
19
29
  var cb = callback;
20
30
  var opts = options;
@@ -32,6 +42,7 @@ module.exports = function resolve(x, options, callback) {
32
42
  opts = normalizeOptions(x, opts);
33
43
 
34
44
  var isFile = opts.isFile || defaultIsFile;
45
+ var isDirectory = opts.isDirectory || defaultIsDir;
35
46
  var readFile = opts.readFile || fs.readFile;
36
47
 
37
48
  var extensions = opts.extensions || ['.js'];
@@ -208,8 +219,14 @@ module.exports = function resolve(x, options, callback) {
208
219
  if (dirs.length === 0) return cb(null, undefined);
209
220
  var dir = dirs[0];
210
221
 
211
- var file = path.join(dir, x);
212
- loadAsFile(file, opts.package, onfile);
222
+ isDirectory(dir, isdir);
223
+
224
+ function isdir(err, isdir) {
225
+ if (err) return cb(err);
226
+ if (!isdir) return processDirs(cb, dirs.slice(1));
227
+ var file = path.join(dir, x);
228
+ loadAsFile(file, opts.package, onfile);
229
+ }
213
230
 
214
231
  function onfile(err, m, pkg) {
215
232
  if (err) return cb(err);
@@ -15,6 +15,16 @@ var defaultIsFile = function isFile(file) {
15
15
  return stat.isFile() || stat.isFIFO();
16
16
  };
17
17
 
18
+ var defaultIsDir = function isDirectory(dir) {
19
+ try {
20
+ var stat = fs.statSync(dir);
21
+ } catch (e) {
22
+ if (e && (e.code === 'ENOENT' || e.code === 'ENOTDIR')) return false;
23
+ throw e;
24
+ }
25
+ return stat.isDirectory();
26
+ };
27
+
18
28
  module.exports = function (x, options) {
19
29
  if (typeof x !== 'string') {
20
30
  throw new TypeError('Path must be a string.');
@@ -23,6 +33,7 @@ module.exports = function (x, options) {
23
33
 
24
34
  var isFile = opts.isFile || defaultIsFile;
25
35
  var readFileSync = opts.readFileSync || fs.readFileSync;
36
+ var isDirectory = opts.isDirectory || defaultIsDir;
26
37
 
27
38
  var extensions = opts.extensions || ['.js'];
28
39
  var basedir = opts.basedir || path.dirname(caller());
@@ -145,10 +156,12 @@ module.exports = function (x, options) {
145
156
  var dirs = nodeModulesPaths(start, opts, x);
146
157
  for (var i = 0; i < dirs.length; i++) {
147
158
  var dir = dirs[i];
148
- var m = loadAsFileSync(path.join(dir, '/', x));
149
- if (m) return m;
150
- var n = loadAsDirectorySync(path.join(dir, '/', x));
151
- if (n) return n;
159
+ if (isDirectory(dir)) {
160
+ var m = loadAsFileSync(path.join(dir, '/', x));
161
+ if (m) return m;
162
+ var n = loadAsDirectorySync(path.join(dir, '/', x));
163
+ if (n) return n;
164
+ }
152
165
  }
153
166
  }
154
167
  };
@@ -15,13 +15,13 @@
15
15
  ],
16
16
  "_from": "resolve@>=1.6.0 <2.0.0",
17
17
  "_hasShrinkwrap": false,
18
- "_id": "resolve@1.10.1",
18
+ "_id": "resolve@1.11.0",
19
19
  "_inCache": true,
20
20
  "_location": "/resolve",
21
- "_nodeVersion": "12.0.0",
21
+ "_nodeVersion": "12.1.0",
22
22
  "_npmOperationalInternal": {
23
23
  "host": "s3://npm-registry-packages",
24
- "tmp": "tmp/resolve_1.10.1_1556087887537_0.9559557636826803"
24
+ "tmp": "tmp/resolve_1.11.0_1557946811120_0.4088999308496508"
25
25
  },
26
26
  "_npmUser": {
27
27
  "name": "ljharb",
@@ -44,8 +44,8 @@
44
44
  "/eslint-plugin-node",
45
45
  "/normalize-package-data"
46
46
  ],
47
- "_resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.1.tgz",
48
- "_shasum": "664842ac960795bbe758221cdccda61fb64b5f18",
47
+ "_resolved": "https://registry.npmjs.org/resolve/-/resolve-1.11.0.tgz",
48
+ "_shasum": "4014870ba296176b86343d50b60f3b50609ce232",
49
49
  "_shrinkwrap": null,
50
50
  "_spec": "resolve@^1.6.0",
51
51
  "_where": "/var/lib/jenkins/workspace/ublishing_components_master-N4FWJIUY4CIFHKGZOAAEVVXODRY3YBORQOPIBBXWX72VUPSGJRRQ/node_modules/eslint-plugin-import",
@@ -71,14 +71,14 @@
71
71
  },
72
72
  "directories": {},
73
73
  "dist": {
74
- "integrity": "sha512-KuIe4mf++td/eFb6wkaPbMDnP6kObCaEtIDuHOUED6MNUo4K670KZUHuuvYPZDxNF0WVLw49n06M2m2dXphEzA==",
75
- "shasum": "664842ac960795bbe758221cdccda61fb64b5f18",
76
- "tarball": "https://registry.npmjs.org/resolve/-/resolve-1.10.1.tgz",
74
+ "integrity": "sha512-WL2pBDjqT6pGUNSUzMw00o4T7If+z4H2x3Gz893WoUQ5KW8Vr9txp00ykiP16VBaZF5+j/OcXJHZ9+PCvdiDKw==",
75
+ "shasum": "4014870ba296176b86343d50b60f3b50609ce232",
76
+ "tarball": "https://registry.npmjs.org/resolve/-/resolve-1.11.0.tgz",
77
77
  "fileCount": 85,
78
- "unpackedSize": 136156,
79
- "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcwARQCRA9TVsSAnZWagAA7YYP/1mAf/vIUVUF3+8CxUDD\n6XUe53f1BKsMwfv1+S+OW9yXQhKsBf8feqfgmeuJ/ejmKqBvDDfVqp4veUEx\njmQ7I1NRsUFkZwoFvhaUeAyr+kqLEVjqBkWGOFRv+8oPeLr19a78X/FkrsLz\naEq5xzyznqtU0GZWvEK2ecVazl38vEJTM4FoVvnFk2mS5e/z/h/7oSjA4o47\nuEsZtKakykBwmKspbyJ8wCt/oq96LfFctHZ56Q21nHyUgsSMPvFaA5xXVlBY\nJ/xLUwG5iM2FDq4lNycL90TSQVLbf2k98umZ9NwZWGZEwfk6dJ057jSQfVYm\nkmxok/IYQcnnKychr1yevB4ToQbC/4BsJmR2GUyuI3qzG+UkCQRIwljTEFpN\na3afe+GuKPOdsKlX2Xyd0QG6WFOYPXNJ5JHnmfK18Khia1bcQIPgaAXfySRo\n/RWF5kQbZJToza/3nXKwHYyX/QP2liH/0yOrG+V/9PmaAbZQwg8YSjUJcjnz\nSYn/HNQb5pSKYw7hSjzpJ9FhF1H/Wu1dZg2t1nklxGpjKIh1AUolKD7nb5+8\nlY4Zyiqbg/nA0pk6CwcJFmWqltqoeK9OtDGvuCDefv3LqULNDj9w6msZaPKZ\ndANukgpTH19o3MSuWCGDuXI1YBY4ktzn1XmfLmjDVKjMTbSHPmnaHdeu9NSn\nKS+o\r\n=J7x9\r\n-----END PGP SIGNATURE-----\r\n"
78
+ "unpackedSize": 140059,
79
+ "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc3GG7CRA9TVsSAnZWagAAHfUP/14z/m0dy+F21lIsBxHb\nVecF7kLUXXzSuYuIUIE/bh4WGsY3sy6VZPTgPKdZv5BZf4EWWQIGSGwu1x11\nAkjx9P0+lMS8VOEO5bWgX36hMMZXp+cL4uFMgqWKyyNOS2uNGIoaQVgBKWQH\nTfNST4DGMZtc5VhJNg8mCTJP6puwCNNGm3jVRPmVQgOUZ+38JEmZY+BmcUK4\nxWOTSTRKFjc3w5QozCTvHMTHaG9TDKDDYL82Fahr7j8/p5NQ9zFTxVv1C2RL\nqz5sThGQKHKL9Jbhosbu/hpByfxDaYcYstAmFOQI9CsL+w5D327Q6bQ1IK5F\nDa4PO0tFQM2dhzSI/hwqJb8kzDcxIk11ToHcI0M5xsYy3tOgGjUrQcjhrqxi\nKaNXkEcBy2r4Pl/A3JXJi6jGUb4xt7evADsAypW0gCS8vktY7Ty9Ru6mcGWU\n+NFRYrz0xWgIfV70G1FNxQ/FXniJsiy6tPZy/eMducmGMUV39enpCmloREgh\ntOrxrU1wY60x5SCp6cT+B6IK7tmSsPsfbLLres9T1vWemDkKmWgSr5rh6LVA\n1VUrDI8qjtIhMfiQLNJSizlk+pBdrk2I5NWjiBQgDAi+YDOvQesIitTQ1veW\n4CGJ165gQ7IYvWKiRC9BSdcQ+GbHsbJOC/R8K/tThcrnfeNSEHCL1u/covlX\nsezS\r\n=s5dL\r\n-----END PGP SIGNATURE-----\r\n"
80
80
  },
81
- "gitHead": "99a2ef57758255e10269f12de6c97b832a5f5fa0",
81
+ "gitHead": "da345f39588998003a53a7d9959c4df40e04fb23",
82
82
  "homepage": "https://github.com/browserify/resolve#readme",
83
83
  "keywords": [
84
84
  "resolve",
@@ -117,6 +117,10 @@
117
117
  "name": "cwmma",
118
118
  "email": "calvin.metcalf@gmail.com"
119
119
  },
120
+ {
121
+ "name": "defunctzombie",
122
+ "email": "shtylman@gmail.com"
123
+ },
120
124
  {
121
125
  "name": "dominictarr",
122
126
  "email": "dominic.tarr@gmail.com"
@@ -181,6 +185,10 @@
181
185
  "name": "ljharb",
182
186
  "email": "ljharb@gmail.com"
183
187
  },
188
+ {
189
+ "name": "lukechilds",
190
+ "email": "lukechilds123@gmail.com"
191
+ },
184
192
  {
185
193
  "name": "mafintosh",
186
194
  "email": "mathiasbuus@gmail.com"
@@ -262,5 +270,5 @@
262
270
  "test:multirepo": "cd ./test/resolver/multirepo && npm install && npm test",
263
271
  "tests-only": "tape test/*.js"
264
272
  },
265
- "version": "1.10.1"
273
+ "version": "1.11.0"
266
274
  }
@@ -59,6 +59,8 @@ options are:
59
59
 
60
60
  * opts.isFile - function to asynchronously test whether a file exists
61
61
 
62
+ * opts.isDirectory - function to asynchronously test whether a directory exists
63
+
62
64
  * `opts.packageFilter(pkg, pkgfile)` - transform the parsed package.json contents before looking at the "main" field
63
65
  * pkg - package data
64
66
  * pkgfile - path to package.json
@@ -101,6 +103,15 @@ default `opts` values:
101
103
  return cb(err);
102
104
  });
103
105
  },
106
+ isDirectory: function isDirectory(dir, cb) {
107
+ fs.stat(dir, function (err, stat) {
108
+ if (!err) {
109
+ return cb(null, stat.isDirectory());
110
+ }
111
+ if (err.code === 'ENOENT' || err.code === 'ENOTDIR') return cb(null, false);
112
+ return cb(err);
113
+ });
114
+ },
104
115
  moduleDirectory: 'node_modules',
105
116
  preserveSymlinks: true
106
117
  }
@@ -121,6 +132,8 @@ options are:
121
132
 
122
133
  * opts.isFile - function to synchronously test whether a file exists
123
134
 
135
+ * opts.isDirectory - function to synchronously test whether a directory exists
136
+
124
137
  * `opts.packageFilter(pkg, dir)` - transform the parsed package.json contents before looking at the "main" field
125
138
  * pkg - package data
126
139
  * dir - directory for package.json (Note: the second argument will change to "pkgfile" in v2)
@@ -157,6 +170,15 @@ default `opts` values:
157
170
  }
158
171
  return stat.isFile() || stat.isFIFO();
159
172
  },
173
+ isDirectory: function isDirectory(dir) {
174
+ try {
175
+ var stat = fs.statSync(dir);
176
+ } catch (e) {
177
+ if (e && (e.code === 'ENOENT' || e.code === 'ENOTDIR')) return false;
178
+ throw e;
179
+ }
180
+ return stat.isDirectory();
181
+ },
160
182
  moduleDirectory: 'node_modules',
161
183
  preserveSymlinks: true
162
184
  }
@@ -8,12 +8,18 @@ test('mock', function (t) {
8
8
  var files = {};
9
9
  files[path.resolve('/foo/bar/baz.js')] = 'beep';
10
10
 
11
+ var dirs = {};
12
+ dirs[path.resolve('/foo/bar')] = true;
13
+
11
14
  function opts(basedir) {
12
15
  return {
13
16
  basedir: path.resolve(basedir),
14
17
  isFile: function (file, cb) {
15
18
  cb(null, Object.prototype.hasOwnProperty.call(files, path.resolve(file)));
16
19
  },
20
+ isDirectory: function (dir, cb) {
21
+ cb(null, !!dirs[path.resolve(dir)]);
22
+ },
17
23
  readFile: function (file, cb) {
18
24
  cb(null, files[path.resolve(file)]);
19
25
  }
@@ -49,12 +55,18 @@ test('mock from package', function (t) {
49
55
  var files = {};
50
56
  files[path.resolve('/foo/bar/baz.js')] = 'beep';
51
57
 
58
+ var dirs = {};
59
+ dirs[path.resolve('/foo/bar')] = true;
60
+
52
61
  function opts(basedir) {
53
62
  return {
54
63
  basedir: path.resolve(basedir),
55
64
  isFile: function (file, cb) {
56
65
  cb(null, Object.prototype.hasOwnProperty.call(files, file));
57
66
  },
67
+ isDirectory: function (dir, cb) {
68
+ cb(null, !!dirs[path.resolve(dir)]);
69
+ },
58
70
  'package': { main: 'bar' },
59
71
  readFile: function (file, cb) {
60
72
  cb(null, files[file]);
@@ -94,12 +106,19 @@ test('mock package', function (t) {
94
106
  main: './baz.js'
95
107
  });
96
108
 
109
+ var dirs = {};
110
+ dirs[path.resolve('/foo')] = true;
111
+ dirs[path.resolve('/foo/node_modules')] = true;
112
+
97
113
  function opts(basedir) {
98
114
  return {
99
115
  basedir: path.resolve(basedir),
100
116
  isFile: function (file, cb) {
101
117
  cb(null, Object.prototype.hasOwnProperty.call(files, path.resolve(file)));
102
118
  },
119
+ isDirectory: function (dir, cb) {
120
+ cb(null, !!dirs[path.resolve(dir)]);
121
+ },
103
122
  readFile: function (file, cb) {
104
123
  cb(null, files[path.resolve(file)]);
105
124
  }
@@ -122,12 +141,19 @@ test('mock package from package', function (t) {
122
141
  main: './baz.js'
123
142
  });
124
143
 
144
+ var dirs = {};
145
+ dirs[path.resolve('/foo')] = true;
146
+ dirs[path.resolve('/foo/node_modules')] = true;
147
+
125
148
  function opts(basedir) {
126
149
  return {
127
150
  basedir: path.resolve(basedir),
128
151
  isFile: function (file, cb) {
129
152
  cb(null, Object.prototype.hasOwnProperty.call(files, path.resolve(file)));
130
153
  },
154
+ isDirectory: function (dir, cb) {
155
+ cb(null, !!dirs[path.resolve(dir)]);
156
+ },
131
157
  'package': { main: 'bar' },
132
158
  readFile: function (file, cb) {
133
159
  cb(null, files[path.resolve(file)]);
@@ -8,14 +8,20 @@ test('mock', function (t) {
8
8
  var files = {};
9
9
  files[path.resolve('/foo/bar/baz.js')] = 'beep';
10
10
 
11
+ var dirs = {};
12
+ dirs[path.resolve('/foo/bar')] = true;
13
+
11
14
  function opts(basedir) {
12
15
  return {
13
16
  basedir: path.resolve(basedir),
14
17
  isFile: function (file) {
15
- return Object.prototype.hasOwnProperty.call(files, file);
18
+ return Object.prototype.hasOwnProperty.call(files, path.resolve(file));
19
+ },
20
+ isDirectory: function (dir) {
21
+ return !!dirs[path.resolve(dir)];
16
22
  },
17
23
  readFileSync: function (file) {
18
- return files[file];
24
+ return files[path.resolve(file)];
19
25
  }
20
26
  };
21
27
  }
@@ -48,14 +54,21 @@ test('mock package', function (t) {
48
54
  main: './baz.js'
49
55
  });
50
56
 
57
+ var dirs = {};
58
+ dirs[path.resolve('/foo')] = true;
59
+ dirs[path.resolve('/foo/node_modules')] = true;
60
+
51
61
  function opts(basedir) {
52
62
  return {
53
63
  basedir: path.resolve(basedir),
54
64
  isFile: function (file) {
55
- return Object.prototype.hasOwnProperty.call(files, file);
65
+ return Object.prototype.hasOwnProperty.call(files, path.resolve(file));
66
+ },
67
+ isDirectory: function (dir) {
68
+ return !!dirs[path.resolve(dir)];
56
69
  },
57
70
  readFileSync: function (file) {
58
- return files[file];
71
+ return files[path.resolve(file)];
59
72
  }
60
73
  };
61
74
  }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: govuk_publishing_components
3
3
  version: !ruby/object:Gem::Version
4
- version: 16.18.0
4
+ version: 16.19.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - GOV.UK Dev
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-05-15 00:00:00.000000000 Z
11
+ date: 2019-05-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: gds-api-adapters