govuk_publishing_components 16.18.0 → 16.19.0

Sign up to get free protection for your applications and to get access to all the features.
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