@zentered/issue-forms-body-parser 2.1.4 → 2.2.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.
@@ -27,7 +27,7 @@ jobs:
27
27
 
28
28
  steps:
29
29
  - name: Checkout repository
30
- uses: actions/checkout@v3
30
+ uses: actions/checkout@v4
31
31
 
32
32
  # Initializes the CodeQL tools for scanning.
33
33
  - name: Initialize CodeQL
@@ -6,7 +6,7 @@ jobs:
6
6
  test:
7
7
  runs-on: ubuntu-latest
8
8
  steps:
9
- - uses: actions/checkout@v3
9
+ - uses: actions/checkout@v4
10
10
  - name: Issue Forms Body Parser
11
11
  id: parse
12
12
  uses: ./
@@ -18,12 +18,14 @@ jobs:
18
18
  NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
19
19
  runs-on: ubuntu-latest
20
20
  steps:
21
- - uses: actions/checkout@v3
22
- - uses: actions/setup-node@v3
21
+ - uses: actions/checkout@v4
22
+ - uses: actions/setup-node@v4
23
23
  with:
24
- node-version: 18
24
+ node-version: 20
25
25
  cache: 'npm'
26
26
  - run: npm ci
27
27
  - run: npm test
28
+ env:
29
+ GITHUB_REPOSITORY: zentered/issue-forms-body-parser-test
28
30
  - run: npm run release
29
31
  - run: npx semantic-release
@@ -16,14 +16,16 @@ jobs:
16
16
  GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
17
17
  runs-on: ubuntu-latest
18
18
  steps:
19
- - uses: actions/checkout@v3
20
- - uses: actions/setup-node@v3
19
+ - uses: actions/checkout@v4
20
+ - uses: actions/setup-node@v4
21
21
  with:
22
- node-version: 18
22
+ node-version: 20
23
23
  cache: 'npm'
24
24
  - run: npm ci
25
25
  - run: npm run lint
26
26
  - run: npm test
27
+ env:
28
+ GITHUB_REPOSITORY: zentered/issue-forms-body-parser-test
27
29
 
28
30
  - run: npm run build
29
31
 
package/action.yml CHANGED
@@ -15,4 +15,4 @@ outputs:
15
15
  The extracted payload data from the issue body labels in JSON encoded form
16
16
  runs:
17
17
  main: action/index.js
18
- using: node16
18
+ using: node20
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zentered/issue-forms-body-parser",
3
- "version": "2.1.4",
3
+ "version": "2.2.0",
4
4
  "private": false,
5
5
  "description": "Parser for GitHub Issue Form body, also available as GitHub Action",
6
6
  "keywords": [
@@ -32,21 +32,21 @@
32
32
  }
33
33
  ],
34
34
  "type": "module",
35
- "main": "./pkg/parse.cjs",
36
- "module": "./pkg/parse.js",
37
35
  "exports": {
38
36
  "import": "./pkg/parse.js",
39
37
  "require": "./pkg/parse.cjs"
40
38
  },
39
+ "main": "./pkg/parse.cjs",
40
+ "module": "./pkg/parse.js",
41
41
  "scripts": {
42
42
  "build": "run-p build:*",
43
43
  "build:package": "microbundle src/parse.js",
44
44
  "build:action": "ncc build src/index.js -o action --license licenses.txt",
45
45
  "release": "run-s lint test build",
46
46
  "lint": "eslint .",
47
+ "pretty": "prettier --write ./src ./test",
47
48
  "license-checker": "license-checker --production --onlyAllow=\"MIT;ISC;BSD-3-Clause;BSD-2-Clause;Apache-2.0\"",
48
- "test": "tap --node-arg=--experimental-json-modules --test-env=GITHUB_REPOSITORY=zentered/issue-forms-body-parser-test -J test/*.test.js",
49
- "test:report": "tap --test-env=GITHUB_REPOSITORY=zentered/issue-forms-body-parser-test -J test/*.test.js --cov",
49
+ "test": "node --test",
50
50
  "prepare": "is-ci || husky install"
51
51
  },
52
52
  "commitlint": {
@@ -68,32 +68,34 @@
68
68
  ]
69
69
  },
70
70
  "dependencies": {
71
- "@actions/core": "^1.10.0",
72
- "@actions/github": "^5.1.1",
73
- "@sindresorhus/slugify": "^2.2.0",
74
- "date-fns": "^2.29.3",
71
+ "@actions/core": "^1.10.1",
72
+ "@actions/github": "^6.0.0",
73
+ "@sindresorhus/slugify": "^2.2.1",
74
+ "date-fns": "^2.30.0",
75
75
  "date-fns-tz": "^2.0.0",
76
+ "debug": "^4.3.4",
76
77
  "is-ci": "^3.0.1",
77
- "remark-gfm": "^3.0.1",
78
- "remark-parse": "^10.0.1",
79
- "remark-stringify": "^10.0.2",
78
+ "remark-gfm": "^4.0.0",
79
+ "remark-parse": "^11.0.0",
80
+ "remark-stringify": "^11.0.0",
80
81
  "strip-final-newline": "^3.0.0",
81
- "unified": "^10.1.2"
82
+ "unified": "^11.0.4"
82
83
  },
83
84
  "devDependencies": {
84
- "@commitlint/config-conventional": "^17.4.4",
85
- "@vercel/ncc": "^0.36.1",
86
- "commitlint": "^17.5.1",
87
- "eslint": "^8.37.0",
85
+ "@commitlint/config-conventional": "^18.4.0",
86
+ "@vercel/ncc": "^0.38.1",
87
+ "commitlint": "^18.4.0",
88
+ "eslint": "^8.53.0",
88
89
  "eslint-plugin-json": "^3.1.0",
89
90
  "eslint-plugin-node": "^11.1.0",
90
91
  "husky": "^8.0.3",
91
92
  "license-checker": "^25.0.1",
92
93
  "microbundle": "^0.15.1",
93
94
  "npm-run-all": "^4.1.5",
94
- "pinst": "^3.0.0",
95
- "prettier": "^2.8.7",
96
- "tap": "^16.3.4"
95
+ "prettier": "^3.0.3"
96
+ },
97
+ "engines": {
98
+ "node": ">=18"
97
99
  },
98
100
  "src": "src/parse.js"
99
101
  }
package/pkg/parse.cjs CHANGED
@@ -1,2 +1,2 @@
1
- var e=require("unified"),n=require("remark-parse"),t=require("remark-gfm"),r=require("@sindresorhus/slugify"),i=require("remark-stringify"),u=require("strip-final-newline"),o=require("date-fns"),a=require("date-fns-tz");function f(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var l=/*#__PURE__*/f(n),c=/*#__PURE__*/f(t),d=/*#__PURE__*/f(r),h=/*#__PURE__*/f(i),s=/*#__PURE__*/f(u);function y(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=new Array(n);t<n;t++)r[t]=e[t];return r}var v=["yyyy-MM-dd","dd/MM/yyyy","dd/MM/yy","dd-MM-yyyy","dd-MM-yy","dd.MM.yyyy","dd.MM.yy"],m=["HH:mm","HH.mm","hh:mm aaa","hh:mm a..aa","hh:mm aaaa"],p=function e(n){return n.children.map(function(t){var r={};return"list"===t.type?e(n):"listItem"===t.type?(r.checked=t.checked,t.children.map(function(e){if("paragraph"===e.type)return r.text=e.children.map(function(e){return"link"===e.type?(r.link=e.url,"["+e.children[0].value+"]("+e.url+")"):e.value}).filter(function(e){return!!e}).join(""),r}).filter(function(e){return!!e})):void 0}).filter(function(e){return!!e})};function g(e,n,t){if(!e.s){if(t instanceof b){if(!t.s)return void(t.o=g.bind(null,e,n));1&n&&(n=t.s),t=t.v}if(t&&t.then)return void t.then(g.bind(null,e,n),g.bind(null,e,2));e.s=n,e.v=t;var r=e.o;r&&r(e)}}const b=/*#__PURE__*/function(){function e(){}return e.prototype.then=function(n,t){const r=new e,i=this.s;if(i){const e=1&i?n:t;if(e){try{g(r,1,e(this.v))}catch(e){g(r,2,e)}return r}return this}return this.o=function(e){try{const i=e.v;1&e.s?g(r,1,n?n(i):i):t?g(r,1,t(i)):g(r,2,i)}catch(e){g(r,2,e)}},r},e}();function M(e){return e instanceof b&&1&e.s}module.exports=function(n){try{var t,r,i,u,f,x,w,k,T,q,I,O,j;return Promise.resolve(e.unified().use(l.default).use(c.default).parse(n)).then(function(n){function l(){for(I in U)(j=(O=U[I]).content.filter(Boolean))&&j.length>0&&(1===j.length&&(O.text=j[0]),O.text=j.join("\n\n")),O.content=j;return U}if(!n)return[];var U={},A=null;t=function(e,n){var t="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(t)return(t=t.call(e)).next.bind(t);if(Array.isArray(e)||(t=function(e,n){if(e){if("string"==typeof e)return y(e,n);var t=Object.prototype.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?y(e,n):void 0}}(e))){t&&(e=t);var r=0;return function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(n.children);var H=function(e,n,t){for(var r;;){var i=e();if(M(i)&&(i=i.v),!i)return u;if(i.then){r=0;break}var u=t();if(u&&u.then){if(!M(u)){r=1;break}u=u.s}}var o=new b,a=g.bind(null,o,2);return(0===r?i.then(l):1===r?u.then(f):(void 0).then(function(){(i=e())?i.then?i.then(l).then(void 0,a):l(i):g(o,1,u)})).then(void 0,a),o;function f(n){u=n;do{if(!(i=e())||M(i)&&!i.v)return void g(o,1,u);if(i.then)return void i.then(l).then(void 0,a);M(u=t())&&(u=u.v)}while(!u||!u.then);u.then(f).then(void 0,a)}function l(e){e?(u=t())&&u.then?u.then(f).then(void 0,a):f(u):g(o,1,u)}}(function(){return!(r=t()).done},0,function(){return i=r.value,Promise.resolve(e.unified().use(c.default).use(h.default).stringify(i)).then(function(e){var n,t;(u=s.default(e)).indexOf("\\_")>-1&&(u=u.replace(/\\_/g,"_")),"heading"===i.type?(A=d.default(i.children[0].value),U[A]={title:i.children[0].value,heading:i.depth,content:[]}):"paragraph"===i.type&&A?(f=U[A],n=u,t=v.map(function(e){return o.isMatch(n,e)}),x=t.indexOf(!0)>-1?a.zonedTimeToUtc(o.parse(n,v[t.indexOf(!0)],new Date),"UTC").toJSON().split("T")[0]:null,w=function(e){var n=m.map(function(n){return o.isMatch(e,n)});if(n.indexOf(!0)>-1){var t=a.zonedTimeToUtc(o.parse(e,m[n.indexOf(!0)],new Date),"UTC");return a.formatInTimeZone(t,"UTC","HH:mm")}return null}(u),k=function(e){var n=!1,t={hours:0,minutes:0},r=new RegExp(/([0-9]+)h([0-9]+)m/),i=new RegExp(/([0-9]+)h/);if(e.match(r)){n=!0;var u=e.match(r),o=u[2];t.hours=parseInt(u[1]),t.minutes=parseInt(o)}else if(e.match(i)){n=!0;var a=e.match(i);t.hours=parseInt(a[1]),t.minutes=0}return n?t:null}(u),x&&(f.date=x),w&&(f.time=w),k&&(f.duration=k),f.content.push(u)):"list"===i.type?((T=U[A]).text=u,T.list=p(i).flat()):"html"===i.type?U[A].content.push(i.html):"code"===i.type?((q=U[A]).lang=i.lang,q.text=u):process.env.DEBUG&&(console.log("unhandled token type"),console.log(i))})});return H&&H.then?H.then(l):l()})}catch(e){return Promise.reject(e)}};
1
+ var e=require("unified"),n=require("remark-parse"),t=require("remark-gfm"),r=require("@sindresorhus/slugify"),i=require("remark-stringify"),u=require("strip-final-newline"),a=require("debug"),o=require("date-fns"),f=require("date-fns-tz");function l(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var c=/*#__PURE__*/l(n),d=/*#__PURE__*/l(t),h=/*#__PURE__*/l(r),s=/*#__PURE__*/l(i),v=/*#__PURE__*/l(u),y=/*#__PURE__*/l(a);function m(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=new Array(n);t<n;t++)r[t]=e[t];return r}var p=["yyyy-MM-dd","dd/MM/yyyy","dd/MM/yy","dd-MM-yyyy","dd-MM-yy","dd.MM.yyyy","dd.MM.yy"],g=["HH:mm","HH.mm","hh:mm aaa","hh:mm a..aa","hh:mm aaaa"],b=function e(n){return n.children.map(function(t){var r={};return"list"===t.type?e(n):"listItem"===t.type?(r.checked=t.checked,t.children.map(function(e){if("paragraph"===e.type)return r.text=e.children.map(function(e){return"link"===e.type?(r.link=e.url,"["+e.children[0].value+"]("+e.url+")"):e.value}).filter(function(e){return!!e}).join(""),r}).filter(function(e){return!!e})):void 0}).filter(function(e){return!!e})};function M(e,n,t){if(!e.s){if(t instanceof x){if(!t.s)return void(t.o=M.bind(null,e,n));1&n&&(n=t.s),t=t.v}if(t&&t.then)return void t.then(M.bind(null,e,n),M.bind(null,e,2));e.s=n,e.v=t;var r=e.o;r&&r(e)}}var x=/*#__PURE__*/function(){function e(){}return e.prototype.then=function(n,t){var r=new e,i=this.s;if(i){var u=1&i?n:t;if(u){try{M(r,1,u(this.v))}catch(e){M(r,2,e)}return r}return this}return this.o=function(e){try{var i=e.v;1&e.s?M(r,1,n?n(i):i):t?M(r,1,t(i)):M(r,2,i)}catch(e){M(r,2,e)}},r},e}();function k(e){return e instanceof x&&1&e.s}var w=y.default("body-parser");module.exports=function(n){try{var t,r,i,u,a,l,y,T,q,I,O,j,A,H,S;return w("parseMD()"),Promise.resolve(e.unified().use(c.default).use(d.default).parse(n)).then(function(n){function c(){for(A in U)(S=(H=U[A]).content.filter(Boolean))&&S.length>0&&(1===S.length&&(H.text=S[0]),H.text=S.join("\n\n")),H.content=S;return U}if(!n)return[];var U={},C=null;t=function(e,n){var t="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(t)return(t=t.call(e)).next.bind(t);if(Array.isArray(e)||(t=function(e,n){if(e){if("string"==typeof e)return m(e,n);var t=Object.prototype.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?m(e,n):void 0}}(e))){t&&(e=t);var r=0;return function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(n.children);var z=function(e,n,t){for(var r;;){var i=e();if(k(i)&&(i=i.v),!i)return u;if(i.then){r=0;break}var u=t();if(u&&u.then){if(!k(u)){r=1;break}u=u.s}if(n){var a=n();if(a&&a.then&&!k(a)){r=2;break}}}var o=new x,f=M.bind(null,o,2);return(0===r?i.then(c):1===r?u.then(l):a.then(d)).then(void 0,f),o;function l(r){u=r;do{if(n&&(a=n())&&a.then&&!k(a))return void a.then(d).then(void 0,f);if(!(i=e())||k(i)&&!i.v)return void M(o,1,u);if(i.then)return void i.then(c).then(void 0,f);k(u=t())&&(u=u.v)}while(!u||!u.then);u.then(l).then(void 0,f)}function c(e){e?(u=t())&&u.then?u.then(l).then(void 0,f):l(u):M(o,1,u)}function d(){(i=e())?i.then?i.then(c).then(void 0,f):c(i):M(o,1,u)}}(function(){return!(r=t()).done},void 0,function(){return i=r.value,Promise.resolve(e.unified().use(d.default).use(s.default).stringify(i)).then(function(e){var n,t;(u=v.default(e)).indexOf("\\_")>-1&&(u=u.replace(/\\_/g,"_")),"heading"===i.type?(C=h.default(i.children[0].value),U[C]={title:i.children[0].value,heading:i.depth,content:[]}):"paragraph"===i.type&&C?(a=U[C],n=u,t=p.map(function(e){return o.isMatch(n,e)}),l=t.indexOf(!0)>-1?f.zonedTimeToUtc(o.parse(n,p[t.indexOf(!0)],new Date),"UTC").toJSON().split("T")[0]:null,y=i.children.filter(function(e){return"image"===e.type}).map(function(e){return{src:e.url,alt:e.alt}}),T=i.children.filter(function(e){return"link"===e.type}).map(function(e){return{src:e.url,alt:e.children[0].value}}),q=function(e){var n=g.map(function(n){return o.isMatch(e,n)});if(n.indexOf(!0)>-1){var t=f.zonedTimeToUtc(o.parse(e,g[n.indexOf(!0)],new Date),"UTC");return f.formatInTimeZone(t,"UTC","HH:mm")}return null}(u),I=function(e){var n=!1,t={hours:0,minutes:0},r=new RegExp(/([0-9]+)h([0-9]+)m/),i=new RegExp(/([0-9]+)h/);if(e.match(r)){n=!0;var u=e.match(r),a=u[2];t.hours=parseInt(u[1]),t.minutes=parseInt(a)}else if(e.match(i)){n=!0;var o=e.match(i);t.hours=parseInt(o[1]),t.minutes=0}return n?t:null}(u),l&&(a.date=l),q&&(a.time=q),I&&(a.duration=I),T&&T.length>0&&(a.links=T),y&&y.length>0&&(a.images=y),a.content.push(u)):"list"===i.type?((O=U[C]).text=u,O.list=b(i).flat()):"html"===i.type?U[C].content.push(i.html):"code"===i.type?((j=U[C]).lang=i.lang,j.text=u):(w("unhandled token type"),w(i))})});return z&&z.then?z.then(c):c()})}catch(e){return Promise.reject(e)}};
2
2
  //# sourceMappingURL=parse.cjs.map
package/pkg/parse.cjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"parse.cjs","sources":["../src/parsers/date.js","../src/parsers/time.js","../src/parsers/index.js","../src/parsers/list.js","../src/parse.js","../src/parsers/duration.js"],"sourcesContent":["'use strict'\n\nimport { parse, isMatch } from 'date-fns'\nimport { zonedTimeToUtc } from 'date-fns-tz'\n\nconst loc = 'UTC'\nconst commonDateFormats = [\n 'yyyy-MM-dd',\n 'dd/MM/yyyy',\n 'dd/MM/yy',\n 'dd-MM-yyyy',\n 'dd-MM-yy',\n 'dd.MM.yyyy',\n 'dd.MM.yy'\n]\n\nexport default function parseDate(text) {\n const match = commonDateFormats.map((format) => {\n return isMatch(text, format)\n })\n if (match.indexOf(true) > -1) {\n const date = zonedTimeToUtc(\n parse(text, commonDateFormats[match.indexOf(true)], new Date()),\n loc\n ).toJSON()\n return date.split('T')[0]\n } else {\n return null\n }\n}\n","'use strict'\n\nimport { parse, isMatch } from 'date-fns'\nimport { zonedTimeToUtc, formatInTimeZone } from 'date-fns-tz'\n\nconst loc = 'UTC'\nconst commonTimeFormats = [\n 'HH:mm',\n 'HH.mm',\n 'hh:mm aaa',\n 'hh:mm a..aa',\n 'hh:mm aaaa'\n]\n\nexport default function parseTime(text) {\n const match = commonTimeFormats.map((format) => {\n return isMatch(text, format)\n })\n if (match.indexOf(true) > -1) {\n const time = zonedTimeToUtc(\n parse(text, commonTimeFormats[match.indexOf(true)], new Date()),\n loc\n )\n return formatInTimeZone(time, loc, 'HH:mm')\n } else {\n return null\n }\n}\n","'use strict'\n\nimport date from './date.js'\nimport time from './time.js'\nimport duration from './duration.js'\nimport list from './list.js'\n\nexport const parseDate = date\nexport const parseTime = time\nexport const parseDuration = duration\nexport const parseList = list\n","'use strict'\n\nexport default function parseList(list) {\n return list.children\n .map((item) => {\n const listItem = {}\n if (item.type === 'list') {\n return parseList(list)\n } else if (item.type === 'listItem') {\n listItem.checked = item.checked\n return item.children\n .map((child) => {\n if (child.type === 'paragraph') {\n listItem.text = child.children\n .map((c) => {\n if (c.type === 'link') {\n listItem.link = c.url\n return `[${c.children[0].value}](${c.url})`\n } else {\n return c.value\n }\n })\n .filter((x) => !!x)\n .join('')\n return listItem\n }\n })\n .filter((x) => !!x)\n }\n })\n .filter((x) => !!x)\n}\n","'use strict'\n\nimport { unified } from 'unified'\nimport remarkParse from 'remark-parse'\nimport remarkGfm from 'remark-gfm'\nimport slugify from '@sindresorhus/slugify'\nimport remarkStringify from 'remark-stringify'\nimport stripFinalNewline from 'strip-final-newline'\n\nimport {\n parseDate,\n parseTime,\n parseDuration,\n parseList\n} from './parsers/index.js'\n\nexport default async function parseMD(body) {\n const tokens = await unified().use(remarkParse).use(remarkGfm).parse(body)\n if (!tokens) {\n return []\n }\n\n const structuredResponse = {}\n let currentHeading = null\n for (const token of tokens.children) {\n const text = await unified()\n .use(remarkGfm)\n .use(remarkStringify)\n .stringify(token)\n let cleanText = stripFinalNewline(text)\n\n // remove `\\\\_`\n if (cleanText.indexOf('\\\\_') > -1) {\n cleanText = cleanText.replace(/\\\\_/g, '_')\n }\n\n // issue forms uses h3 as a heading\n if (token.type === 'heading') {\n currentHeading = slugify(token.children[0].value)\n structuredResponse[currentHeading] = {\n title: token.children[0].value,\n heading: token.depth,\n content: []\n }\n } else if (token.type === 'paragraph' && currentHeading) {\n const obj = structuredResponse[currentHeading]\n\n const date = parseDate(cleanText)\n const time = parseTime(cleanText)\n const duration = parseDuration(cleanText)\n\n if (date) {\n obj.date = date\n }\n\n if (time) {\n obj.time = time\n }\n\n if (duration) {\n obj.duration = duration\n }\n\n obj.content.push(cleanText)\n } else if (token.type === 'list') {\n const obj = structuredResponse[currentHeading]\n obj.text = cleanText\n obj.list = parseList(token).flat()\n } else if (token.type === 'html') {\n const obj = structuredResponse[currentHeading]\n obj.content.push(token.html)\n } else if (token.type === 'code') {\n const obj = structuredResponse[currentHeading]\n obj.lang = token.lang\n obj.text = cleanText\n } else {\n if (process.env.DEBUG) {\n console.log('unhandled token type')\n console.log(token)\n }\n }\n }\n\n for (const key in structuredResponse) {\n const token = structuredResponse[key]\n const content = token.content.filter(Boolean)\n if (content && content.length > 0) {\n if (content.length === 1) {\n token.text = content[0]\n }\n token.text = content.join('\\n\\n')\n }\n token.content = content\n }\n\n return structuredResponse\n}\n","'use strict'\n\nexport default function parseDuration(text) {\n let matched = false\n const duration = {\n hours: 0,\n minutes: 0\n }\n\n const hoursAndMinutes = new RegExp(/([0-9]+)h([0-9]+)m/)\n const hours = new RegExp(/([0-9]+)h/)\n\n if (text.match(hoursAndMinutes)) {\n matched = true\n const [, h, m] = text.match(hoursAndMinutes)\n duration.hours = parseInt(h)\n duration.minutes = parseInt(m)\n } else if (text.match(hours)) {\n matched = true\n const [, h] = text.match(hours)\n duration.hours = parseInt(h)\n duration.minutes = 0\n }\n\n if (matched) {\n return duration\n } else {\n return null\n }\n}\n"],"names":["commonDateFormats","commonTimeFormats","parseList","list","children","map","item","listItem","type","checked","child","text","c","link","url","value","filter","x","join","_settle","pact","state","s","_Pact","o","bind","v","then","observer","prototype","onFulfilled","onRejected","result","this","callback","e","_this","thenable","body","token","cleanText","obj","date","time","duration","key","content","unified","use","remarkParse","remarkGfm","parse","tokens","_temp2","structuredResponse","Boolean","length","currentHeading","_iterator","test","update","stage","shouldContinue","_isSettledPact","reject","_resumeAfterTest","_resumeAfterBody","updateValue","remarkStringify","stringify","match","stripFinalNewline","indexOf","replace","slugify","title","heading","depth","format","isMatch","zonedTimeToUtc","Date","toJSON","split","formatInTimeZone","parseTime","matched","hours","minutes","hoursAndMinutes","RegExp","_text$match","m","parseInt","parseDuration","push","flat","html","lang","process","env","DEBUG","console","log"],"mappings":"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"}
1
+ {"version":3,"file":"parse.cjs","sources":["../src/parsers/date.js","../src/parsers/time.js","../src/parsers/index.js","../src/parsers/list.js","../src/parse.js","../src/parsers/images.js","../src/parsers/links.js","../src/parsers/duration.js"],"sourcesContent":["'use strict'\n\nimport { parse, isMatch } from 'date-fns'\nimport { zonedTimeToUtc } from 'date-fns-tz'\n\nconst loc = 'UTC'\nconst commonDateFormats = [\n 'yyyy-MM-dd',\n 'dd/MM/yyyy',\n 'dd/MM/yy',\n 'dd-MM-yyyy',\n 'dd-MM-yy',\n 'dd.MM.yyyy',\n 'dd.MM.yy'\n]\n\nexport default function parseDate(text) {\n const match = commonDateFormats.map((format) => {\n return isMatch(text, format)\n })\n if (match.indexOf(true) > -1) {\n const date = zonedTimeToUtc(\n parse(text, commonDateFormats[match.indexOf(true)], new Date()),\n loc\n ).toJSON()\n return date.split('T')[0]\n } else {\n return null\n }\n}\n","'use strict'\n\nimport { parse, isMatch } from 'date-fns'\nimport { zonedTimeToUtc, formatInTimeZone } from 'date-fns-tz'\n\nconst loc = 'UTC'\nconst commonTimeFormats = [\n 'HH:mm',\n 'HH.mm',\n 'hh:mm aaa',\n 'hh:mm a..aa',\n 'hh:mm aaaa'\n]\n\nexport default function parseTime(text) {\n const match = commonTimeFormats.map((format) => {\n return isMatch(text, format)\n })\n if (match.indexOf(true) > -1) {\n const time = zonedTimeToUtc(\n parse(text, commonTimeFormats[match.indexOf(true)], new Date()),\n loc\n )\n return formatInTimeZone(time, loc, 'HH:mm')\n } else {\n return null\n }\n}\n","'use strict'\n\nimport date from './date.js'\nimport time from './time.js'\nimport duration from './duration.js'\nimport list from './list.js'\nimport images from './images.js'\nimport links from './links.js'\n\nexport const parseDate = date\nexport const parseTime = time\nexport const parseDuration = duration\nexport const parseList = list\nexport const parseImages = images\nexport const parseLinks = links\n","'use strict'\n\nexport default function parseList(list) {\n return list.children\n .map((item) => {\n const listItem = {}\n if (item.type === 'list') {\n return parseList(list)\n } else if (item.type === 'listItem') {\n listItem.checked = item.checked\n return item.children\n .map((child) => {\n if (child.type === 'paragraph') {\n listItem.text = child.children\n .map((c) => {\n if (c.type === 'link') {\n listItem.link = c.url\n return `[${c.children[0].value}](${c.url})`\n } else {\n return c.value\n }\n })\n .filter((x) => !!x)\n .join('')\n return listItem\n }\n })\n .filter((x) => !!x)\n }\n })\n .filter((x) => !!x)\n}\n","'use strict'\n\nimport { unified } from 'unified'\nimport remarkParse from 'remark-parse'\nimport remarkGfm from 'remark-gfm'\nimport slugify from '@sindresorhus/slugify'\nimport remarkStringify from 'remark-stringify'\nimport stripFinalNewline from 'strip-final-newline'\nimport createDebug from 'debug'\nconst debug = createDebug('body-parser')\n\nimport {\n parseDate,\n parseTime,\n parseDuration,\n parseList,\n parseImages,\n parseLinks\n} from './parsers/index.js'\n\nexport default async function parseMD(body) {\n debug('parseMD()')\n const tokens = await unified().use(remarkParse).use(remarkGfm).parse(body)\n if (!tokens) {\n return []\n }\n\n const structuredResponse = {}\n let currentHeading = null\n\n for (const token of tokens.children) {\n const text = await unified()\n .use(remarkGfm)\n .use(remarkStringify)\n .stringify(token)\n let cleanText = stripFinalNewline(text)\n\n // remove `\\\\_`\n if (cleanText.indexOf('\\\\_') > -1) {\n cleanText = cleanText.replace(/\\\\_/g, '_')\n }\n\n // issue forms uses h3 as a heading\n if (token.type === 'heading') {\n currentHeading = slugify(token.children[0].value)\n structuredResponse[currentHeading] = {\n title: token.children[0].value,\n heading: token.depth,\n content: []\n }\n } else if (token.type === 'paragraph' && currentHeading) {\n const obj = structuredResponse[currentHeading]\n\n const date = parseDate(cleanText)\n const images = parseImages(token.children)\n const links = parseLinks(token.children)\n const time = parseTime(cleanText)\n const duration = parseDuration(cleanText)\n\n if (date) {\n obj.date = date\n }\n\n if (time) {\n obj.time = time\n }\n\n if (duration) {\n obj.duration = duration\n }\n\n if (links && links.length > 0) {\n obj.links = links\n }\n\n if (images && images.length > 0) {\n obj.images = images\n }\n\n obj.content.push(cleanText)\n } else if (token.type === 'list') {\n const obj = structuredResponse[currentHeading]\n obj.text = cleanText\n obj.list = parseList(token).flat()\n } else if (token.type === 'html') {\n const obj = structuredResponse[currentHeading]\n obj.content.push(token.html)\n } else if (token.type === 'code') {\n const obj = structuredResponse[currentHeading]\n obj.lang = token.lang\n obj.text = cleanText\n } else {\n debug('unhandled token type')\n debug(token)\n }\n }\n\n for (const key in structuredResponse) {\n const token = structuredResponse[key]\n const content = token.content.filter(Boolean)\n if (content && content.length > 0) {\n if (content.length === 1) {\n token.text = content[0]\n }\n token.text = content.join('\\n\\n')\n }\n token.content = content\n }\n\n return structuredResponse\n}\n","'use strict'\n\nexport default function parseImage(props) {\n return props\n .filter((p) => p.type === 'image')\n .map((p) => {\n return {\n src: p.url,\n alt: p.alt\n }\n })\n}\n","'use strict'\n\nexport default function parseLinks(props) {\n return props\n .filter((p) => p.type === 'link')\n .map((p) => {\n return {\n src: p.url,\n alt: p.children[0].value\n }\n })\n}\n","'use strict'\n\nexport default function parseDuration(text) {\n let matched = false\n const duration = {\n hours: 0,\n minutes: 0\n }\n\n const hoursAndMinutes = new RegExp(/([0-9]+)h([0-9]+)m/)\n const hours = new RegExp(/([0-9]+)h/)\n\n if (text.match(hoursAndMinutes)) {\n matched = true\n const [, h, m] = text.match(hoursAndMinutes)\n duration.hours = parseInt(h)\n duration.minutes = parseInt(m)\n } else if (text.match(hours)) {\n matched = true\n const [, h] = text.match(hours)\n duration.hours = parseInt(h)\n duration.minutes = 0\n }\n\n if (matched) {\n return duration\n } else {\n return null\n }\n}\n"],"names":["commonDateFormats","commonTimeFormats","parseList","list","children","map","item","listItem","type","checked","child","text","c","link","url","value","filter","x","join","_settle","pact","state","s","_Pact","o","bind","v","then","observer","prototype","onFulfilled","onRejected","result","this","callback","e","_this","_isSettledPact","thenable","debug","createDebug","body","_iterator","_step","token","cleanText","obj","date","images","links","time","duration","key","content","Promise","resolve","unified","use","remarkParse","remarkGfm","parse","tokens","_temp2","structuredResponse","Boolean","length","currentHeading","_createForOfIteratorHelperLoose","_temp","test","update","stage","shouldContinue","updateValue","reject","_resumeAfterTest","_resumeAfterBody","_resumeAfterUpdate","_for","done","remarkStringify","stringify","_unified$use$use$stri","match","stripFinalNewline","indexOf","replace","slugify","title","heading","depth","format","isMatch","zonedTimeToUtc","Date","toJSON","split","p","src","alt","formatInTimeZone","parseTime","matched","hours","minutes","hoursAndMinutes","RegExp","_text$match","m","parseInt","_text$match2","parseDuration","push","flat","html","lang"],"mappings":"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"}
package/pkg/parse.js CHANGED
@@ -1,2 +1,2 @@
1
- import{unified as n}from"unified";import t from"remark-parse";import e from"remark-gfm";import r from"@sindresorhus/slugify";import i from"remark-stringify";import o from"strip-final-newline";import{isMatch as a,parse as u}from"date-fns";import{zonedTimeToUtc as f,formatInTimeZone as l}from"date-fns-tz";function c(n,t){(null==t||t>n.length)&&(t=n.length);for(var e=0,r=new Array(t);e<t;e++)r[e]=n[e];return r}var h=["yyyy-MM-dd","dd/MM/yyyy","dd/MM/yy","dd-MM-yyyy","dd-MM-yy","dd.MM.yyyy","dd.MM.yy"],s=["HH:mm","HH.mm","hh:mm aaa","hh:mm a..aa","hh:mm aaaa"],d=function n(t){return t.children.map(function(e){var r={};return"list"===e.type?n(t):"listItem"===e.type?(r.checked=e.checked,e.children.map(function(n){if("paragraph"===n.type)return r.text=n.children.map(function(n){return"link"===n.type?(r.link=n.url,"["+n.children[0].value+"]("+n.url+")"):n.value}).filter(function(n){return!!n}).join(""),r}).filter(function(n){return!!n})):void 0}).filter(function(n){return!!n})};function m(n,t,e){if(!n.s){if(e instanceof y){if(!e.s)return void(e.o=m.bind(null,n,t));1&t&&(t=e.s),e=e.v}if(e&&e.then)return void e.then(m.bind(null,n,t),m.bind(null,n,2));n.s=t,n.v=e;var r=n.o;r&&r(n)}}var p=function(p){try{var g,b,M,x,w,k,O,I,j,A,H,S,T;return Promise.resolve(n().use(t).use(e).parse(p)).then(function(t){function p(){for(H in U)(T=(S=U[H]).content.filter(Boolean))&&T.length>0&&(1===T.length&&(S.text=T[0]),S.text=T.join("\n\n")),S.content=T;return U}if(!t)return[];var U={},C=null;g=function(n,t){var e="undefined"!=typeof Symbol&&n[Symbol.iterator]||n["@@iterator"];if(e)return(e=e.call(n)).next.bind(e);if(Array.isArray(n)||(e=function(n,t){if(n){if("string"==typeof n)return c(n,t);var e=Object.prototype.toString.call(n).slice(8,-1);return"Object"===e&&n.constructor&&(e=n.constructor.name),"Map"===e||"Set"===e?Array.from(n):"Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)?c(n,t):void 0}}(n))){e&&(n=e);var r=0;return function(){return r>=n.length?{done:!0}:{done:!1,value:n[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(t.children);var E=function(n,t,e){for(var r;;){var i=n();if(v(i)&&(i=i.v),!i)return o;if(i.then){r=0;break}var o=e();if(o&&o.then){if(!v(o)){r=1;break}o=o.s}}var a=new y,u=m.bind(null,a,2);return(0===r?i.then(l):1===r?o.then(f):(void 0).then(function(){(i=n())?i.then?i.then(l).then(void 0,u):l(i):m(a,1,o)})).then(void 0,u),a;function f(t){o=t;do{if(!(i=n())||v(i)&&!i.v)return void m(a,1,o);if(i.then)return void i.then(l).then(void 0,u);v(o=e())&&(o=o.v)}while(!o||!o.then);o.then(f).then(void 0,u)}function l(n){n?(o=e())&&o.then?o.then(f).then(void 0,u):f(o):m(a,1,o)}}(function(){return!(b=g()).done},0,function(){return M=b.value,Promise.resolve(n().use(e).use(i).stringify(M)).then(function(n){var t,e;(x=o(n)).indexOf("\\_")>-1&&(x=x.replace(/\\_/g,"_")),"heading"===M.type?(C=r(M.children[0].value),U[C]={title:M.children[0].value,heading:M.depth,content:[]}):"paragraph"===M.type&&C?(w=U[C],t=x,e=h.map(function(n){return a(t,n)}),k=e.indexOf(!0)>-1?f(u(t,h[e.indexOf(!0)],new Date),"UTC").toJSON().split("T")[0]:null,O=function(n){var t=s.map(function(t){return a(n,t)});if(t.indexOf(!0)>-1){var e=f(u(n,s[t.indexOf(!0)],new Date),"UTC");return l(e,"UTC","HH:mm")}return null}(x),I=function(n){var t=!1,e={hours:0,minutes:0},r=new RegExp(/([0-9]+)h([0-9]+)m/),i=new RegExp(/([0-9]+)h/);if(n.match(r)){t=!0;var o=n.match(r),a=o[2];e.hours=parseInt(o[1]),e.minutes=parseInt(a)}else if(n.match(i)){t=!0;var u=n.match(i);e.hours=parseInt(u[1]),e.minutes=0}return t?e:null}(x),k&&(w.date=k),O&&(w.time=O),I&&(w.duration=I),w.content.push(x)):"list"===M.type?((j=U[C]).text=x,j.list=d(M).flat()):"html"===M.type?U[C].content.push(M.html):"code"===M.type?((A=U[C]).lang=M.lang,A.text=x):process.env.DEBUG&&(console.log("unhandled token type"),console.log(M))})});return E&&E.then?E.then(p):p()})}catch(n){return Promise.reject(n)}};const y=/*#__PURE__*/function(){function n(){}return n.prototype.then=function(t,e){const r=new n,i=this.s;if(i){const n=1&i?t:e;if(n){try{m(r,1,n(this.v))}catch(n){m(r,2,n)}return r}return this}return this.o=function(n){try{const i=n.v;1&n.s?m(r,1,t?t(i):i):e?m(r,1,e(i)):m(r,2,i)}catch(n){m(r,2,n)}},r},n}();function v(n){return n instanceof y&&1&n.s}export{p as default};
1
+ import{unified as n}from"unified";import t from"remark-parse";import e from"remark-gfm";import r from"@sindresorhus/slugify";import i from"remark-stringify";import o from"strip-final-newline";import a from"debug";import{isMatch as u,parse as f}from"date-fns";import{zonedTimeToUtc as l,formatInTimeZone as h}from"date-fns-tz";function c(n,t){(null==t||t>n.length)&&(t=n.length);for(var e=0,r=new Array(t);e<t;e++)r[e]=n[e];return r}var d=["yyyy-MM-dd","dd/MM/yyyy","dd/MM/yy","dd-MM-yyyy","dd-MM-yy","dd.MM.yyyy","dd.MM.yy"],m=["HH:mm","HH.mm","hh:mm aaa","hh:mm a..aa","hh:mm aaaa"],s=function n(t){return t.children.map(function(e){var r={};return"list"===e.type?n(t):"listItem"===e.type?(r.checked=e.checked,e.children.map(function(n){if("paragraph"===n.type)return r.text=n.children.map(function(n){return"link"===n.type?(r.link=n.url,"["+n.children[0].value+"]("+n.url+")"):n.value}).filter(function(n){return!!n}).join(""),r}).filter(function(n){return!!n})):void 0}).filter(function(n){return!!n})};function p(n,t,e){if(!n.s){if(e instanceof y){if(!e.s)return void(e.o=p.bind(null,n,t));1&t&&(t=e.s),e=e.v}if(e&&e.then)return void e.then(p.bind(null,n,t),p.bind(null,n,2));n.s=t,n.v=e;var r=n.o;r&&r(n)}}var v=function(a){try{var v,M,x,k,w,O,I,j,A,H,S,T,C,U,D;return b("parseMD()"),Promise.resolve(n().use(t).use(e).parse(a)).then(function(t){function a(){for(C in E)(D=(U=E[C]).content.filter(Boolean))&&D.length>0&&(1===D.length&&(U.text=D[0]),U.text=D.join("\n\n")),U.content=D;return E}if(!t)return[];var E={},P=null;v=function(n,t){var e="undefined"!=typeof Symbol&&n[Symbol.iterator]||n["@@iterator"];if(e)return(e=e.call(n)).next.bind(e);if(Array.isArray(n)||(e=function(n,t){if(n){if("string"==typeof n)return c(n,t);var e=Object.prototype.toString.call(n).slice(8,-1);return"Object"===e&&n.constructor&&(e=n.constructor.name),"Map"===e||"Set"===e?Array.from(n):"Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)?c(n,t):void 0}}(n))){e&&(n=e);var r=0;return function(){return r>=n.length?{done:!0}:{done:!1,value:n[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(t.children);var _=function(n,t,e){for(var r;;){var i=n();if(g(i)&&(i=i.v),!i)return o;if(i.then){r=0;break}var o=e();if(o&&o.then){if(!g(o)){r=1;break}o=o.s}if(t){var a=t();if(a&&a.then&&!g(a)){r=2;break}}}var u=new y,f=p.bind(null,u,2);return(0===r?i.then(h):1===r?o.then(l):a.then(c)).then(void 0,f),u;function l(r){o=r;do{if(t&&(a=t())&&a.then&&!g(a))return void a.then(c).then(void 0,f);if(!(i=n())||g(i)&&!i.v)return void p(u,1,o);if(i.then)return void i.then(h).then(void 0,f);g(o=e())&&(o=o.v)}while(!o||!o.then);o.then(l).then(void 0,f)}function h(n){n?(o=e())&&o.then?o.then(l).then(void 0,f):l(o):p(u,1,o)}function c(){(i=n())?i.then?i.then(h).then(void 0,f):h(i):p(u,1,o)}}(function(){return!(M=v()).done},void 0,function(){return x=M.value,Promise.resolve(n().use(e).use(i).stringify(x)).then(function(n){var t,e;(k=o(n)).indexOf("\\_")>-1&&(k=k.replace(/\\_/g,"_")),"heading"===x.type?(P=r(x.children[0].value),E[P]={title:x.children[0].value,heading:x.depth,content:[]}):"paragraph"===x.type&&P?(w=E[P],t=k,e=d.map(function(n){return u(t,n)}),O=e.indexOf(!0)>-1?l(f(t,d[e.indexOf(!0)],new Date),"UTC").toJSON().split("T")[0]:null,I=x.children.filter(function(n){return"image"===n.type}).map(function(n){return{src:n.url,alt:n.alt}}),j=x.children.filter(function(n){return"link"===n.type}).map(function(n){return{src:n.url,alt:n.children[0].value}}),A=function(n){var t=m.map(function(t){return u(n,t)});if(t.indexOf(!0)>-1){var e=l(f(n,m[t.indexOf(!0)],new Date),"UTC");return h(e,"UTC","HH:mm")}return null}(k),H=function(n){var t=!1,e={hours:0,minutes:0},r=new RegExp(/([0-9]+)h([0-9]+)m/),i=new RegExp(/([0-9]+)h/);if(n.match(r)){t=!0;var o=n.match(r),a=o[2];e.hours=parseInt(o[1]),e.minutes=parseInt(a)}else if(n.match(i)){t=!0;var u=n.match(i);e.hours=parseInt(u[1]),e.minutes=0}return t?e:null}(k),O&&(w.date=O),A&&(w.time=A),H&&(w.duration=H),j&&j.length>0&&(w.links=j),I&&I.length>0&&(w.images=I),w.content.push(k)):"list"===x.type?((S=E[P]).text=k,S.list=s(x).flat()):"html"===x.type?E[P].content.push(x.html):"code"===x.type?((T=E[P]).lang=x.lang,T.text=k):(b("unhandled token type"),b(x))})});return _&&_.then?_.then(a):a()})}catch(n){return Promise.reject(n)}},y=/*#__PURE__*/function(){function n(){}return n.prototype.then=function(t,e){var r=new n,i=this.s;if(i){var o=1&i?t:e;if(o){try{p(r,1,o(this.v))}catch(n){p(r,2,n)}return r}return this}return this.o=function(n){try{var i=n.v;1&n.s?p(r,1,t?t(i):i):e?p(r,1,e(i)):p(r,2,i)}catch(n){p(r,2,n)}},r},n}();function g(n){return n instanceof y&&1&n.s}var b=a("body-parser");export{v as default};
2
2
  //# sourceMappingURL=parse.js.map
package/pkg/parse.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"parse.js","sources":["../src/parsers/date.js","../src/parsers/time.js","../src/parsers/index.js","../src/parsers/list.js","../src/parse.js","../src/parsers/duration.js"],"sourcesContent":["'use strict'\n\nimport { parse, isMatch } from 'date-fns'\nimport { zonedTimeToUtc } from 'date-fns-tz'\n\nconst loc = 'UTC'\nconst commonDateFormats = [\n 'yyyy-MM-dd',\n 'dd/MM/yyyy',\n 'dd/MM/yy',\n 'dd-MM-yyyy',\n 'dd-MM-yy',\n 'dd.MM.yyyy',\n 'dd.MM.yy'\n]\n\nexport default function parseDate(text) {\n const match = commonDateFormats.map((format) => {\n return isMatch(text, format)\n })\n if (match.indexOf(true) > -1) {\n const date = zonedTimeToUtc(\n parse(text, commonDateFormats[match.indexOf(true)], new Date()),\n loc\n ).toJSON()\n return date.split('T')[0]\n } else {\n return null\n }\n}\n","'use strict'\n\nimport { parse, isMatch } from 'date-fns'\nimport { zonedTimeToUtc, formatInTimeZone } from 'date-fns-tz'\n\nconst loc = 'UTC'\nconst commonTimeFormats = [\n 'HH:mm',\n 'HH.mm',\n 'hh:mm aaa',\n 'hh:mm a..aa',\n 'hh:mm aaaa'\n]\n\nexport default function parseTime(text) {\n const match = commonTimeFormats.map((format) => {\n return isMatch(text, format)\n })\n if (match.indexOf(true) > -1) {\n const time = zonedTimeToUtc(\n parse(text, commonTimeFormats[match.indexOf(true)], new Date()),\n loc\n )\n return formatInTimeZone(time, loc, 'HH:mm')\n } else {\n return null\n }\n}\n","'use strict'\n\nimport date from './date.js'\nimport time from './time.js'\nimport duration from './duration.js'\nimport list from './list.js'\n\nexport const parseDate = date\nexport const parseTime = time\nexport const parseDuration = duration\nexport const parseList = list\n","'use strict'\n\nexport default function parseList(list) {\n return list.children\n .map((item) => {\n const listItem = {}\n if (item.type === 'list') {\n return parseList(list)\n } else if (item.type === 'listItem') {\n listItem.checked = item.checked\n return item.children\n .map((child) => {\n if (child.type === 'paragraph') {\n listItem.text = child.children\n .map((c) => {\n if (c.type === 'link') {\n listItem.link = c.url\n return `[${c.children[0].value}](${c.url})`\n } else {\n return c.value\n }\n })\n .filter((x) => !!x)\n .join('')\n return listItem\n }\n })\n .filter((x) => !!x)\n }\n })\n .filter((x) => !!x)\n}\n","'use strict'\n\nimport { unified } from 'unified'\nimport remarkParse from 'remark-parse'\nimport remarkGfm from 'remark-gfm'\nimport slugify from '@sindresorhus/slugify'\nimport remarkStringify from 'remark-stringify'\nimport stripFinalNewline from 'strip-final-newline'\n\nimport {\n parseDate,\n parseTime,\n parseDuration,\n parseList\n} from './parsers/index.js'\n\nexport default async function parseMD(body) {\n const tokens = await unified().use(remarkParse).use(remarkGfm).parse(body)\n if (!tokens) {\n return []\n }\n\n const structuredResponse = {}\n let currentHeading = null\n for (const token of tokens.children) {\n const text = await unified()\n .use(remarkGfm)\n .use(remarkStringify)\n .stringify(token)\n let cleanText = stripFinalNewline(text)\n\n // remove `\\\\_`\n if (cleanText.indexOf('\\\\_') > -1) {\n cleanText = cleanText.replace(/\\\\_/g, '_')\n }\n\n // issue forms uses h3 as a heading\n if (token.type === 'heading') {\n currentHeading = slugify(token.children[0].value)\n structuredResponse[currentHeading] = {\n title: token.children[0].value,\n heading: token.depth,\n content: []\n }\n } else if (token.type === 'paragraph' && currentHeading) {\n const obj = structuredResponse[currentHeading]\n\n const date = parseDate(cleanText)\n const time = parseTime(cleanText)\n const duration = parseDuration(cleanText)\n\n if (date) {\n obj.date = date\n }\n\n if (time) {\n obj.time = time\n }\n\n if (duration) {\n obj.duration = duration\n }\n\n obj.content.push(cleanText)\n } else if (token.type === 'list') {\n const obj = structuredResponse[currentHeading]\n obj.text = cleanText\n obj.list = parseList(token).flat()\n } else if (token.type === 'html') {\n const obj = structuredResponse[currentHeading]\n obj.content.push(token.html)\n } else if (token.type === 'code') {\n const obj = structuredResponse[currentHeading]\n obj.lang = token.lang\n obj.text = cleanText\n } else {\n if (process.env.DEBUG) {\n console.log('unhandled token type')\n console.log(token)\n }\n }\n }\n\n for (const key in structuredResponse) {\n const token = structuredResponse[key]\n const content = token.content.filter(Boolean)\n if (content && content.length > 0) {\n if (content.length === 1) {\n token.text = content[0]\n }\n token.text = content.join('\\n\\n')\n }\n token.content = content\n }\n\n return structuredResponse\n}\n","'use strict'\n\nexport default function parseDuration(text) {\n let matched = false\n const duration = {\n hours: 0,\n minutes: 0\n }\n\n const hoursAndMinutes = new RegExp(/([0-9]+)h([0-9]+)m/)\n const hours = new RegExp(/([0-9]+)h/)\n\n if (text.match(hoursAndMinutes)) {\n matched = true\n const [, h, m] = text.match(hoursAndMinutes)\n duration.hours = parseInt(h)\n duration.minutes = parseInt(m)\n } else if (text.match(hours)) {\n matched = true\n const [, h] = text.match(hours)\n duration.hours = parseInt(h)\n duration.minutes = 0\n }\n\n if (matched) {\n return duration\n } else {\n return null\n }\n}\n"],"names":["commonDateFormats","commonTimeFormats","parseList","list","children","map","item","listItem","type","checked","child","text","c","link","url","value","filter","x","join","_settle","pact","state","s","_Pact","o","bind","v","then","observer","parseMD","body","token","cleanText","obj","date","time","duration","key","content","unified","use","remarkParse","remarkGfm","parse","tokens","_temp2","structuredResponse","Boolean","length","currentHeading","_iterator","test","update","stage","shouldContinue","_isSettledPact","result","reject","_resumeAfterTest","_resumeAfterBody","updateValue","remarkStringify","stringify","match","stripFinalNewline","indexOf","replace","slugify","title","heading","depth","format","isMatch","zonedTimeToUtc","Date","toJSON","split","formatInTimeZone","parseTime","matched","hours","minutes","hoursAndMinutes","RegExp","_text$match","m","parseInt","parseDuration","push","flat","html","lang","process","env","DEBUG","console","log","prototype","onFulfilled","onRejected","this","callback","e","_this","thenable"],"mappings":"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"}
1
+ {"version":3,"file":"parse.js","sources":["../src/parsers/date.js","../src/parsers/time.js","../src/parsers/index.js","../src/parsers/list.js","../src/parse.js","../src/parsers/images.js","../src/parsers/links.js","../src/parsers/duration.js"],"sourcesContent":["'use strict'\n\nimport { parse, isMatch } from 'date-fns'\nimport { zonedTimeToUtc } from 'date-fns-tz'\n\nconst loc = 'UTC'\nconst commonDateFormats = [\n 'yyyy-MM-dd',\n 'dd/MM/yyyy',\n 'dd/MM/yy',\n 'dd-MM-yyyy',\n 'dd-MM-yy',\n 'dd.MM.yyyy',\n 'dd.MM.yy'\n]\n\nexport default function parseDate(text) {\n const match = commonDateFormats.map((format) => {\n return isMatch(text, format)\n })\n if (match.indexOf(true) > -1) {\n const date = zonedTimeToUtc(\n parse(text, commonDateFormats[match.indexOf(true)], new Date()),\n loc\n ).toJSON()\n return date.split('T')[0]\n } else {\n return null\n }\n}\n","'use strict'\n\nimport { parse, isMatch } from 'date-fns'\nimport { zonedTimeToUtc, formatInTimeZone } from 'date-fns-tz'\n\nconst loc = 'UTC'\nconst commonTimeFormats = [\n 'HH:mm',\n 'HH.mm',\n 'hh:mm aaa',\n 'hh:mm a..aa',\n 'hh:mm aaaa'\n]\n\nexport default function parseTime(text) {\n const match = commonTimeFormats.map((format) => {\n return isMatch(text, format)\n })\n if (match.indexOf(true) > -1) {\n const time = zonedTimeToUtc(\n parse(text, commonTimeFormats[match.indexOf(true)], new Date()),\n loc\n )\n return formatInTimeZone(time, loc, 'HH:mm')\n } else {\n return null\n }\n}\n","'use strict'\n\nimport date from './date.js'\nimport time from './time.js'\nimport duration from './duration.js'\nimport list from './list.js'\nimport images from './images.js'\nimport links from './links.js'\n\nexport const parseDate = date\nexport const parseTime = time\nexport const parseDuration = duration\nexport const parseList = list\nexport const parseImages = images\nexport const parseLinks = links\n","'use strict'\n\nexport default function parseList(list) {\n return list.children\n .map((item) => {\n const listItem = {}\n if (item.type === 'list') {\n return parseList(list)\n } else if (item.type === 'listItem') {\n listItem.checked = item.checked\n return item.children\n .map((child) => {\n if (child.type === 'paragraph') {\n listItem.text = child.children\n .map((c) => {\n if (c.type === 'link') {\n listItem.link = c.url\n return `[${c.children[0].value}](${c.url})`\n } else {\n return c.value\n }\n })\n .filter((x) => !!x)\n .join('')\n return listItem\n }\n })\n .filter((x) => !!x)\n }\n })\n .filter((x) => !!x)\n}\n","'use strict'\n\nimport { unified } from 'unified'\nimport remarkParse from 'remark-parse'\nimport remarkGfm from 'remark-gfm'\nimport slugify from '@sindresorhus/slugify'\nimport remarkStringify from 'remark-stringify'\nimport stripFinalNewline from 'strip-final-newline'\nimport createDebug from 'debug'\nconst debug = createDebug('body-parser')\n\nimport {\n parseDate,\n parseTime,\n parseDuration,\n parseList,\n parseImages,\n parseLinks\n} from './parsers/index.js'\n\nexport default async function parseMD(body) {\n debug('parseMD()')\n const tokens = await unified().use(remarkParse).use(remarkGfm).parse(body)\n if (!tokens) {\n return []\n }\n\n const structuredResponse = {}\n let currentHeading = null\n\n for (const token of tokens.children) {\n const text = await unified()\n .use(remarkGfm)\n .use(remarkStringify)\n .stringify(token)\n let cleanText = stripFinalNewline(text)\n\n // remove `\\\\_`\n if (cleanText.indexOf('\\\\_') > -1) {\n cleanText = cleanText.replace(/\\\\_/g, '_')\n }\n\n // issue forms uses h3 as a heading\n if (token.type === 'heading') {\n currentHeading = slugify(token.children[0].value)\n structuredResponse[currentHeading] = {\n title: token.children[0].value,\n heading: token.depth,\n content: []\n }\n } else if (token.type === 'paragraph' && currentHeading) {\n const obj = structuredResponse[currentHeading]\n\n const date = parseDate(cleanText)\n const images = parseImages(token.children)\n const links = parseLinks(token.children)\n const time = parseTime(cleanText)\n const duration = parseDuration(cleanText)\n\n if (date) {\n obj.date = date\n }\n\n if (time) {\n obj.time = time\n }\n\n if (duration) {\n obj.duration = duration\n }\n\n if (links && links.length > 0) {\n obj.links = links\n }\n\n if (images && images.length > 0) {\n obj.images = images\n }\n\n obj.content.push(cleanText)\n } else if (token.type === 'list') {\n const obj = structuredResponse[currentHeading]\n obj.text = cleanText\n obj.list = parseList(token).flat()\n } else if (token.type === 'html') {\n const obj = structuredResponse[currentHeading]\n obj.content.push(token.html)\n } else if (token.type === 'code') {\n const obj = structuredResponse[currentHeading]\n obj.lang = token.lang\n obj.text = cleanText\n } else {\n debug('unhandled token type')\n debug(token)\n }\n }\n\n for (const key in structuredResponse) {\n const token = structuredResponse[key]\n const content = token.content.filter(Boolean)\n if (content && content.length > 0) {\n if (content.length === 1) {\n token.text = content[0]\n }\n token.text = content.join('\\n\\n')\n }\n token.content = content\n }\n\n return structuredResponse\n}\n","'use strict'\n\nexport default function parseImage(props) {\n return props\n .filter((p) => p.type === 'image')\n .map((p) => {\n return {\n src: p.url,\n alt: p.alt\n }\n })\n}\n","'use strict'\n\nexport default function parseLinks(props) {\n return props\n .filter((p) => p.type === 'link')\n .map((p) => {\n return {\n src: p.url,\n alt: p.children[0].value\n }\n })\n}\n","'use strict'\n\nexport default function parseDuration(text) {\n let matched = false\n const duration = {\n hours: 0,\n minutes: 0\n }\n\n const hoursAndMinutes = new RegExp(/([0-9]+)h([0-9]+)m/)\n const hours = new RegExp(/([0-9]+)h/)\n\n if (text.match(hoursAndMinutes)) {\n matched = true\n const [, h, m] = text.match(hoursAndMinutes)\n duration.hours = parseInt(h)\n duration.minutes = parseInt(m)\n } else if (text.match(hours)) {\n matched = true\n const [, h] = text.match(hours)\n duration.hours = parseInt(h)\n duration.minutes = 0\n }\n\n if (matched) {\n return duration\n } else {\n return null\n }\n}\n"],"names":["commonDateFormats","commonTimeFormats","parseList","list","children","map","item","listItem","type","checked","child","text","c","link","url","value","filter","x","join","_settle","pact","state","s","_Pact","o","bind","v","then","observer","parseMD","body","_iterator","_step","token","cleanText","obj","date","images","links","time","duration","key","content","Promise","debug","resolve","unified","use","remarkParse","remarkGfm","parse","tokens","_temp2","structuredResponse","Boolean","length","currentHeading","_createForOfIteratorHelperLoose","_temp","test","update","stage","shouldContinue","_isSettledPact","result","updateValue","reject","_resumeAfterTest","_resumeAfterBody","_resumeAfterUpdate","_for","done","remarkStringify","stringify","_unified$use$use$stri","match","stripFinalNewline","indexOf","replace","slugify","title","heading","depth","format","isMatch","zonedTimeToUtc","Date","toJSON","split","p","src","alt","formatInTimeZone","parseTime","matched","hours","minutes","hoursAndMinutes","RegExp","_text$match","m","parseInt","_text$match2","parseDuration","push","flat","html","lang","e","prototype","onFulfilled","onRejected","this","callback","_this","thenable","createDebug"],"mappings":"gbAKA,IACMA,EAAoB,CACxB,aACA,aACA,WACA,aACA,WACA,aACA,YCPIC,EAAoB,CACxB,QACA,QACA,YACA,cACA,cCCWC,ECVE,SAASA,EAAUC,GAChC,OAAOA,EAAKC,SACTC,IAAI,SAACC,GACJ,IAAMC,EAAW,CAAE,EACnB,MAAkB,SAAdD,EAAKE,KACAN,EAAUC,GACM,aAAdG,EAAKE,MACdD,EAASE,QAAUH,EAAKG,QACjBH,EAAKF,SACTC,IAAI,SAACK,GACJ,GAAmB,cAAfA,EAAMF,KAYR,OAXAD,EAASI,KAAOD,EAAMN,SACnBC,IAAI,SAACO,GACJ,MAAe,SAAXA,EAAEJ,MACJD,EAASM,KAAOD,EAAEE,IACPF,IAAAA,EAAER,SAAS,GAAGW,MAAK,KAAKH,EAAEE,SAE9BF,EAAEG,KAEb,GACCC,OAAO,SAACC,WAAQA,CAAC,GACjBC,KAAK,IACDX,CAEX,GACCS,OAAO,SAACC,GAAC,QAAOA,CAAC,SAnBf,CAqBT,GACCD,OAAO,SAACC,WAAQA,CAAC,EACtB,ECQO,SAASE,EAAQC,EAAMC,EAAON,GACpC,IAAKK,EAAKE,EAAG,CACZ,GAAIP,aAAiBQ,EAAO,CAC3B,IAAIR,EAAMO,EAOT,YADAP,EAAMS,EAAIL,EAAQM,KAAK,KAAML,EAAMC,IALvB,EAARA,IACHA,EAAQN,EAAMO,GAEfP,EAAQA,EAAMW,CAKhB,CACA,GAAIX,GAASA,EAAMY,KAElB,YADAZ,EAAMY,KAAKR,EAAQM,KAAK,KAAML,EAAMC,GAAQF,EAAQM,KAAK,KAAML,EAAM,IAGtEA,EAAKE,EAAID,EACTD,EAAKM,EAAIX,EACT,IAAMa,EAAWR,EAAKI,EAClBI,GACHA,EAASR,EAEX,CACD,CA3C8B,IAAAS,EAAA,SAAQC,GAAM,IAAA,IAAAC,EAAAC,EAU/BC,EAKLC,EAgBIC,EAEAC,EACAC,EACAC,EACAC,EACAC,EAwBAL,EAOAA,EASCM,EACHR,EACAS,EA9EUC,OAAlBC,EAAM,aAAYD,QAAAE,QACGC,IAAUC,IAAIC,GAAaD,IAAIE,GAAWC,MAAMpB,IAAKH,cAApEwB,GAAM,SAAAC,IA2EZ,IAAWX,KAAOY,GAEVX,GADAT,EAAQoB,EAAmBZ,IACXC,QAAQ1B,OAAOsC,WACtBZ,EAAQa,OAAS,IACP,IAAnBb,EAAQa,SACVtB,EAAMtB,KAAO+B,EAAQ,IAEvBT,EAAMtB,KAAO+B,EAAQxB,KAAK,SAE5Be,EAAMS,QAAUA,EAGlB,OAAOW,CAAkB,CAtFzB,IAAKF,EACH,MAAO,GAGT,IAAME,EAAqB,CAAE,EACzBG,EAAiB,KAAIzB,2qBAAA0B,CAELN,EAAO/C,UAAQsD,IAAAA,EAiO9B,SAAcC,EAAMC,EAAQ9B,GAElC,IADA,IAAI+B,IACK,CACR,IAAIC,EAAiBH,IAIrB,GAHII,EAAeD,KAClBA,EAAiBA,EAAepC,IAE5BoC,EACJ,OAAOE,EAER,GAAIF,EAAenC,KAAM,CACxBkC,EAAQ,EACR,KACD,CACA,IAAIG,EAASlC,IACb,GAAIkC,GAAUA,EAAOrC,KAAM,CAC1B,IAAIoC,EAAeC,GAEZ,CACNH,EAAQ,EACR,KACD,CAJCG,EAASA,EAAO1C,CAKlB,CACA,GAAIsC,EAAQ,CACX,IAAIK,EAAcL,IAClB,GAAIK,GAAeA,EAAYtC,OAASoC,EAAeE,GAAc,CACpEJ,EAAQ,EACR,KACD,CACD,CACD,CACA,IAAIzC,EAAO,IAAIG,EACX2C,EAAS/C,EAAQM,KAAK,KAAML,EAAM,GAEtC,OADW,IAAVyC,EAAcC,EAAenC,KAAKwC,GAA8B,IAAVN,EAAcG,EAAOrC,KAAKyC,GAAoBH,EAAYtC,KAAK0C,IAAqB1C,UAAK,EAAQuC,GACjJ9C,EACP,SAASgD,EAAiBrD,GACzBiD,EAASjD,EACT,EAAG,CACF,GAAI6C,IACHK,EAAcL,MACKK,EAAYtC,OAASoC,EAAeE,GAEtD,YADAA,EAAYtC,KAAK0C,GAAoB1C,UAAK,EAAQuC,GAKpD,KADAJ,EAAiBH,MACOI,EAAeD,KAAoBA,EAAepC,EAEzE,YADAP,EAAQC,EAAM,EAAG4C,GAGlB,GAAIF,EAAenC,KAElB,YADAmC,EAAenC,KAAKwC,GAAkBxC,UAAK,EAAQuC,GAIhDH,EADJC,EAASlC,OAERkC,EAASA,EAAOtC,EAElB,QAAUsC,IAAWA,EAAOrC,MAC5BqC,EAAOrC,KAAKyC,GAAkBzC,UAAK,EAAQuC,EAC5C,CACA,SAASC,EAAiBL,GACrBA,GACHE,EAASlC,MACKkC,EAAOrC,KACpBqC,EAAOrC,KAAKyC,GAAkBzC,UAAK,EAAQuC,GAE3CE,EAAiBJ,GAGlB7C,EAAQC,EAAM,EAAG4C,EAEnB,CACA,SAASK,KACJP,EAAiBH,KAChBG,EAAenC,KAClBmC,EAAenC,KAAKwC,GAAkBxC,UAAK,EAAQuC,GAEnDC,EAAiBL,GAGlB3C,EAAQC,EAAM,EAAG4C,EAEnB,CACD,CArTqCM,CAAA,WAAA,QAAAtC,EAAAD,KAAAwC,IAAA,OAAA,EAAA,WAAnB5B,OAALV,EAAKD,EAAAjB,MAAA4B,QAAAE,QACKC,IAChBC,IAAIE,GACJF,IAAIyB,GACJC,UAAUxC,IAAMN,cAAA+C,GChCC,ILcU/D,EAC1BgE,GIkBAzC,EAAY0C,EAJNF,IAOIG,QAAQ,QAAU,IAC9B3C,EAAYA,EAAU4C,QAAQ,OAAQ,MAIrB,YAAf7C,EAAMzB,MACRgD,EAAiBuB,EAAQ9C,EAAM7B,SAAS,GAAGW,OAC3CsC,EAAmBG,GAAkB,CACnCwB,MAAO/C,EAAM7B,SAAS,GAAGW,MACzBkE,QAAShD,EAAMiD,MACfxC,QAAS,KAEa,cAAfT,EAAMzB,MAAwBgD,GACjCrB,EAAMkB,EAAmBG,GJnCH7C,EIqCLuB,EJpCrByC,EAAQ3E,EAAkBK,IAAI,SAAC8E,GACnC,OAAOC,EAAQzE,EAAMwE,EACvB,GIkCU/C,EJjCNuC,EAAME,SAAQ,IAAS,EACZQ,EACXnC,EAAMvC,EAAMX,EAAkB2E,EAAME,SAAQ,IAAQ,IAAIS,MAjBlD,OAmBNC,SACUC,MAAM,KAAK,QI6BfnD,EAAqBJ,EAAM7B,SClDlCY,OAAO,SAACyE,GAAM,MAAW,UAAXA,EAAEjF,IAAgB,GAChCH,IAAI,SAACoF,GACJ,MAAO,CACLC,IAAKD,EAAE3E,IACP6E,IAAKF,EAAEE,IAEX,GD6CQrD,EAAmBL,EAAM7B,SEnDhCY,OAAO,SAACyE,GAAM,MAAW,SAAXA,EAAEjF,IAAe,GAC/BH,IAAI,SAACoF,GACJ,MAAO,CACLC,IAAKD,EAAE3E,IACP6E,IAAKF,EAAErF,SAAS,GAAGW,MAEvB,GF8CQwB,EH1CG,SAAmB5B,GAChC,IAAMgE,EAAQ1E,EAAkBI,IAAI,SAAC8E,GACnC,OAAOC,EAAQzE,EAAMwE,EACvB,GACA,GAAIR,EAAME,SAAQ,IAAS,EAAG,CAC5B,IAAMtC,EAAO8C,EACXnC,EAAMvC,EAAMV,EAAkB0E,EAAME,SAAQ,IAAQ,IAAIS,MAflD,OAkBR,OAAOM,EAAiBrD,EAlBhB,MAkB2B,QACrC,CACE,OAAO,IAEX,CG6BmBsD,CAAU3D,GACjBM,EGvDY,SAAc7B,GACpC,IAAImF,GAAU,EACRtD,EAAW,CACfuD,MAAO,EACPC,QAAS,GAGLC,EAAkB,IAAIC,OAAO,sBAC7BH,EAAQ,IAAIG,OAAO,aAEzB,GAAIvF,EAAKgE,MAAMsB,GAAkB,CAC/BH,GAAU,EACV,IAAAK,EAAiBxF,EAAKgE,MAAMsB,GAAhBG,EAACD,EAAA,GACb3D,EAASuD,MAAQM,SADPF,EAAEC,IAEZ5D,EAASwD,QAAUK,SAASD,EAC9B,MAAO,GAAIzF,EAAKgE,MAAMoB,GAAQ,CAC5BD,GAAU,EACV,IAAAQ,EAAc3F,EAAKgE,MAAMoB,GACzBvD,EAASuD,MAAQM,SADPC,EACV9D,IACAA,EAASwD,QAAU,CACrB,CAEA,OAAIF,EACKtD,MAIX,CH4BuB+D,CAAcrE,GAE3BE,IACFD,EAAIC,KAAOA,GAGTG,IACFJ,EAAII,KAAOA,GAGTC,IACFL,EAAIK,SAAWA,GAGbF,GAASA,EAAMiB,OAAS,IAC1BpB,EAAIG,MAAQA,GAGVD,GAAUA,EAAOkB,OAAS,IAC5BpB,EAAIE,OAASA,GAGfF,EAAIO,QAAQ8D,KAAKtE,IACO,SAAfD,EAAMzB,OACT2B,EAAMkB,EAAmBG,IAC3B7C,KAAOuB,EACXC,EAAIhC,KAAOD,EAAU+B,GAAOwE,QACJ,SAAfxE,EAAMzB,KACH6C,EAAmBG,GAC3Bd,QAAQ8D,KAAKvE,EAAMyE,MACC,SAAfzE,EAAMzB,OACT2B,EAAMkB,EAAmBG,IAC3BmD,KAAO1E,EAAM0E,KACjBxE,EAAIxB,KAAOuB,IAEXU,EAAM,wBACNA,EAAMX,GACP,EACH,GAAC,OAAAyB,GAAAA,EAAA/B,KAAA+B,EAAA/B,KAAAyB,GAAAA,GAAA,EAeH,CAAC,MAAAwD,UAAAjE,QAAAuB,OAAA0C,EA7GY,CAAA,EAAArF,eAAsB,WAClC,SAAAA,IAAiB,CAiCjB,OAhCAA,EAAMsF,UAAUlF,KAAO,SAASmF,EAAaC,GAC5C,IAAM/C,EAAS,IAAAzC,EACTF,EAAQ2F,KAAK1F,EACnB,GAAID,EAAO,CACV,IAAM4F,EAAmB,EAAR5F,EAAYyF,EAAcC,EAC3C,GAAIE,EAAU,CACb,IACC9F,EAAQ6C,EAAQ,EAAGiD,EAASD,KAAKtF,GAClC,CAAE,MAAOkF,GACRzF,EAAQ6C,EAAQ,EAAG4C,EACpB,CACA,OAAO5C,CACR,CACC,OAAOgD,IAET,CAeA,OAdAA,KAAKxF,EAAI,SAAS0F,GACjB,IACC,IAAMnG,EAAQmG,EAAMxF,EACN,EAAVwF,EAAM5F,EACTH,EAAQ6C,EAAQ,EAAG8C,EAAcA,EAAY/F,GAASA,GAC5CgG,EACV5F,EAAQ6C,EAAQ,EAAG+C,EAAWhG,IAE9BI,EAAQ6C,EAAQ,EAAGjD,EAErB,CAAE,MAAO6F,GACRzF,EAAQ6C,EAAQ,EAAG4C,EACpB,CACD,EACO5C,CACR,EACAzC,CACD,CAnCmC,GAgE5B,SAASwC,EAAeoD,GAC9B,OAAOA,aAAoB5F,GAAsB,EAAb4F,EAAS7F,CAC9C,CAgRC,IA1UKsB,EAAQwE,EAAY"}
package/pkg/parse.umd.js CHANGED
@@ -1,2 +1,2 @@
1
- !function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n(require("unified"),require("remark-parse"),require("remark-gfm"),require("@sindresorhus/slugify"),require("remark-stringify"),require("strip-final-newline"),require("date-fns"),require("date-fns-tz")):"function"==typeof define&&define.amd?define(["unified","remark-parse","remark-gfm","@sindresorhus/slugify","remark-stringify","strip-final-newline","date-fns","date-fns-tz"],n):(e||self).issueFormsBodyParser=n(e.unified,e.remarkParse,e.remarkGfm,e.slugify,e.remarkStringify,e.stripFinalNewline,e.dateFns,e.dateFnsTz)}(this,function(e,n,t,r,i,o,u,a){function f(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var l=/*#__PURE__*/f(n),d=/*#__PURE__*/f(t),s=/*#__PURE__*/f(r),c=/*#__PURE__*/f(i),h=/*#__PURE__*/f(o);function m(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=new Array(n);t<n;t++)r[t]=e[t];return r}var y=["yyyy-MM-dd","dd/MM/yyyy","dd/MM/yy","dd-MM-yyyy","dd-MM-yy","dd.MM.yyyy","dd.MM.yy"],p=["HH:mm","HH.mm","hh:mm aaa","hh:mm a..aa","hh:mm aaaa"],v=function e(n){return n.children.map(function(t){var r={};return"list"===t.type?e(n):"listItem"===t.type?(r.checked=t.checked,t.children.map(function(e){if("paragraph"===e.type)return r.text=e.children.map(function(e){return"link"===e.type?(r.link=e.url,"["+e.children[0].value+"]("+e.url+")"):e.value}).filter(function(e){return!!e}).join(""),r}).filter(function(e){return!!e})):void 0}).filter(function(e){return!!e})};function g(e,n,t){if(!e.s){if(t instanceof b){if(!t.s)return void(t.o=g.bind(null,e,n));1&n&&(n=t.s),t=t.v}if(t&&t.then)return void t.then(g.bind(null,e,n),g.bind(null,e,2));e.s=n,e.v=t;var r=e.o;r&&r(e)}}const b=/*#__PURE__*/function(){function e(){}return e.prototype.then=function(n,t){const r=new e,i=this.s;if(i){const e=1&i?n:t;if(e){try{g(r,1,e(this.v))}catch(e){g(r,2,e)}return r}return this}return this.o=function(e){try{const i=e.v;1&e.s?g(r,1,n?n(i):i):t?g(r,1,t(i)):g(r,2,i)}catch(e){g(r,2,e)}},r},e}();function M(e){return e instanceof b&&1&e.s}return function(n){try{var t,r,i,o,f,k,x,w,T,j,q,I,O;return Promise.resolve(e.unified().use(l.default).use(d.default).parse(n)).then(function(n){function l(){for(q in S)(O=(I=S[q]).content.filter(Boolean))&&O.length>0&&(1===O.length&&(I.text=O[0]),I.text=O.join("\n\n")),I.content=O;return S}if(!n)return[];var S={},U=null;t=function(e,n){var t="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(t)return(t=t.call(e)).next.bind(t);if(Array.isArray(e)||(t=function(e,n){if(e){if("string"==typeof e)return m(e,n);var t=Object.prototype.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?m(e,n):void 0}}(e))){t&&(e=t);var r=0;return function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(n.children);var A=function(e,n,t){for(var r;;){var i=e();if(M(i)&&(i=i.v),!i)return o;if(i.then){r=0;break}var o=t();if(o&&o.then){if(!M(o)){r=1;break}o=o.s}}var u=new b,a=g.bind(null,u,2);return(0===r?i.then(l):1===r?o.then(f):(void 0).then(function(){(i=e())?i.then?i.then(l).then(void 0,a):l(i):g(u,1,o)})).then(void 0,a),u;function f(n){o=n;do{if(!(i=e())||M(i)&&!i.v)return void g(u,1,o);if(i.then)return void i.then(l).then(void 0,a);M(o=t())&&(o=o.v)}while(!o||!o.then);o.then(f).then(void 0,a)}function l(e){e?(o=t())&&o.then?o.then(f).then(void 0,a):f(o):g(u,1,o)}}(function(){return!(r=t()).done},0,function(){return i=r.value,Promise.resolve(e.unified().use(d.default).use(c.default).stringify(i)).then(function(e){var n,t;(o=h.default(e)).indexOf("\\_")>-1&&(o=o.replace(/\\_/g,"_")),"heading"===i.type?(U=s.default(i.children[0].value),S[U]={title:i.children[0].value,heading:i.depth,content:[]}):"paragraph"===i.type&&U?(f=S[U],n=o,t=y.map(function(e){return u.isMatch(n,e)}),k=t.indexOf(!0)>-1?a.zonedTimeToUtc(u.parse(n,y[t.indexOf(!0)],new Date),"UTC").toJSON().split("T")[0]:null,x=function(e){var n=p.map(function(n){return u.isMatch(e,n)});if(n.indexOf(!0)>-1){var t=a.zonedTimeToUtc(u.parse(e,p[n.indexOf(!0)],new Date),"UTC");return a.formatInTimeZone(t,"UTC","HH:mm")}return null}(o),w=function(e){var n=!1,t={hours:0,minutes:0},r=new RegExp(/([0-9]+)h([0-9]+)m/),i=new RegExp(/([0-9]+)h/);if(e.match(r)){n=!0;var o=e.match(r),u=o[2];t.hours=parseInt(o[1]),t.minutes=parseInt(u)}else if(e.match(i)){n=!0;var a=e.match(i);t.hours=parseInt(a[1]),t.minutes=0}return n?t:null}(o),k&&(f.date=k),x&&(f.time=x),w&&(f.duration=w),f.content.push(o)):"list"===i.type?((T=S[U]).text=o,T.list=v(i).flat()):"html"===i.type?S[U].content.push(i.html):"code"===i.type?((j=S[U]).lang=i.lang,j.text=o):process.env.DEBUG&&(console.log("unhandled token type"),console.log(i))})});return A&&A.then?A.then(l):l()})}catch(e){return Promise.reject(e)}}});
1
+ !function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n(require("unified"),require("remark-parse"),require("remark-gfm"),require("@sindresorhus/slugify"),require("remark-stringify"),require("strip-final-newline"),require("debug"),require("date-fns"),require("date-fns-tz")):"function"==typeof define&&define.amd?define(["unified","remark-parse","remark-gfm","@sindresorhus/slugify","remark-stringify","strip-final-newline","debug","date-fns","date-fns-tz"],n):(e||self).issueFormsBodyParser=n(e.unified,e.remarkParse,e.remarkGfm,e.slugify,e.remarkStringify,e.stripFinalNewline,e.debug,e.dateFns,e.dateFnsTz)}(this,function(e,n,t,r,i,u,a,o,f){function l(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var d=/*#__PURE__*/l(n),s=/*#__PURE__*/l(t),c=/*#__PURE__*/l(r),h=/*#__PURE__*/l(i),m=/*#__PURE__*/l(u),y=/*#__PURE__*/l(a);function p(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=new Array(n);t<n;t++)r[t]=e[t];return r}var v=["yyyy-MM-dd","dd/MM/yyyy","dd/MM/yy","dd-MM-yyyy","dd-MM-yy","dd.MM.yyyy","dd.MM.yy"],g=["HH:mm","HH.mm","hh:mm aaa","hh:mm a..aa","hh:mm aaaa"],b=function e(n){return n.children.map(function(t){var r={};return"list"===t.type?e(n):"listItem"===t.type?(r.checked=t.checked,t.children.map(function(e){if("paragraph"===e.type)return r.text=e.children.map(function(e){return"link"===e.type?(r.link=e.url,"["+e.children[0].value+"]("+e.url+")"):e.value}).filter(function(e){return!!e}).join(""),r}).filter(function(e){return!!e})):void 0}).filter(function(e){return!!e})};function k(e,n,t){if(!e.s){if(t instanceof M){if(!t.s)return void(t.o=k.bind(null,e,n));1&n&&(n=t.s),t=t.v}if(t&&t.then)return void t.then(k.bind(null,e,n),k.bind(null,e,2));e.s=n,e.v=t;var r=e.o;r&&r(e)}}var M=/*#__PURE__*/function(){function e(){}return e.prototype.then=function(n,t){var r=new e,i=this.s;if(i){var u=1&i?n:t;if(u){try{k(r,1,u(this.v))}catch(e){k(r,2,e)}return r}return this}return this.o=function(e){try{var i=e.v;1&e.s?k(r,1,n?n(i):i):t?k(r,1,t(i)):k(r,2,i)}catch(e){k(r,2,e)}},r},e}();function x(e){return e instanceof M&&1&e.s}var w=y.default("body-parser");return function(n){try{var t,r,i,u,a,l,y,T,q,j,I,O,S,A,H;return w("parseMD()"),Promise.resolve(e.unified().use(d.default).use(s.default).parse(n)).then(function(n){function d(){for(S in U)(H=(A=U[S]).content.filter(Boolean))&&H.length>0&&(1===H.length&&(A.text=H[0]),A.text=H.join("\n\n")),A.content=H;return U}if(!n)return[];var U={},z=null;t=function(e,n){var t="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(t)return(t=t.call(e)).next.bind(t);if(Array.isArray(e)||(t=function(e,n){if(e){if("string"==typeof e)return p(e,n);var t=Object.prototype.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?p(e,n):void 0}}(e))){t&&(e=t);var r=0;return function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(n.children);var P=function(e,n,t){for(var r;;){var i=e();if(x(i)&&(i=i.v),!i)return u;if(i.then){r=0;break}var u=t();if(u&&u.then){if(!x(u)){r=1;break}u=u.s}if(n){var a=n();if(a&&a.then&&!x(a)){r=2;break}}}var o=new M,f=k.bind(null,o,2);return(0===r?i.then(d):1===r?u.then(l):a.then(s)).then(void 0,f),o;function l(r){u=r;do{if(n&&(a=n())&&a.then&&!x(a))return void a.then(s).then(void 0,f);if(!(i=e())||x(i)&&!i.v)return void k(o,1,u);if(i.then)return void i.then(d).then(void 0,f);x(u=t())&&(u=u.v)}while(!u||!u.then);u.then(l).then(void 0,f)}function d(e){e?(u=t())&&u.then?u.then(l).then(void 0,f):l(u):k(o,1,u)}function s(){(i=e())?i.then?i.then(d).then(void 0,f):d(i):k(o,1,u)}}(function(){return!(r=t()).done},void 0,function(){return i=r.value,Promise.resolve(e.unified().use(s.default).use(h.default).stringify(i)).then(function(e){var n,t;(u=m.default(e)).indexOf("\\_")>-1&&(u=u.replace(/\\_/g,"_")),"heading"===i.type?(z=c.default(i.children[0].value),U[z]={title:i.children[0].value,heading:i.depth,content:[]}):"paragraph"===i.type&&z?(a=U[z],n=u,t=v.map(function(e){return o.isMatch(n,e)}),l=t.indexOf(!0)>-1?f.zonedTimeToUtc(o.parse(n,v[t.indexOf(!0)],new Date),"UTC").toJSON().split("T")[0]:null,y=i.children.filter(function(e){return"image"===e.type}).map(function(e){return{src:e.url,alt:e.alt}}),T=i.children.filter(function(e){return"link"===e.type}).map(function(e){return{src:e.url,alt:e.children[0].value}}),q=function(e){var n=g.map(function(n){return o.isMatch(e,n)});if(n.indexOf(!0)>-1){var t=f.zonedTimeToUtc(o.parse(e,g[n.indexOf(!0)],new Date),"UTC");return f.formatInTimeZone(t,"UTC","HH:mm")}return null}(u),j=function(e){var n=!1,t={hours:0,minutes:0},r=new RegExp(/([0-9]+)h([0-9]+)m/),i=new RegExp(/([0-9]+)h/);if(e.match(r)){n=!0;var u=e.match(r),a=u[2];t.hours=parseInt(u[1]),t.minutes=parseInt(a)}else if(e.match(i)){n=!0;var o=e.match(i);t.hours=parseInt(o[1]),t.minutes=0}return n?t:null}(u),l&&(a.date=l),q&&(a.time=q),j&&(a.duration=j),T&&T.length>0&&(a.links=T),y&&y.length>0&&(a.images=y),a.content.push(u)):"list"===i.type?((I=U[z]).text=u,I.list=b(i).flat()):"html"===i.type?U[z].content.push(i.html):"code"===i.type?((O=U[z]).lang=i.lang,O.text=u):(w("unhandled token type"),w(i))})});return P&&P.then?P.then(d):d()})}catch(e){return Promise.reject(e)}}});
2
2
  //# sourceMappingURL=parse.umd.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"parse.umd.js","sources":["../src/parsers/date.js","../src/parsers/time.js","../src/parsers/index.js","../src/parsers/list.js","../src/parse.js","../src/parsers/duration.js"],"sourcesContent":["'use strict'\n\nimport { parse, isMatch } from 'date-fns'\nimport { zonedTimeToUtc } from 'date-fns-tz'\n\nconst loc = 'UTC'\nconst commonDateFormats = [\n 'yyyy-MM-dd',\n 'dd/MM/yyyy',\n 'dd/MM/yy',\n 'dd-MM-yyyy',\n 'dd-MM-yy',\n 'dd.MM.yyyy',\n 'dd.MM.yy'\n]\n\nexport default function parseDate(text) {\n const match = commonDateFormats.map((format) => {\n return isMatch(text, format)\n })\n if (match.indexOf(true) > -1) {\n const date = zonedTimeToUtc(\n parse(text, commonDateFormats[match.indexOf(true)], new Date()),\n loc\n ).toJSON()\n return date.split('T')[0]\n } else {\n return null\n }\n}\n","'use strict'\n\nimport { parse, isMatch } from 'date-fns'\nimport { zonedTimeToUtc, formatInTimeZone } from 'date-fns-tz'\n\nconst loc = 'UTC'\nconst commonTimeFormats = [\n 'HH:mm',\n 'HH.mm',\n 'hh:mm aaa',\n 'hh:mm a..aa',\n 'hh:mm aaaa'\n]\n\nexport default function parseTime(text) {\n const match = commonTimeFormats.map((format) => {\n return isMatch(text, format)\n })\n if (match.indexOf(true) > -1) {\n const time = zonedTimeToUtc(\n parse(text, commonTimeFormats[match.indexOf(true)], new Date()),\n loc\n )\n return formatInTimeZone(time, loc, 'HH:mm')\n } else {\n return null\n }\n}\n","'use strict'\n\nimport date from './date.js'\nimport time from './time.js'\nimport duration from './duration.js'\nimport list from './list.js'\n\nexport const parseDate = date\nexport const parseTime = time\nexport const parseDuration = duration\nexport const parseList = list\n","'use strict'\n\nexport default function parseList(list) {\n return list.children\n .map((item) => {\n const listItem = {}\n if (item.type === 'list') {\n return parseList(list)\n } else if (item.type === 'listItem') {\n listItem.checked = item.checked\n return item.children\n .map((child) => {\n if (child.type === 'paragraph') {\n listItem.text = child.children\n .map((c) => {\n if (c.type === 'link') {\n listItem.link = c.url\n return `[${c.children[0].value}](${c.url})`\n } else {\n return c.value\n }\n })\n .filter((x) => !!x)\n .join('')\n return listItem\n }\n })\n .filter((x) => !!x)\n }\n })\n .filter((x) => !!x)\n}\n","'use strict'\n\nimport { unified } from 'unified'\nimport remarkParse from 'remark-parse'\nimport remarkGfm from 'remark-gfm'\nimport slugify from '@sindresorhus/slugify'\nimport remarkStringify from 'remark-stringify'\nimport stripFinalNewline from 'strip-final-newline'\n\nimport {\n parseDate,\n parseTime,\n parseDuration,\n parseList\n} from './parsers/index.js'\n\nexport default async function parseMD(body) {\n const tokens = await unified().use(remarkParse).use(remarkGfm).parse(body)\n if (!tokens) {\n return []\n }\n\n const structuredResponse = {}\n let currentHeading = null\n for (const token of tokens.children) {\n const text = await unified()\n .use(remarkGfm)\n .use(remarkStringify)\n .stringify(token)\n let cleanText = stripFinalNewline(text)\n\n // remove `\\\\_`\n if (cleanText.indexOf('\\\\_') > -1) {\n cleanText = cleanText.replace(/\\\\_/g, '_')\n }\n\n // issue forms uses h3 as a heading\n if (token.type === 'heading') {\n currentHeading = slugify(token.children[0].value)\n structuredResponse[currentHeading] = {\n title: token.children[0].value,\n heading: token.depth,\n content: []\n }\n } else if (token.type === 'paragraph' && currentHeading) {\n const obj = structuredResponse[currentHeading]\n\n const date = parseDate(cleanText)\n const time = parseTime(cleanText)\n const duration = parseDuration(cleanText)\n\n if (date) {\n obj.date = date\n }\n\n if (time) {\n obj.time = time\n }\n\n if (duration) {\n obj.duration = duration\n }\n\n obj.content.push(cleanText)\n } else if (token.type === 'list') {\n const obj = structuredResponse[currentHeading]\n obj.text = cleanText\n obj.list = parseList(token).flat()\n } else if (token.type === 'html') {\n const obj = structuredResponse[currentHeading]\n obj.content.push(token.html)\n } else if (token.type === 'code') {\n const obj = structuredResponse[currentHeading]\n obj.lang = token.lang\n obj.text = cleanText\n } else {\n if (process.env.DEBUG) {\n console.log('unhandled token type')\n console.log(token)\n }\n }\n }\n\n for (const key in structuredResponse) {\n const token = structuredResponse[key]\n const content = token.content.filter(Boolean)\n if (content && content.length > 0) {\n if (content.length === 1) {\n token.text = content[0]\n }\n token.text = content.join('\\n\\n')\n }\n token.content = content\n }\n\n return structuredResponse\n}\n","'use strict'\n\nexport default function parseDuration(text) {\n let matched = false\n const duration = {\n hours: 0,\n minutes: 0\n }\n\n const hoursAndMinutes = new RegExp(/([0-9]+)h([0-9]+)m/)\n const hours = new RegExp(/([0-9]+)h/)\n\n if (text.match(hoursAndMinutes)) {\n matched = true\n const [, h, m] = text.match(hoursAndMinutes)\n duration.hours = parseInt(h)\n duration.minutes = parseInt(m)\n } else if (text.match(hours)) {\n matched = true\n const [, h] = text.match(hours)\n duration.hours = parseInt(h)\n duration.minutes = 0\n }\n\n if (matched) {\n return duration\n } else {\n return null\n }\n}\n"],"names":["commonDateFormats","commonTimeFormats","parseList","list","children","map","item","listItem","type","checked","child","text","c","link","url","value","filter","x","join","_settle","pact","state","s","_Pact","o","bind","v","then","observer","prototype","onFulfilled","onRejected","result","this","callback","e","_this","thenable","body","token","cleanText","obj","date","time","duration","key","content","unified","use","remarkParse","remarkGfm","parse","tokens","_temp2","structuredResponse","Boolean","length","currentHeading","_iterator","test","update","stage","shouldContinue","_isSettledPact","reject","_resumeAfterTest","_resumeAfterBody","updateValue","remarkStringify","stringify","match","stripFinalNewline","indexOf","replace","slugify","title","heading","depth","format","isMatch","zonedTimeToUtc","Date","toJSON","split","formatInTimeZone","parseTime","matched","hours","minutes","hoursAndMinutes","RegExp","_text$match","m","parseInt","parseDuration","push","flat","html","lang","process","env","DEBUG","console","log"],"mappings":"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"}
1
+ {"version":3,"file":"parse.umd.js","sources":["../src/parsers/date.js","../src/parsers/time.js","../src/parsers/index.js","../src/parsers/list.js","../src/parse.js","../src/parsers/images.js","../src/parsers/links.js","../src/parsers/duration.js"],"sourcesContent":["'use strict'\n\nimport { parse, isMatch } from 'date-fns'\nimport { zonedTimeToUtc } from 'date-fns-tz'\n\nconst loc = 'UTC'\nconst commonDateFormats = [\n 'yyyy-MM-dd',\n 'dd/MM/yyyy',\n 'dd/MM/yy',\n 'dd-MM-yyyy',\n 'dd-MM-yy',\n 'dd.MM.yyyy',\n 'dd.MM.yy'\n]\n\nexport default function parseDate(text) {\n const match = commonDateFormats.map((format) => {\n return isMatch(text, format)\n })\n if (match.indexOf(true) > -1) {\n const date = zonedTimeToUtc(\n parse(text, commonDateFormats[match.indexOf(true)], new Date()),\n loc\n ).toJSON()\n return date.split('T')[0]\n } else {\n return null\n }\n}\n","'use strict'\n\nimport { parse, isMatch } from 'date-fns'\nimport { zonedTimeToUtc, formatInTimeZone } from 'date-fns-tz'\n\nconst loc = 'UTC'\nconst commonTimeFormats = [\n 'HH:mm',\n 'HH.mm',\n 'hh:mm aaa',\n 'hh:mm a..aa',\n 'hh:mm aaaa'\n]\n\nexport default function parseTime(text) {\n const match = commonTimeFormats.map((format) => {\n return isMatch(text, format)\n })\n if (match.indexOf(true) > -1) {\n const time = zonedTimeToUtc(\n parse(text, commonTimeFormats[match.indexOf(true)], new Date()),\n loc\n )\n return formatInTimeZone(time, loc, 'HH:mm')\n } else {\n return null\n }\n}\n","'use strict'\n\nimport date from './date.js'\nimport time from './time.js'\nimport duration from './duration.js'\nimport list from './list.js'\nimport images from './images.js'\nimport links from './links.js'\n\nexport const parseDate = date\nexport const parseTime = time\nexport const parseDuration = duration\nexport const parseList = list\nexport const parseImages = images\nexport const parseLinks = links\n","'use strict'\n\nexport default function parseList(list) {\n return list.children\n .map((item) => {\n const listItem = {}\n if (item.type === 'list') {\n return parseList(list)\n } else if (item.type === 'listItem') {\n listItem.checked = item.checked\n return item.children\n .map((child) => {\n if (child.type === 'paragraph') {\n listItem.text = child.children\n .map((c) => {\n if (c.type === 'link') {\n listItem.link = c.url\n return `[${c.children[0].value}](${c.url})`\n } else {\n return c.value\n }\n })\n .filter((x) => !!x)\n .join('')\n return listItem\n }\n })\n .filter((x) => !!x)\n }\n })\n .filter((x) => !!x)\n}\n","'use strict'\n\nimport { unified } from 'unified'\nimport remarkParse from 'remark-parse'\nimport remarkGfm from 'remark-gfm'\nimport slugify from '@sindresorhus/slugify'\nimport remarkStringify from 'remark-stringify'\nimport stripFinalNewline from 'strip-final-newline'\nimport createDebug from 'debug'\nconst debug = createDebug('body-parser')\n\nimport {\n parseDate,\n parseTime,\n parseDuration,\n parseList,\n parseImages,\n parseLinks\n} from './parsers/index.js'\n\nexport default async function parseMD(body) {\n debug('parseMD()')\n const tokens = await unified().use(remarkParse).use(remarkGfm).parse(body)\n if (!tokens) {\n return []\n }\n\n const structuredResponse = {}\n let currentHeading = null\n\n for (const token of tokens.children) {\n const text = await unified()\n .use(remarkGfm)\n .use(remarkStringify)\n .stringify(token)\n let cleanText = stripFinalNewline(text)\n\n // remove `\\\\_`\n if (cleanText.indexOf('\\\\_') > -1) {\n cleanText = cleanText.replace(/\\\\_/g, '_')\n }\n\n // issue forms uses h3 as a heading\n if (token.type === 'heading') {\n currentHeading = slugify(token.children[0].value)\n structuredResponse[currentHeading] = {\n title: token.children[0].value,\n heading: token.depth,\n content: []\n }\n } else if (token.type === 'paragraph' && currentHeading) {\n const obj = structuredResponse[currentHeading]\n\n const date = parseDate(cleanText)\n const images = parseImages(token.children)\n const links = parseLinks(token.children)\n const time = parseTime(cleanText)\n const duration = parseDuration(cleanText)\n\n if (date) {\n obj.date = date\n }\n\n if (time) {\n obj.time = time\n }\n\n if (duration) {\n obj.duration = duration\n }\n\n if (links && links.length > 0) {\n obj.links = links\n }\n\n if (images && images.length > 0) {\n obj.images = images\n }\n\n obj.content.push(cleanText)\n } else if (token.type === 'list') {\n const obj = structuredResponse[currentHeading]\n obj.text = cleanText\n obj.list = parseList(token).flat()\n } else if (token.type === 'html') {\n const obj = structuredResponse[currentHeading]\n obj.content.push(token.html)\n } else if (token.type === 'code') {\n const obj = structuredResponse[currentHeading]\n obj.lang = token.lang\n obj.text = cleanText\n } else {\n debug('unhandled token type')\n debug(token)\n }\n }\n\n for (const key in structuredResponse) {\n const token = structuredResponse[key]\n const content = token.content.filter(Boolean)\n if (content && content.length > 0) {\n if (content.length === 1) {\n token.text = content[0]\n }\n token.text = content.join('\\n\\n')\n }\n token.content = content\n }\n\n return structuredResponse\n}\n","'use strict'\n\nexport default function parseImage(props) {\n return props\n .filter((p) => p.type === 'image')\n .map((p) => {\n return {\n src: p.url,\n alt: p.alt\n }\n })\n}\n","'use strict'\n\nexport default function parseLinks(props) {\n return props\n .filter((p) => p.type === 'link')\n .map((p) => {\n return {\n src: p.url,\n alt: p.children[0].value\n }\n })\n}\n","'use strict'\n\nexport default function parseDuration(text) {\n let matched = false\n const duration = {\n hours: 0,\n minutes: 0\n }\n\n const hoursAndMinutes = new RegExp(/([0-9]+)h([0-9]+)m/)\n const hours = new RegExp(/([0-9]+)h/)\n\n if (text.match(hoursAndMinutes)) {\n matched = true\n const [, h, m] = text.match(hoursAndMinutes)\n duration.hours = parseInt(h)\n duration.minutes = parseInt(m)\n } else if (text.match(hours)) {\n matched = true\n const [, h] = text.match(hours)\n duration.hours = parseInt(h)\n duration.minutes = 0\n }\n\n if (matched) {\n return duration\n } else {\n return null\n }\n}\n"],"names":["commonDateFormats","commonTimeFormats","parseList","list","children","map","item","listItem","type","checked","child","text","c","link","url","value","filter","x","join","_settle","pact","state","s","_Pact","o","bind","v","then","observer","prototype","onFulfilled","onRejected","result","this","callback","e","_this","_isSettledPact","thenable","debug","createDebug","body","_iterator","_step","token","cleanText","obj","date","images","links","time","duration","key","content","Promise","resolve","unified","use","remarkParse","remarkGfm","parse","tokens","_temp2","structuredResponse","Boolean","length","currentHeading","_createForOfIteratorHelperLoose","_temp","test","update","stage","shouldContinue","updateValue","reject","_resumeAfterTest","_resumeAfterBody","_resumeAfterUpdate","_for","done","remarkStringify","stringify","_unified$use$use$stri","match","stripFinalNewline","indexOf","replace","slugify","title","heading","depth","format","isMatch","zonedTimeToUtc","Date","toJSON","split","p","src","alt","formatInTimeZone","parseTime","matched","hours","minutes","hoursAndMinutes","RegExp","_text$match","m","parseInt","_text$match2","parseDuration","push","flat","html","lang"],"mappings":"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"}
package/src/parse.js CHANGED
@@ -6,15 +6,20 @@ import remarkGfm from 'remark-gfm'
6
6
  import slugify from '@sindresorhus/slugify'
7
7
  import remarkStringify from 'remark-stringify'
8
8
  import stripFinalNewline from 'strip-final-newline'
9
+ import createDebug from 'debug'
10
+ const debug = createDebug('body-parser')
9
11
 
10
12
  import {
11
13
  parseDate,
12
14
  parseTime,
13
15
  parseDuration,
14
- parseList
16
+ parseList,
17
+ parseImages,
18
+ parseLinks
15
19
  } from './parsers/index.js'
16
20
 
17
21
  export default async function parseMD(body) {
22
+ debug('parseMD()')
18
23
  const tokens = await unified().use(remarkParse).use(remarkGfm).parse(body)
19
24
  if (!tokens) {
20
25
  return []
@@ -22,6 +27,7 @@ export default async function parseMD(body) {
22
27
 
23
28
  const structuredResponse = {}
24
29
  let currentHeading = null
30
+
25
31
  for (const token of tokens.children) {
26
32
  const text = await unified()
27
33
  .use(remarkGfm)
@@ -46,6 +52,8 @@ export default async function parseMD(body) {
46
52
  const obj = structuredResponse[currentHeading]
47
53
 
48
54
  const date = parseDate(cleanText)
55
+ const images = parseImages(token.children)
56
+ const links = parseLinks(token.children)
49
57
  const time = parseTime(cleanText)
50
58
  const duration = parseDuration(cleanText)
51
59
 
@@ -61,6 +69,14 @@ export default async function parseMD(body) {
61
69
  obj.duration = duration
62
70
  }
63
71
 
72
+ if (links && links.length > 0) {
73
+ obj.links = links
74
+ }
75
+
76
+ if (images && images.length > 0) {
77
+ obj.images = images
78
+ }
79
+
64
80
  obj.content.push(cleanText)
65
81
  } else if (token.type === 'list') {
66
82
  const obj = structuredResponse[currentHeading]
@@ -74,10 +90,8 @@ export default async function parseMD(body) {
74
90
  obj.lang = token.lang
75
91
  obj.text = cleanText
76
92
  } else {
77
- if (process.env.DEBUG) {
78
- console.log('unhandled token type')
79
- console.log(token)
80
- }
93
+ debug('unhandled token type')
94
+ debug(token)
81
95
  }
82
96
  }
83
97
 
@@ -0,0 +1,12 @@
1
+ 'use strict'
2
+
3
+ export default function parseImage(props) {
4
+ return props
5
+ .filter((p) => p.type === 'image')
6
+ .map((p) => {
7
+ return {
8
+ src: p.url,
9
+ alt: p.alt
10
+ }
11
+ })
12
+ }
@@ -4,8 +4,12 @@ import date from './date.js'
4
4
  import time from './time.js'
5
5
  import duration from './duration.js'
6
6
  import list from './list.js'
7
+ import images from './images.js'
8
+ import links from './links.js'
7
9
 
8
10
  export const parseDate = date
9
11
  export const parseTime = time
10
12
  export const parseDuration = duration
11
13
  export const parseList = list
14
+ export const parseImages = images
15
+ export const parseLinks = links
@@ -0,0 +1,12 @@
1
+ 'use strict'
2
+
3
+ export default function parseLinks(props) {
4
+ return props
5
+ .filter((p) => p.type === 'link')
6
+ .map((p) => {
7
+ return {
8
+ src: p.url,
9
+ alt: p.children[0].value
10
+ }
11
+ })
12
+ }
@@ -1 +0,0 @@
1
- {"parent":null,"pid":1967,"argv":["/opt/hostedtoolcache/node/18.15.0/x64/bin/node","/home/runner/work/issue-forms-body-parser/issue-forms-body-parser/node_modules/.bin/tap","--node-arg=--experimental-json-modules","--test-env=GITHUB_REPOSITORY=zentered/issue-forms-body-parser-test","-J","test/parse-issue.test.js"],"execArgv":[],"cwd":"/home/runner/work/issue-forms-body-parser/issue-forms-body-parser","time":1680260070851,"ppid":1956,"coverageFilename":"/home/runner/work/issue-forms-body-parser/issue-forms-body-parser/.nyc_output/1838d6c0-1abd-41f8-8ed0-518dbdb8ef5f.json","externalId":"","uuid":"1838d6c0-1abd-41f8-8ed0-518dbdb8ef5f","files":[]}
@@ -1 +0,0 @@
1
- {"parent":"1838d6c0-1abd-41f8-8ed0-518dbdb8ef5f","pid":1978,"argv":["/opt/hostedtoolcache/node/18.15.0/x64/bin/node","/home/runner/work/issue-forms-body-parser/issue-forms-body-parser/test/parse-issue.test.js"],"execArgv":["--experimental-json-modules"],"cwd":"/home/runner/work/issue-forms-body-parser/issue-forms-body-parser","time":1680260071210,"ppid":1967,"coverageFilename":"/home/runner/work/issue-forms-body-parser/issue-forms-body-parser/.nyc_output/1c1823dd-608c-4260-af27-1fdd1338e98e.json","externalId":"test/parse-issue.test.js","uuid":"1c1823dd-608c-4260-af27-1fdd1338e98e","files":[]}
@@ -1 +0,0 @@
1
- {"processes":{"1838d6c0-1abd-41f8-8ed0-518dbdb8ef5f":{"parent":null,"children":["1c1823dd-608c-4260-af27-1fdd1338e98e"]},"1c1823dd-608c-4260-af27-1fdd1338e98e":{"parent":"1838d6c0-1abd-41f8-8ed0-518dbdb8ef5f","externalId":"test/parse-issue.test.js","children":[]}},"files":{},"externalIds":{"test/parse-issue.test.js":{"root":"1c1823dd-608c-4260-af27-1fdd1338e98e","children":[]}}}