zenn-cli 0.1.105 → 0.1.106

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.
@@ -1,4 +1,4 @@
1
- var e=Object.defineProperty,t=Object.getOwnPropertySymbols,r=Object.prototype.hasOwnProperty,a=Object.prototype.propertyIsEnumerable,l=(t,r,a)=>r in t?e(t,r,{enumerable:!0,configurable:!0,writable:!0,value:a}):t[r]=a,i=(e,i)=>{for(var n in i||(i={}))r.call(i,n)&&l(e,n,i[n]);if(t)for(var n of t(i))a.call(i,n)&&l(e,n,i[n]);return e};import{q as n,R as o,r as s,u as c,a as m,d,b as p,c as u,W as g,t as h,e as _,f as E,g as b,h as v,i as f,j as y}from"./vendor.63f776be.js";let x;const k={},w=e=>o.createElement(N,{className:"error-message"},o.createElement("div",{className:"error-message__inner"},o.createElement("img",{src:"https://twemoji.maxcdn.com/2/svg/1f63f.svg",alt:"",width:90,height:90,className:"error-message__icon"}),o.createElement("div",{className:"error-message__text"},e.message||"エラーが発生しました"))),N=n.div`
1
+ var e=Object.defineProperty,t=Object.getOwnPropertySymbols,r=Object.prototype.hasOwnProperty,a=Object.prototype.propertyIsEnumerable,l=(t,r,a)=>r in t?e(t,r,{enumerable:!0,configurable:!0,writable:!0,value:a}):t[r]=a,i=(e,i)=>{for(var n in i||(i={}))r.call(i,n)&&l(e,n,i[n]);if(t)for(var n of t(i))a.call(i,n)&&l(e,n,i[n]);return e};import{q as n,R as o,r as s,u as c,a as m,d,b as p,c as u,W as g,t as h,e as _,f as E,g as b,h as v,i as f,j as y}from"./vendor.ec9681ae.js";let x;const k={},w=e=>o.createElement(N,{className:"error-message"},o.createElement("div",{className:"error-message__inner"},o.createElement("img",{src:"https://twemoji.maxcdn.com/2/svg/1f63f.svg",alt:"",width:90,height:90,className:"error-message__icon"}),o.createElement("div",{className:"error-message__text"},e.message||"エラーが発生しました"))),N=n.div`
2
2
  height: 100vh;
3
3
  display: flex;
4
4
  align-items: center;
@@ -9,8 +9,8 @@
9
9
  content="no-cache, no-store, must-revalidate"
10
10
  />
11
11
  <title>Zenn CLI</title>
12
- <script type="module" crossorigin src="/assets/index.9d6359d1.js"></script>
13
- <link rel="modulepreload" href="/assets/vendor.63f776be.js">
12
+ <script type="module" crossorigin src="/assets/index.6438bf0f.js"></script>
13
+ <link rel="modulepreload" href="/assets/vendor.ec9681ae.js">
14
14
  <link rel="stylesheet" href="/assets/index.9a2c789f.css">
15
15
  <script>window.twttr=(function(f,b,g){var e,c=f.getElementsByTagName(b)[0],a=window.twttr||{};if(f.getElementById(g)){return a}e=f.createElement(b);e.id=g;e.src="https://platform.twitter.com/widgets.js";c.parentNode.insertBefore(e,c);a._e=[];a.ready=function(d){a._e.push(d)};return a}(document,"script","twitter-wjs"));</script></head>
16
16
  <body>
@@ -73,6 +73,7 @@ function parseArgs(argv) {
73
73
  '--no-watch': Boolean,
74
74
  '--open': Boolean,
75
75
  '--help': Boolean,
76
+ '--host': String,
76
77
  // Alias
77
78
  '-p': '--port',
78
79
  '-h': '--help',
@@ -90,7 +91,7 @@ function parseArgs(argv) {
90
91
  }
91
92
  }
92
93
  var exec = function (argv) { return __awaiter(void 0, void 0, void 0, function () {
93
- var args, port, shouldWatch, shouldOpen, app, server;
94
+ var args, shouldWatch, options, server;
94
95
  return __generator(this, function (_a) {
95
96
  switch (_a.label) {
96
97
  case 0:
@@ -101,11 +102,14 @@ var exec = function (argv) { return __awaiter(void 0, void 0, void 0, function (
101
102
  console.log(messages_1.previewHelpText);
102
103
  return [2 /*return*/];
103
104
  }
104
- port = args['--port'] || 8000;
105
105
  shouldWatch = args['--no-watch'] !== true;
106
- shouldOpen = args['--open'] === true;
107
- app = app_1.createApp();
108
- return [4 /*yield*/, server_1.startServer(app, port, shouldOpen)];
106
+ options = {
107
+ app: app_1.createApp(),
108
+ port: args['--port'] || 8000,
109
+ shouldOpen: args['--open'] === true,
110
+ hostname: args['--host'],
111
+ };
112
+ return [4 /*yield*/, server_1.startServer(options)];
109
113
  case 1:
110
114
  server = _a.sent();
111
115
  if (!shouldWatch) return [3 /*break*/, 3];
@@ -58,7 +58,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
58
58
  return (mod && mod.__esModule) ? mod : { "default": mod };
59
59
  };
60
60
  Object.defineProperty(exports, "__esModule", { value: true });
61
- exports.completeHtml = exports.generateFileIfNotExist = exports.bufferToDataURL = exports.getImageSize = exports.listFilenamesOrderByModified = exports.listFilenames = exports.listDirnamesOrderByModified = exports.listDirnames = exports.getImageRaw = exports.getFileRaw = exports.getWorkingPath = exports.getPublishedCliVersion = exports.getCurrentCliVersion = exports.generateSlug = void 0;
61
+ exports.resolveHostname = exports.getLocalIPAddress = exports.completeHtml = exports.generateFileIfNotExist = exports.bufferToDataURL = exports.getImageSize = exports.listFilenamesOrderByModified = exports.listFilenames = exports.listDirnamesOrderByModified = exports.listDirnames = exports.getImageRaw = exports.getFileRaw = exports.getWorkingPath = exports.getPublishedCliVersion = exports.getCurrentCliVersion = exports.generateSlug = void 0;
62
62
  var crypto_1 = __importDefault(require("crypto"));
63
63
  var fs_extra_1 = __importDefault(require("fs-extra"));
64
64
  var path_1 = __importDefault(require("path"));
@@ -66,6 +66,7 @@ var Log = __importStar(require("./log"));
66
66
  var node_fetch_1 = __importDefault(require("node-fetch"));
67
67
  var cheerio_1 = __importDefault(require("cheerio"));
68
68
  var url_1 = __importDefault(require("url"));
69
+ var os_1 = require("os");
69
70
  function generateSlug() {
70
71
  return crypto_1.default.randomBytes(7).toString('hex');
71
72
  }
@@ -246,3 +247,28 @@ function isUrl(text) {
246
247
  return false;
247
248
  }
248
249
  }
250
+ var getLocalIPAddress = function () {
251
+ var interfaces = os_1.networkInterfaces();
252
+ var networks = Object.values(interfaces).flatMap(function (v) { return v !== null && v !== void 0 ? v : []; });
253
+ for (var _i = 0, networks_1 = networks; _i < networks_1.length; _i++) {
254
+ var detail = networks_1[_i];
255
+ if (detail.family === 'IPv4' && detail.address !== '127.0.0.1') {
256
+ return detail.address;
257
+ }
258
+ }
259
+ };
260
+ exports.getLocalIPAddress = getLocalIPAddress;
261
+ var resolveHostname = function (hostname) {
262
+ var name = 'localhost';
263
+ var host = hostname;
264
+ if (hostname) {
265
+ if (hostname !== '0.0.0.0' && hostname !== '::') {
266
+ name = hostname;
267
+ }
268
+ else {
269
+ host = exports.getLocalIPAddress();
270
+ }
271
+ }
272
+ return { name: name, host: host };
273
+ };
274
+ exports.resolveHostname = resolveHostname;
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.invalidOptionText = exports.listBooksHelpText = exports.listArticlesHelpText = exports.newBookHelpText = exports.newArticleHelpText = exports.previewHelpText = exports.initHelpText = exports.commandListText = void 0;
4
4
  exports.commandListText = "\nCommand:\n zenn init \u30B3\u30F3\u30C6\u30F3\u30C4\u7BA1\u7406\u7528\u306E\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3092\u4F5C\u6210. \u521D\u56DE\u306E\u307F\u5B9F\u884C\n zenn preview \u30B3\u30F3\u30C6\u30F3\u30C4\u3092\u30D6\u30E9\u30A6\u30B6\u3067\u30D7\u30EC\u30D3\u30E5\u30FC\n zenn new:article \u65B0\u3057\u3044\u8A18\u4E8B\u3092\u8FFD\u52A0\n zenn new:book \u65B0\u3057\u3044\u672C\u3092\u8FFD\u52A0\n zenn list:articles \u8A18\u4E8B\u306E\u4E00\u89A7\u3092\u8868\u793A\n zenn list:books \u672C\u306E\u4E00\u89A7\u3092\u8868\u793A\n zenn --version, -v zenn-cli\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\u3092\u8868\u793A\n zenn --help, -h \u30D8\u30EB\u30D7\n\n \uD83D\uDC47 \u8A73\u7D30\n https://zenn.dev/zenn/articles/zenn-cli-guide\n";
5
5
  exports.initHelpText = "\nCommand:\n zenn init \u30B3\u30F3\u30C6\u30F3\u30C4\u7BA1\u7406\u7528\u306E\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3092\u4F5C\u6210. \u521D\u56DE\u306E\u307F\u5B9F\u884C\n\nUsage:\n npx zenn init [options]\n\nOptions:\n --help, -h \u3053\u306E\u30D8\u30EB\u30D7\u3092\u8868\u793A\n\nExample:\n npx zenn init\n\n \uD83D\uDC47 \u8A73\u7D30\n https://zenn.dev/zenn/articles/zenn-cli-guide\n";
6
- exports.previewHelpText = "\nCommand:\n zenn preview \u30B3\u30F3\u30C6\u30F3\u30C4\u3092\u30D6\u30E9\u30A6\u30B6\u3067\u30D7\u30EC\u30D3\u30E5\u30FC\n\nUsage:\n npx zenn preview [options]\n\nOptions:\n --port PORT, -p PORT \u8D77\u52D5\u3059\u308B\u30B5\u30FC\u30D0\u30FC\u306B\u6307\u5B9A\u3057\u305F\u3044\u30DD\u30FC\u30C8. \u30C7\u30D5\u30A9\u30EB\u30C8\u306F8000\n --no-watch \u30DB\u30C3\u30C8\u30EA\u30ED\u30FC\u30C9\u3092\u7121\u52B9\u5316\n --open \u30D7\u30EC\u30D3\u30E5\u30FC\u7ACB\u3061\u4E0A\u3052\u6642\u306B\u30D6\u30E9\u30A6\u30B6\u3092\u958B\u304F\n\n --help, -h \u3053\u306E\u30D8\u30EB\u30D7\u3092\u8868\u793A\n\nExample:\n npx zenn preview --port 3000\n\n \uD83D\uDC47 \u8A73\u7D30\n https://zenn.dev/zenn/articles/zenn-cli-guide\n";
6
+ exports.previewHelpText = "\nCommand:\n zenn preview \u30B3\u30F3\u30C6\u30F3\u30C4\u3092\u30D6\u30E9\u30A6\u30B6\u3067\u30D7\u30EC\u30D3\u30E5\u30FC\n\nUsage:\n npx zenn preview [options]\n\nOptions:\n --port PORT, -p PORT \u8D77\u52D5\u3059\u308B\u30B5\u30FC\u30D0\u30FC\u306B\u6307\u5B9A\u3057\u305F\u3044\u30DD\u30FC\u30C8. \u30C7\u30D5\u30A9\u30EB\u30C8\u306F8000\n --no-watch \u30DB\u30C3\u30C8\u30EA\u30ED\u30FC\u30C9\u3092\u7121\u52B9\u5316\n --open \u30D7\u30EC\u30D3\u30E5\u30FC\u7ACB\u3061\u4E0A\u3052\u6642\u306B\u30D6\u30E9\u30A6\u30B6\u3092\u958B\u304F\n --host \u8A2D\u5B9A\u3057\u305F\u3044\u30DB\u30B9\u30C8\u540D\n\n --help, -h \u3053\u306E\u30D8\u30EB\u30D7\u3092\u8868\u793A\n\nExample:\n npx zenn preview --port 3000\n\n \uD83D\uDC47 \u8A73\u7D30\n https://zenn.dev/zenn/articles/zenn-cli-guide\n";
7
7
  exports.newArticleHelpText = "\nCommand:\n zenn new:article \u65B0\u3057\u3044\u8A18\u4E8B\u3092\u8FFD\u52A0\n\nUsage:\n npx zenn new:article [options]\n\nOptions:\n --slug SLUG \u8A18\u4E8B\u306E\u30B9\u30E9\u30C3\u30B0. `a-z0-9`\u3068\u30CF\u30A4\u30D5\u30F3(`-`)\u3068\u30A2\u30F3\u30C0\u30FC\u30B9\u30B3\u30A2(`_`)\u306E12\u301C50\u5B57\u306E\u7D44\u307F\u5408\u308F\u305B\n --title TITLE \u8A18\u4E8B\u306E\u30BF\u30A4\u30C8\u30EB\n --type TYPE \u8A18\u4E8B\u306E\u30BF\u30A4\u30D7. tech (\u6280\u8853\u8A18\u4E8B) / idea (\u30A2\u30A4\u30C7\u30A2\u8A18\u4E8B) \u306E\u3069\u3061\u3089\u304B\u304B\u3089\u9078\u629E\n --emoji EMOJI \u30A2\u30A4\u30AD\u30E3\u30C3\u30C1\u3068\u3057\u3066\u4F7F\u308F\u308C\u308B\u7D75\u6587\u5B57\uFF081\u6587\u5B57\u3060\u3051\uFF09\n --published \u516C\u958B\u8A2D\u5B9A. true \u304B false \u3092\u6307\u5B9A\u3059\u308B. \u30C7\u30D5\u30A9\u30EB\u30C8\u3067\"false\"\n --machine-readable \u4F5C\u6210\u6210\u529F\u6642\u306B\u30D5\u30A1\u30A4\u30EB\u540D\u306E\u307F\u3092\u51FA\u529B\u3059\u308B\n\n --help, -h \u3053\u306E\u30D8\u30EB\u30D7\u3092\u8868\u793A\n\nExample:\n npx zenn new:article --slug enjoy-zenn-with-client --title \u30BF\u30A4\u30C8\u30EB --type idea --emoji \u2728\n\n \uD83D\uDC47 \u8A73\u7D30\n https://zenn.dev/zenn/articles/zenn-cli-guide\n";
8
8
  exports.newBookHelpText = "\nCommand:\n zenn new:book \u65B0\u3057\u3044\u672C\u3092\u8FFD\u52A0\n\nUsage:\n npx zenn new:book [options]\n\nOptions:\n --slug SLUG \u672C\u306E\u30B9\u30E9\u30C3\u30B0. `a-z0-9`\u3068\u30CF\u30A4\u30D5\u30F3(`-`)\u3068\u30A2\u30F3\u30C0\u30FC\u30B9\u30B3\u30A2(`_`)\u306E12\u301C50\u5B57\u306E\u7D44\u307F\u5408\u308F\u305B\n --title TITLE \u672C\u306E\u30BF\u30A4\u30C8\u30EB\n --published BOOL \u672C\u306E\u516C\u958B\u8A2D\u5B9A. true \u304B false \u3092\u6307\u5B9A\u3059\u308B. \u30C7\u30D5\u30A9\u30EB\u30C8\u3067\"false\"\n --summary SUMMARY \u672C\u306E\u7D39\u4ECB\u6587. \u6709\u6599\u306E\u672C\u3067\u3042\u3063\u3066\u3082\u516C\u958B\u3055\u308C\u308B\n --price PRICE \u672C\u306E\u4FA1\u683C.\u6709\u6599\u306E\u5834\u5408200\u301C5000. \u30C7\u30D5\u30A9\u30EB\u30C8\u306F0\n\n --help, -h \u3053\u306E\u30D8\u30EB\u30D7\u3092\u8868\u793A\n\nExample:\n npx zenn new:book --slug enjoy-zenn-with-client\n\n \uD83D\uDC47 \u8A73\u7D30\n https://zenn.dev/zenn/articles/zenn-cli-guide\n";
9
9
  exports.listArticlesHelpText = "\nCommand:\n zenn list:articles \u8A18\u4E8B\u306E\u4E00\u89A7\u3092\u8868\u793A\n\nUsage:\n npx zenn list:articles [options]\n\nOptions:\n --format FORMAT \u8868\u793A\u65B9\u6CD5. \"tsv\" \u307E\u305F\u306F \"json\" \u3092\u30B5\u30DD\u30FC\u30C8.\n\n --help, -h \u3053\u306E\u30D8\u30EB\u30D7\u3092\u8868\u793A\n\nExample:\n npx zenn list:articles --format tsv\n\n \uD83D\uDC47 \u8A73\u7D30\n https://zenn.dev/zenn/articles/zenn-cli-guide\n";
@@ -1,4 +1,15 @@
1
1
  "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
2
13
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
14
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
15
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -44,20 +55,25 @@ var http_1 = require("http");
44
55
  var ws_1 = __importDefault(require("ws"));
45
56
  var chokidar_1 = __importDefault(require("chokidar"));
46
57
  var open_1 = __importDefault(require("open"));
47
- function startServer(app, port, shouldOpen) {
58
+ var helper_1 = require("./helper");
59
+ function startServer(options) {
48
60
  return __awaiter(this, void 0, void 0, function () {
49
- var server;
61
+ var app, port, hostname, shouldOpen, server;
50
62
  return __generator(this, function (_a) {
63
+ app = options.app, port = options.port, hostname = options.hostname, shouldOpen = options.shouldOpen;
51
64
  server = http_1.createServer(app);
52
65
  return [2 /*return*/, new Promise(function (resolve, reject) {
53
66
  server
54
- .listen(port)
67
+ .listen(port, hostname)
55
68
  .once('listening', function () {
56
69
  if (process.env.TS_NODE_DEV) {
57
70
  console.log('🚀 Server is ready.');
58
71
  }
59
72
  else {
60
- console.log("\uD83D\uDC40 Preview: http://localhost:" + port);
73
+ var _a = helper_1.resolveHostname(hostname), name_1 = _a.name, host = _a.host;
74
+ console.log("\uD83D\uDC40 Preview: http://" + name_1 + ":" + port);
75
+ if (host)
76
+ console.log("\uD83C\uDF0F NetWork: http://" + host + ":" + port);
61
77
  }
62
78
  if (shouldOpen)
63
79
  open_1.default("http://localhost:" + port);
@@ -71,7 +87,7 @@ function startServer(app, port, shouldOpen) {
71
87
  case 0:
72
88
  if (!err.message.includes('EADDRINUSE')) return [3 /*break*/, 2];
73
89
  console.log("\uD83D\uDCA1 \u30DD\u30FC\u30C8" + port + "\u306F\u65E2\u306B\u4F7F\u7528\u3055\u308C\u3066\u3044\u307E\u3059\u3002\u5225\u306E\u30DD\u30FC\u30C8\u3067\u8D77\u52D5\u4E2D\u2026");
74
- return [4 /*yield*/, startServer(app, port + 1, shouldOpen)];
90
+ return [4 /*yield*/, startServer(__assign(__assign({}, options), { port: port + 1 }))];
75
91
  case 1:
76
92
  server_1 = _a.sent();
77
93
  resolve(server_1);
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "zenn-cli",
3
3
  "license": "MIT",
4
- "version": "0.1.105",
4
+ "version": "0.1.106",
5
5
  "description": "Preview Zenn content locally.",
6
6
  "repository": {
7
7
  "type": "git",
@@ -45,14 +45,16 @@
45
45
  "history": "^5.0.0",
46
46
  "image-size": "^1.0.0",
47
47
  "js-yaml": "^4.1.0",
48
- "node-fetch": "^2.6.1",
48
+ "node-fetch": "^2.6.7",
49
49
  "open": "^8.2.0",
50
50
  "ws": "^7.4.6",
51
- "zenn-markdown-html": "^0.1.105"
51
+ "zenn-markdown-html": "^0.1.106"
52
52
  },
53
53
  "devDependencies": {
54
54
  "@material-ui/core": "^4.11.4",
55
55
  "@material-ui/icons": "^4.11.2",
56
+ "@swc/core": "^1.2.131",
57
+ "@swc/jest": "^0.2.17",
56
58
  "@types/connect-history-api-fallback": "^1.3.4",
57
59
  "@types/emoji-regex": "^9.2.0",
58
60
  "@types/express": "^4.17.11",
@@ -82,16 +84,15 @@
82
84
  "styled-components": "^5.3.0",
83
85
  "supertest": "^6.1.3",
84
86
  "swr": "^0.5.6",
85
- "ts-jest": "^27.0.5",
86
87
  "ts-loader": "^9.1.1",
87
88
  "ts-node-dev": "^1.1.6",
88
89
  "typescript": "^4.2.4",
89
90
  "vite": "^2.3.7",
90
91
  "wait-on": "^6.0.0",
91
- "zenn-content-css": "^0.1.105",
92
- "zenn-embed-elements": "^0.1.105"
92
+ "zenn-content-css": "^0.1.106",
93
+ "zenn-embed-elements": "^0.1.106"
93
94
  },
94
- "gitHead": "4e98b36fe9b54c12ffb214c0c876b2a7245aefd6",
95
+ "gitHead": "0ee17e44bda75ee3993f86de9c319f8279bac98f",
95
96
  "publishConfig": {
96
97
  "access": "public"
97
98
  },