@notifiles/sdk 1.0.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.
Files changed (132) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +26 -0
  3. package/dist/index.modern.cjs +856 -0
  4. package/dist/index.modern.cjs.map +1 -0
  5. package/dist/index.modern.modern.js +690 -0
  6. package/dist/index.modern.modern.js.map +1 -0
  7. package/package.json +152 -0
  8. package/src/cloud/add/index.js +38 -0
  9. package/src/cloud/add/index.test.js +38 -0
  10. package/src/cloud/add/lib/validate.js +16 -0
  11. package/src/cloud/index.js +3 -0
  12. package/src/cloud/list/index.js +18 -0
  13. package/src/cloud/list/index.test.js +13 -0
  14. package/src/email/build copy/lib/perform/email.js +52 -0
  15. package/src/index.js +3 -0
  16. package/src/lib/adaptSettings.js +12 -0
  17. package/src/lib/cloudLibrary/bunny/index.js +2 -0
  18. package/src/lib/cloudLibrary/bunny/isValid.js +32 -0
  19. package/src/lib/cloudLibrary/bunny/upload.js +35 -0
  20. package/src/lib/cloudLibrary/index.js +20 -0
  21. package/src/lib/cloudLibrary/minio/index.js +4 -0
  22. package/src/lib/cloudLibrary/minio/isValid.js +33 -0
  23. package/src/lib/cloudLibrary/minio/remove.js +58 -0
  24. package/src/lib/cloudLibrary/minio/upload.js +61 -0
  25. package/src/lib/cloudLibrary/minio/uploadFolder.js +26 -0
  26. package/src/lib/entries/getAtPath.js +105 -0
  27. package/src/lib/entries/isPathEntry.js +29 -0
  28. package/src/lib/entries.js +144 -0
  29. package/src/lib/fs/checkFileExists.js +6 -0
  30. package/src/lib/fs/directoryFilesRecursive.js +83 -0
  31. package/src/lib/fs/ensureDirectoryExists.js +10 -0
  32. package/src/lib/fs/getFileCallerURL.js +12 -0
  33. package/src/lib/fs/importFileAsText.js +15 -0
  34. package/src/lib/fs/importJSONAsync.js +16 -0
  35. package/src/lib/fs/importYAMLAsync.js +14 -0
  36. package/src/lib/remark/hastToHtml.js +6 -0
  37. package/src/lib/remark/htmlToHast.js +6 -0
  38. package/src/lib/remark/htmlToMarkdown copy.js +12 -0
  39. package/src/lib/remark/htmlToMarkdown.js +23 -0
  40. package/src/lib/remark/htmlToMdast.js +13 -0
  41. package/src/lib/remark/htmlToMdast_.js +21 -0
  42. package/src/lib/remark/htmlToMdast_3.js +21 -0
  43. package/src/lib/remark/markdownToHTML.js +22 -0
  44. package/src/lib/remark/markdownToLexer.js +19 -0
  45. package/src/lib/remark/mdastToHTML.js +8 -0
  46. package/src/lib/remark/mdastToMarkdown.js +24 -0
  47. package/src/lib/remark/mdastToString.js +12 -0
  48. package/src/project/index.js +4 -0
  49. package/src/project/isProject/index.js +26 -0
  50. package/src/project/isProject/index.test.js +13 -0
  51. package/src/project/isProject/sync.js +18 -0
  52. package/src/project/lib/activity/createFileIfNeeded.js +33 -0
  53. package/src/project/lib/activity/defaultContent.json +5 -0
  54. package/src/project/lib/activity/updateToFile.js +32 -0
  55. package/src/project/lib/manifest/createFileIfNeeded.js +44 -0
  56. package/src/project/lib/manifest/read.js +21 -0
  57. package/src/project/lib/manifest/update.js +36 -0
  58. package/src/project/lib/manifest/updateToFile.js +22 -0
  59. package/src/project/new/index.js +2 -0
  60. package/src/project/new/plain.js +49 -0
  61. package/src/project/new/plain.test.js +38 -0
  62. package/src/template/build/entry.js +37 -0
  63. package/src/template/build/index.js +2 -0
  64. package/src/template/build/lib/email/index.js +100 -0
  65. package/src/template/build/lib/email/translate.js +16 -0
  66. package/src/template/build/lib/textmessage/index.js +44 -0
  67. package/src/template/build/lib/textmessage/translate.js +25 -0
  68. package/src/template/build/path.js +18 -0
  69. package/src/template/build/path.test.js +29 -0
  70. package/src/template/cloudify/entry.js +20 -0
  71. package/src/template/cloudify/index.js +2 -0
  72. package/src/template/cloudify/lib/email/attachments/addAttachment.js +24 -0
  73. package/src/template/cloudify/lib/email/attachments/index.js +137 -0
  74. package/src/template/cloudify/lib/email/attachments/treatLocalFile.js +13 -0
  75. package/src/template/cloudify/lib/email/attachments/treatRemoteFile.js +26 -0
  76. package/src/template/cloudify/lib/email/image/index.js +90 -0
  77. package/src/template/cloudify/lib/email/image/treatLocalFile.js +13 -0
  78. package/src/template/cloudify/lib/email/image/treatRemoteFile.js +26 -0
  79. package/src/template/cloudify/lib/email/index.js +77 -0
  80. package/src/template/cloudify/lib/remove.js +14 -0
  81. package/src/template/cloudify/lib/textMessage.js +9 -0
  82. package/src/template/cloudify/lib/upload.js +14 -0
  83. package/src/template/cloudify/path.js +20 -0
  84. package/src/template/cloudify/path.test.js +24 -0
  85. package/src/template/consolidate/entry.js +18 -0
  86. package/src/template/consolidate/index.js +2 -0
  87. package/src/template/consolidate/lib/email.js +63 -0
  88. package/src/template/consolidate/lib/image/index.js +35 -0
  89. package/src/template/consolidate/lib/image/treatLocalFile.js +14 -0
  90. package/src/template/consolidate/lib/image/treatRemoteFile.js +25 -0
  91. package/src/template/consolidate/lib/textMessage.js +5 -0
  92. package/src/template/consolidate/path.js +18 -0
  93. package/src/template/consolidate/path.test.js +14 -0
  94. package/src/template/format/entry.js +57 -0
  95. package/src/template/format/index.js +2 -0
  96. package/src/template/format/path.js +18 -0
  97. package/src/template/format/path.test.js +29 -0
  98. package/src/template/index.js +8 -0
  99. package/src/template/lib/activity/createFileIfNeeded.js +33 -0
  100. package/src/template/lib/activity/defaultContent.json +4 -0
  101. package/src/template/lib/activity/get.js +20 -0
  102. package/src/template/lib/activity/updateToFile.js +33 -0
  103. package/src/template/lib/manifest/createFileIfNeeded.js +41 -0
  104. package/src/template/lib/manifest/read.js +22 -0
  105. package/src/template/lib/manifest/update.js +18 -0
  106. package/src/template/lib/manifest/updateToFile.js +22 -0
  107. package/src/template/new/index.js +66 -0
  108. package/src/template/new/index.test.js +19 -0
  109. package/src/template/optimize/entry.js +18 -0
  110. package/src/template/optimize/index.js +2 -0
  111. package/src/template/optimize/lib/email.js +58 -0
  112. package/src/template/optimize/lib/image/index.js +40 -0
  113. package/src/template/optimize/lib/textMessage.js +8 -0
  114. package/src/template/optimize/path.js +18 -0
  115. package/src/template/optimize/path.test.js +16 -0
  116. package/src/template/sync/entry.js +18 -0
  117. package/src/template/sync/index.js +2 -0
  118. package/src/template/sync/lib/email.js +86 -0
  119. package/src/template/sync/lib/textMessage.js +80 -0
  120. package/src/template/sync/lib/upload.js +14 -0
  121. package/src/template/sync/path.js +18 -0
  122. package/src/template/sync/path.test.js +29 -0
  123. package/src/template/update/index.js +1 -0
  124. package/src/template/update/path.js +41 -0
  125. package/src/template/update/path.test.js +46 -0
  126. package/src/template/version/entry.js +10 -0
  127. package/src/template/version/index.js +2 -0
  128. package/src/template/version/lib/perform.js +74 -0
  129. package/src/template/version/lib/reset.js +16 -0
  130. package/src/template/version/lib/updatePost.js +16 -0
  131. package/src/template/version/path.js +20 -0
  132. package/src/template/version/path.test.js +16 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.modern.modern.js","sources":["../src/commands/build/generator/prompt/validators/nonEmpty.js","../src/commands/build/generator/prompt/validators/index.js","../src/commands/build/generator/prompt/ask.js","../src/commands/build/generator/prompt/promptModule.js","../src/commands/build/generator/prompt/index.js","../src/commands/build/generator/template.js","../src/lib/getFileCallerURL.js","../src/commands/build/generator/fs.js","../src/commands/build/generator/ui.js","../src/commands/build/generator/mergeOptions.js","../src/commands/build/generator/index.js","../src/commands/build/buildCommand.js","../src/lib/formatOptionForYargs.js","../src/commands/build/index.js","../src/commands/index.js","../src/lib/checkFileExists.js","../src/lib/directoryFilesRecursive.js","../src/loadOptions/index.js","../src/launch.js"],"sourcesContent":["\nexport default async ({ input, params }) => {\n return input && input.length > 0\n}\n","import nonEmpty from \"./nonEmpty.js\"\n\nexport default a => {\n switch (a.type) {\n default:\n case 'nonEmpty': {\n return nonEmpty\n }\n }\n}\n","import getValidators from './validators/index.js'\nimport Bluebird from \"bluebird\"\nimport chalk from \"chalk\"\n\nexport default async (props) => {\n const {\n payload,\n question,\n generator,\n promptModule,\n promptType } = props\n\n let {\n name,\n message,\n defaultValue,\n validators = [{ type: 'nonEmpty' }] } = question\n\n if (!name) {\n return\n }\n\n let value = payload[name]\n if (!value && question.alias) {\n value = payload[question.alias]\n }\n const valueIsDefined = !(value === null || value === undefined)\n if (valueIsDefined) {\n generator.print.log(`${chalk.green('✓')} ${chalk.bold(message ? message : name)} ${chalk.italic(value)}`)\n return\n }\n\n const isQuick = payload['quick'] || payload['q']\n if (isQuick && valueIsDefined) {\n generator.print.log(`${chalk.green('✓')} ${chalk.bold(message ? message : name)} ${chalk.italic(value)}`)\n return\n }\n\n if (isQuick && !(defaultValue === null || defaultValue === undefined)) {\n payload[name] = defaultValue\n generator.print.log(`${chalk.green('✓')} ${chalk.bold(message ? message : name)} ${chalk.italic(payload[name])}`)\n return\n }\n\n payload[name] = (await promptModule.prompt({\n ...props.question,\n type: promptType,\n name,\n message,\n default: value ? value : defaultValue,\n validate: async input => {\n let isValid = true\n await Bluebird.Promise.mapSeries(\n validators,\n async validator => {\n\n const validate = getValidators(validator)\n if (validate) {\n const _i = await validate({ input, ...validator })\n if (!_i) {\n isValid = false\n }\n return\n }\n\n if (validate.regex) {\n const f = new RegExp(validate.regex, 'g')\n // isValid = validator.regex.test(input)\n isValid = f.test(input)\n }\n })\n if (props.question.validate) {\n isValid = props.question.validate(input)\n }\n return isValid\n }\n }))[name]\n\n return payload[name]\n}\n","import inquirer from 'inquirer'\nexport default (id) => {\n switch (id) {\n default:\n case 'inquirer':\n return inquirer\n }\n}\n","import ask from './ask.js'\nimport Bluebird from \"bluebird\"\nimport _promptModule from './promptModule.js'\n\nimport inquirerPromptAutocomplete from 'inquirer-autocomplete-prompt'\nimport inquirerFileTreeSelection from 'inquirer-file-tree-selection-prompt'\nimport inquirerParseJsonFile from 'inquirer-parse-json-file'\n\nexport default ({ generator }) => {\n\n const prompt = {\n ask: async (value) => {\n const questions = Array.isArray(value) ? value : [value]\n const result = {}\n await Bluebird.Promise.mapSeries(\n questions,\n async question => {\n let fullQuestion = {\n ...question\n }\n const items = generator.options.filter(a => a.name === question.name)\n if (items && items.length) {\n fullQuestion = {\n ...items[0],\n ...fullQuestion\n }\n }\n const { type: promptType = 'input',\n module: _f\n } = fullQuestion.prompt ? fullQuestion.prompt : {}\n\n let promptModule = _f ? _f : _promptModule()\n if (typeof promptModule === 'string') {\n promptModule = _promptModule(_f)\n }\n\n const v = await ask({\n question: fullQuestion,\n payload: generator.payload,\n generator,\n promptModule,\n promptType\n })\n\n result[question.name] = v\n return v\n })\n return result\n },\n confirm: async () => {\n\n },\n registerPrompt: (promptModule, key, module) => {\n promptModule.registerPrompt(key, module)\n }\n }\n\n const promptModule = _promptModule()\n prompt.registerPrompt(promptModule, 'autocomplete', inquirerPromptAutocomplete)\n prompt.registerPrompt(promptModule, 'file-tree-selection', inquirerFileTreeSelection)\n prompt.registerPrompt(promptModule, 'json-file', inquirerParseJsonFile)\n\n return prompt\n}\n\n","import ejs from 'ejs'\n\nexport default ({ generator }) => {\n return {\n render: (text, data) => {\n return ejs.render(text, data)\n },\n }\n}\n\n","export default () => {\n const error = new Error()\n const stack = error.stack?.split('\\n')\n const data = stack[3]\n const filePathPattern = new RegExp(`(file:[/]{2}.+[^:0-9]):{1}[0-9]+:{1}[0-9]+`)\n const result = filePathPattern.exec(data)\n let filePath = ''\n if (result && (result.length > 1)) {\n filePath = result[1]\n }\n return filePath\n}\n","import jetpack from 'fs-jetpack'\nimport fs from 'fs'\nimport getFileCallerURL from '../../../lib/getFileCallerURL.js'\nimport _path from 'path'\n\nexport default ({ generator }) => {\n\n return {\n ...jetpack,\n copy: async ({ source, destination, useRelativeCall = false }) => {\n return fs.promises.cp(source, destination)\n },\n copyTpl: async (source, destination, data) => {\n const entry = await fs.promises.readFile(source)\n const result = ejs.render(entry, data)\n await fs.promises.writeFile(destination, result)\n },\n copyFraction: async ({ source, destination, data, useRelativeCall = true }) => {\n let _source = source\n if (useRelativeCall) {\n let sou = getFileCallerURL()\n sou = _path.dirname(sou)\n sou = sou.replace('file://', '')\n _source = `${sou}/template/${_source}`\n }\n\n const re = await jetpack.copyAsync(_source, destination, { overwrite: true })\n return re\n // return fs.promises.copyFile(_source, destination)\n },\n }\n}\n\n","import chalk from \"chalk\"\n\nexport default ({ generator }) => {\n return {\n drawSectionHeader: ({ title, subTitle, type = 'text' }) => {\n switch (type) {\n case 'h1': {\n generator.print.log(`\\n`)\n generator.print.log(chalk.white.bgRed.bold(`${title}`))\n if (subTitle) {\n generator.print.log(chalk.italic(`${subTitle}\\n`))\n }\n generator.print.log(`----`)\n generator.print.log(``)\n } break\n case 'h2': {\n generator.print.log(`\\n`)\n generator.print.log(chalk.white.bgGreen.bold(`${title}`))\n if (subTitle) {\n generator.print.log(chalk.italic(`${subTitle}\\n`))\n }\n } break\n default: {\n generator.print.log(chalk.blue.bold(`\\n${title}`))\n if (subTitle) {\n generator.print.log(chalk.italic(`${subTitle}\\n`))\n }\n } break\n }\n\n\n },\n }\n}\n\n","\nimport _ from 'underscore'\nimport lodash from 'lodash'\n\nexport default ({ handlerOptions = [], generator }) => {\n\n generator.options = handlerOptions.map(option => {\n switch (option.scope) {\n case 'private': {\n return option\n }\n default: break\n }\n\n const i = _.findWhere(generator.libraryOptions,\n { name: option.name })\n\n if (!i) {\n return option\n }\n\n let result = { ...option }\n lodash.merge(\n result,\n i,\n )\n return result\n })\n}\n","import prompt from './prompt/index.js'\nimport template from './template.js'\nimport fs from './fs.js'\nimport cp from 'child_process'\nimport ui from './ui.js'\nimport mergeOptions from './mergeOptions.js'\n\nexport default ({ payload, options = [] }) => {\n\n const generator = {\n payload,\n print: console,\n libraryOptions: options,\n options: []\n }\n\n generator.mergeOptions = (op) => mergeOptions({ handlerOptions: op, generator })\n\n generator.ui = ui({ generator })\n generator.prompt = prompt({ generator })\n generator.template = template({ generator })\n generator.fs = fs({ generator })\n generator.spawn = async (command, args, options) => {\n return new Promise(resolve => {\n const result = cp.spawn(command, args, options)\n result.on('close', () => {\n resolve()\n })\n })\n }\n\n return generator\n}\n","\nexport default async ({\n path,\n generator,\n payload,\n fileName }) => {\n const data = (await import(path)).default\n const { name = '',\n description = '',\n // options = {},\n handler,\n example } = data\n\n const command = {\n command: name,\n desc: description,\n builder: {},\n handler: (argv,) => {\n data.handler({ generator, payload, argv })\n }\n }\n\n return {\n command,\n data: {\n ...data,\n options: (data.options && data.options.length) ? data.options : []\n }\n }\n}\n","\nexport default ({ option, yargs }) => {\n const { name, description, message, type = 'string', global = false, alias, defaultValue } = option\n\n yargs.option(name, {\n desc: description ? description : message,\n type,\n global,\n alias,\n default: defaultValue\n })\n}\n","import jetpack from 'fs-jetpack'\nimport fs from 'fs'\nimport buildCommand from './buildCommand.js'\nimport formatOptionForYargs from '../../lib/formatOptionForYargs.js'\n\nconst operation = async ({ path, generator, yargs, root = false, payload }) => {\n const candidates = await jetpack.listAsync(path)\n if (!candidates || !candidates.length) {\n return\n }\n\n const commands = []\n let index = null\n\n let subCommands = []\n\n await Promise.all(candidates.map(async item => {\n const __path = `${path}/${item}`\n const stat = await fs.promises.stat(__path)\n if (!stat || !stat.isDirectory()) {\n return null\n }\n\n const subCommand = await operation({ path: __path, generator, payload, yargs })\n subCommands.push(subCommand)\n }))\n\n await Promise.all(candidates.map(async item => {\n const __path = `${path}/${item}`\n const stat = await fs.promises.stat(__path)\n if (!stat || stat.isDirectory()) {\n return null\n }\n\n const { data: commandData, command } = await buildCommand({ path: __path, generator, fileName: item, payload })\n\n if (item === 'index.js') {\n return\n }\n\n command.builder = yargs => {\n fixOptions({ generator, commandOptions: commandData.options, yargs })\n if (commandData.example) {\n yargs.example(commandData.example)\n }\n }\n if (commandData.usage) {\n }\n commands.push(command)\n\n }))\n\n await Promise.all(candidates.map(async item => {\n const __path = `${path}/${item}`\n const stat = await fs.promises.stat(__path)\n if (!stat || stat.isDirectory()) {\n return null\n }\n\n if (item !== 'index.js') {\n return\n }\n\n const { data: commandData, command } = await buildCommand({ path: __path, generator, fileName: item, payload })\n\n if (!root) {\n command.builder = yargs => {\n fixOptions({ generator, commandOptions: commandData.options, yargs })\n // commandData.options.forEach(option => formatOptionForYargs({ option, yargs }))\n if (commandData.example) {\n yargs.example(commandData.example)\n }\n commands.forEach(subCommand => {\n yargs.command(subCommand)\n })\n subCommands.forEach(subCommand => {\n yargs.command(subCommand.index)\n })\n }\n }\n else {\n subCommands.forEach(subCommand => {\n yargs.command(subCommand.index)\n })\n }\n\n\n index = command\n }))\n\n return { index, commands }\n}\n\nexport default operation\n\n\n\nimport parseArgv from 'tiny-parse-argv'\nconst fixOptions = ({ generator, commandOptions, yargs }) => {\n let nativeArgv = parseArgv(process.argv)\n delete nativeArgv[\"--\"]\n delete nativeArgv[\"_\"]\n Object.keys(nativeArgv).forEach(n => {\n generator.payload[n] = nativeArgv[n]\n })\n\n const _options = (commandOptions && commandOptions.length)\n ? commandOptions\n : []\n const options = _options.map(option => {\n const value = nativeArgv[option.name]\n return {\n ...option,\n value\n }\n })\n generator.mergeOptions(options)\n generator.options.forEach(option => formatOptionForYargs({ option, yargs }))\n}\n","import buildGenerator from './build/generator/index.js'\nimport buildDir from './build/index.js'\n\nexport default async ({ path, yargs, options }) => {\n\n const commandsPath = `${path}/commands`\n const payload = {}\n const generator = buildGenerator({ payload, options, yargs })\n const { index, commands } = await buildDir({ path: commandsPath, generator, yargs, root: true, payload })\n commands.forEach(command => {\n yargs.command(command)\n })\n\n yargs.argv\n return commands\n}\n","import fs from 'fs'\nexport default async (file) => {\n return fs.promises.access(file, fs.constants.F_OK)\n .then(() => true)\n .catch(() => false)\n}","import checkFileExists from './checkFileExists.js'\nimport fs from 'fs'\nimport _path from 'path'\nimport _ from 'underscore'\n//https://www.npmjs.com/package/directory-import\n\n\nconst perform = async ({ path,\n includeMeta = false,\n excludes = ['spec.js'],\n includeExtensions = ['.js', '.ts', '.json']\n}) => {\n try {\n if (!(await checkFileExists(path))) {\n return null\n }\n\n const items = await fs.promises.readdir(path)\n\n if (!items || !items.length) {\n return null\n }\n\n let results = (await Promise.all(items.map(async item => {\n\n\n const __path = _path.join(path, item)\n\n const _stat = await fs.promises.stat(__path)\n if (!_stat) {\n return null\n }\n\n const isDir = _stat.isDirectory()\n if (isDir) {\n return perform({ path: __path })\n }\n\n if (!(await checkFileExists(__path))) {\n return null\n }\n\n if (item.includes('spec.js')) {\n return null\n }\n const extension = getExtension(item)\n if (!includeExtensions.includes(extension)) {\n return null\n }\n\n if (includeMeta) {\n const racine = getFileRaw(__path)\n const _module = await import(__path)\n const md = `${racine}.md`\n let documentation = null\n if ((await checkFileExists(md))) {\n documentation = await fs.promises.readFile(md, 'utf8')\n }\n\n return [{\n module: _module,\n path: __path,\n documentation\n }]\n } else {\n return [(await import(__path))]\n }\n }))).filter(a => a)\n\n results = _.flatten(results)\n return results\n }\n catch (e) {\n console.error(e)\n return null\n }\n}\n\nconst getExtension = str => str.slice(str.lastIndexOf(\".\"))\nconst getFileRaw = str => str.split('.').slice(0, -1).join('.')\n\n\nexport default perform\n","import directoryFilesRecursive from '../lib/directoryFilesRecursive.js'\n\nexport default async ({ path, config, }) => {\n const optionsPath = `${path}/options`\n let files = await directoryFilesRecursive({\n path: optionsPath,\n includeMeta: false\n })\n files = files ? files.map(f => f.default) : []\n return files\n}\n","// https://medium.com/netscape/a-guide-to-create-a-nodejs-command-line-package-c2166ad0452e\n// https://www.reddit.com/r/node/comments/12uak6h/npx_not_running_correctly/\n// https://docs.npmjs.com/cli/v9/configuring-npm/package-json#bin\n// https://github.com/yargs/yargs/issues/1844#issuecomment-998966393\n// https://github.com/yargs/yargs/issues/225#issuecomment-699540088\n// https://github.com/lirantal/nodejs-cli-apps-best-practices\n\n// https://stackoverflow.com/a/69503617\n/*\nchmod +x ./dist/app.cjs\nyarn link\nservable\n*/\n\nimport _yargs from 'yargs';\nimport { hideBin } from 'yargs/helpers';\nimport fs from 'fs';\nimport registerCommands from './commands/index.js';\nimport _path from 'path';\nimport getFileCallerURL from './lib/getFileCallerURL.js';\nimport loadOptions from './loadOptions/index.js';\n\n\nexport default async ({ path, npmPackage, config } = {}) => {\n\n // import options from './options.js';\n let __actualPath = path\n if (!__actualPath) {\n const ce = getFileCallerURL()\n __actualPath = _path.dirname(ce)\n __actualPath = __actualPath.replace('file://', '')\n }\n\n\n let __actualNpmPackage = npmPackage\n if (!__actualNpmPackage) {\n const __d = _path.resolve(__actualPath, '../package.json')\n if (fs.existsSync(__d)) {\n __actualNpmPackage = JSON.parse(fs.readFileSync(__d).toString())\n }\n }\n if (!__actualNpmPackage) {\n __actualNpmPackage = { version: \"0.0.0\" }\n }\n\n let __actualConfig = config\n if (!__actualConfig) {\n const __d = _path.resolve(__actualPath, '../cli.config.json')\n if (fs.existsSync(__d)) {\n __actualConfig = JSON.parse(fs.readFileSync(__d).toString())\n }\n }\n if (!__actualConfig) {\n __actualConfig = {}\n }\n //https://github.com/yargs/yargs/issues/569\n\n\n\n const yargs = _yargs(hideBin(process.argv))\n\n\n yargs\n // .options(options)\n .usage('Usage: servable <command>')\n .demandCommand(1)\n .wrap(Math.min(yargs.terminalWidth(), 160))\n .help('help')\n .alias('help', 'h')\n .version(__actualNpmPackage.version)\n .alias('version', 'v')\n .hide('help')\n .hide('version')\n .epilog('Made by Servable.')\n\n const options = await loadOptions({ path: __actualPath, config: __actualConfig })\n await registerCommands({ path: __actualPath, yargs, config: __actualConfig, options })\n\n}\n\n\n"],"names":["input","params","length","a","type","nonEmpty","props","payload","question","generator","promptModule","promptType","name","message","defaultValue","validators","value","alias","valueIsDefined","undefined","print","log","chalk","green","bold","italic","isQuick","prompt","_extends","default","validate","isValid","Bluebird","Promise","mapSeries","validator","getValidators","_i","regex","f","RegExp","test","id","inquirer","ask","questions","Array","isArray","result","fullQuestion","items","options","filter","module","_f","_promptModule","v","confirm","registerPrompt","key","inquirerPromptAutocomplete","inquirerFileTreeSelection","inquirerParseJsonFile","render","text","data","ejs","_error$stack","error","Error","stack","split","filePathPattern","exec","filePath","jetpack","copy","source","destination","useRelativeCall","fs","promises","cp","copyTpl","entry","readFile","writeFile","copyFraction","_source","sou","getFileCallerURL","_path","dirname","replace","re","copyAsync","overwrite","drawSectionHeader","title","subTitle","white","bgRed","bgGreen","blue","handlerOptions","map","option","scope","i","_","findWhere","libraryOptions","lodash","merge","console","mergeOptions","op","ui","template","spawn","command","args","resolve","on","path","fileName","description","handler","example","desc","builder","argv","yargs","global","operation","root","candidates","listAsync","commands","index","subCommands","all","item","__path","stat","isDirectory","subCommand","push","commandData","buildCommand","fixOptions","commandOptions","forEach","nativeArgv","parseArgv","process","Object","keys","n","_options","formatOptionForYargs","commandsPath","buildGenerator","buildDir","file","access","constants","F_OK","then","catch","perform","includeMeta","excludes","includeExtensions","checkFileExists","readdir","results","join","_stat","isDir","includes","extension","getExtension","racine","getFileRaw","_module","md","documentation","flatten","e","str","slice","lastIndexOf","config","optionsPath","files","directoryFilesRecursive","npmPackage","__actualPath","ce","__actualNpmPackage","__d","existsSync","JSON","parse","readFileSync","toString","version","__actualConfig","_yargs","hideBin","usage","demandCommand","wrap","Math","min","terminalWidth","help","hide","epilog","loadOptions","registerCommands"],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,152 @@
1
+ {
2
+ "name": "@notifiles/sdk",
3
+ "type": "module",
4
+ "version": "1.0.0",
5
+ "description": "",
6
+ "author": {
7
+ "name": "adoucoure",
8
+ "email": "yelounak@gmail.com"
9
+ },
10
+ "license": "MIT",
11
+ "main": "src/index.js",
12
+ "scripts": {
13
+ "build": "microbundle",
14
+ "dev": "microbundle watch --no-compress --format modern,cjs",
15
+ "test_": "echo \"Error: no test specified\" && exit 1",
16
+ "semantic-release": "semantic-release",
17
+ "acp": "git add . && npm run commit && git push",
18
+ "commit": "git-cz",
19
+ "size": "size-limit",
20
+ "analyze": "size-limit --why",
21
+ "start": "microbundle-crl watch --no-compress --format modern,cjs",
22
+ "prepare_": "run-s build",
23
+ "test": "node --experimental-vm-modules node_modules/jest/bin/jest.js",
24
+ "test:build": "run-s build",
25
+ "test:lint": "eslint ."
26
+ },
27
+ "files": [
28
+ "dist",
29
+ "src"
30
+ ],
31
+ "engines": {
32
+ "node": ">=10"
33
+ },
34
+ "_engineStrict": false,
35
+ "config": {
36
+ "commitizen": {
37
+ "path": "./node_modules/cz-conventional-changelog"
38
+ }
39
+ },
40
+ "publishConfig": {
41
+ "access": "public"
42
+ },
43
+ "repository": {
44
+ "type": "git",
45
+ "url": "https://github.com/notifiles/sdk"
46
+ },
47
+ "prettier": {
48
+ "printWidth": 80,
49
+ "semi": true,
50
+ "singleQuote": true,
51
+ "trailingComma": "es5"
52
+ },
53
+ "size-limit": [
54
+ {
55
+ "path": "dist/index.js",
56
+ "limit": "600 KB"
57
+ },
58
+ {
59
+ "path": "dist/index.modern.js",
60
+ "limit": "600 KB"
61
+ },
62
+ {
63
+ "path": "dist/index.umd.js",
64
+ "limit": "600 KB"
65
+ }
66
+ ],
67
+ "keywords": [],
68
+ "dependencies": {
69
+ "@microflash/remark-figure-caption": "^2.0.2",
70
+ "@stdlib/string-replace": "^0.2.1",
71
+ "axios": "^1.6.1",
72
+ "base64-image-mime": "^1.0.2",
73
+ "dev-to-js": "^0.1.2",
74
+ "devto-nodejs-sdk": "^1.0.7",
75
+ "dotenv": "^16.0.1",
76
+ "ejs": "^3.1.9",
77
+ "execa": "^9.1.0",
78
+ "fast-glob": "^3.3.2",
79
+ "fs-jetpack": "^5.1.0",
80
+ "fs-tree-tool": "^0.0.4",
81
+ "fuzzy": "^0.1.3",
82
+ "hast-util-to-html": "^9.0.1",
83
+ "hast-util-to-mdast": "^10.1.0",
84
+ "image-downloader": "^4.3.0",
85
+ "image-to-base64": "^2.2.0",
86
+ "is-local": "^0.1.0",
87
+ "is-relative": "^1.0.0",
88
+ "js-sha256": "^0.11.0",
89
+ "lodash": "^4.17.21",
90
+ "markdown-it-image-figures": "^2.1.1",
91
+ "marked": "^12.0.2",
92
+ "mdast-util-to-hast": "^13.1.0",
93
+ "mdast-util-to-markdown": "^2.1.0",
94
+ "mdast-util-to-string": "^4.0.0",
95
+ "mdimg": "^1.0.0",
96
+ "mdx-to-md": "^0.3.2",
97
+ "mermaid-svg": "^0.0.1",
98
+ "mimetype": "^0.0.8",
99
+ "minio": "^7.1.4",
100
+ "nanoid": "^5.0.7",
101
+ "node-bunny-storage": "^2.2.0",
102
+ "patch-package": "^8.0.0",
103
+ "rehype-parse": "^9.0.0",
104
+ "rehype-remark": "^10.0.0",
105
+ "rehype-stringify": "^10.0.0",
106
+ "remark-gfm": "^4.0.0",
107
+ "remark-parse": "^11.0.0",
108
+ "remark-preset-lint-consistent": "^6.0.0",
109
+ "remark-preset-lint-recommended": "^7.0.0",
110
+ "remark-rehype": "^11.1.0",
111
+ "remark-stringify": "^11.0.0",
112
+ "sharp": "^0.33.4",
113
+ "slug": "^9.1.0",
114
+ "strip-markdown": "^6.0.0",
115
+ "tiny-parse-argv": "^2.4.0",
116
+ "twitter": "^1.7.1",
117
+ "underscore": "^1.13.6",
118
+ "unified": "^11.0.4",
119
+ "yaml": "^2.4.2"
120
+ },
121
+ "devDependencies": {
122
+ "@semantic-release/git": "^10.0.1",
123
+ "@semantic-release/gitlab": "^12.0.6",
124
+ "@semantic-release/npm": "^11.0.0",
125
+ "@size-limit/preset-small-lib": "^4.10.2",
126
+ "@types/jest": "^29.5.12",
127
+ "cz-conventional-changelog": "^3.3.0",
128
+ "eslint": "^6.8.0",
129
+ "eslint-config-prettier": "^6.7.0",
130
+ "eslint-config-standard": "^14.1.0",
131
+ "eslint-config-standard-react": "^9.2.0",
132
+ "eslint-plugin-import": "^2.18.2",
133
+ "eslint-plugin-node": "^11.0.0",
134
+ "eslint-plugin-prettier": "^3.1.1",
135
+ "eslint-plugin-promise": "^4.2.1",
136
+ "eslint-plugin-react": "^7.17.0",
137
+ "eslint-plugin-standard": "^4.0.1",
138
+ "husky": "^6.0.0",
139
+ "javascript-obfuscator": "^4.0.0",
140
+ "jest": "^29.7.0",
141
+ "microbundle": "^0.15.1",
142
+ "npm-run-all": "^4.1.5",
143
+ "prettier": "^2.0.4",
144
+ "semantic-release": "^22",
145
+ "size-limit": "^4.10.2"
146
+ },
147
+ "next": {
148
+ "react-email": "^2.1.3",
149
+ "@react-email/components": "0.0.18",
150
+ "@react-email/render": "^0.0.14"
151
+ }
152
+ }
@@ -0,0 +1,38 @@
1
+ import adaptSettings from '../../lib/adaptSettings.js'
2
+ import update from '../../project/lib/manifest/update.js'
3
+ import validate from './lib/validate.js'
4
+
5
+ export default async ({
6
+ path,
7
+ cloud,
8
+ settings = {}
9
+ }) => {
10
+
11
+ try {
12
+ adaptSettings({ settings })
13
+ const { isValid, error } = await validate({ cloud, settings })
14
+ if (!isValid) {
15
+ return { isValid, error }
16
+ }
17
+
18
+ const clouds = [cloud]
19
+
20
+ await update({
21
+ path,
22
+ data: {
23
+ clouds: clouds.map(cloud => {
24
+ const a = {
25
+ ...cloud,
26
+ }
27
+ delete a.auth
28
+ return a
29
+ }),
30
+ }
31
+ })
32
+
33
+ return { isValid: true, }
34
+ } catch (e) {
35
+ // console.error(e)
36
+ return { isValid: true, error: e }
37
+ }
38
+ }
@@ -0,0 +1,38 @@
1
+
2
+
3
+ describe('project', () => {
4
+ it.skip('adds a minio platform', async () => {
5
+ const fsPath = (await import('path')).default
6
+ let path = `${fsPath.resolve(process.env.TEST_MOCK_FOLDER_ROOT)}/${process.env.TEST_MOCK_FOLDER_NEW_NAME}`
7
+ const operation = (await import('./index.js')).default
8
+ const result = await operation({
9
+ path,
10
+ cloud: {
11
+ id: "minio",
12
+ auth: {
13
+ endPoint: process.env.TEST_MINIO_ENDPOINT,
14
+ accessKey: process.env.TEST_MINIO_ACCESS_KEY,
15
+ secretKey: process.env.TEST_MINIO_SECRET,
16
+ bucketName: process.env.TEST_MINIO_BUCKET_NAME
17
+ }
18
+ }
19
+ })
20
+ expect(result.isValid).toBeTruthy()
21
+ })
22
+ it.skip('adds a bunny platform', async () => {
23
+ const fsPath = (await import('path')).default
24
+ let path = `${fsPath.resolve(process.env.TEST_MOCK_FOLDER_ROOT)}/${process.env.TEST_MOCK_FOLDER_NEW_NAME}`
25
+ const operation = (await import('./index.js')).default
26
+ const result = await operation({
27
+ path,
28
+ cloud: {
29
+ id: "bunny",
30
+ auth: {
31
+ accessKey: process.env.TEST_BUNNY_ACCESS_KEY,
32
+ storageZoneName: process.env.TEST_BUNNY_STORAGE_ZONE_NAME,
33
+ }
34
+ }
35
+ })
36
+ expect(result.isValid).toBeTruthy()
37
+ })
38
+ })
@@ -0,0 +1,16 @@
1
+
2
+ export default async ({ cloud, settings }) => {
3
+ const {
4
+ id,
5
+ auth } = cloud
6
+
7
+ const cloudLibrary = settings.cloudLibrary({ id })
8
+ if (!cloudLibrary) {
9
+ return {
10
+ isValid: false,
11
+ error: new Error('Cloud not supported.')
12
+ }
13
+ }
14
+
15
+ return cloudLibrary.isValid({ auth })
16
+ }
@@ -0,0 +1,3 @@
1
+
2
+ export { default as add } from './add/index.js'
3
+ export { default as list } from './list/index.js'
@@ -0,0 +1,18 @@
1
+ import read from '../../project/lib/manifest/read.js'
2
+
3
+ export default async ({
4
+ path,
5
+ }) => {
6
+ try {
7
+ const existing = await read({ path })
8
+ if (!existing) {
9
+ return null
10
+ }
11
+
12
+ const { clouds } = existing
13
+ return clouds
14
+ } catch (e) {
15
+ console.error(e)
16
+ }
17
+ return false
18
+ }
@@ -0,0 +1,13 @@
1
+
2
+
3
+ describe.skip('project', () => {
4
+ it('lists platforms', async () => {
5
+ const fsPath = (await import('path')).default
6
+ let path = `${fsPath.resolve(process.env.TEST_MOCK_FOLDER_ROOT)}/${process.env.TEST_MOCK_FOLDER_NEW_NAME}`
7
+ const operation = (await import('./index.js')).default
8
+ const result = await operation({
9
+ path,
10
+ })
11
+ expect(result).toBeTruthy()
12
+ })
13
+ })
@@ -0,0 +1,52 @@
1
+ import htmlToMdast from '../../../../lib/remark/htmlToMdast_.js'
2
+ import mdastToMarkdown from '../../../../lib/remark/mdastToMarkdown.js'
3
+ import reset from '../reset.js'
4
+ import { render } from '@react-email/render'
5
+
6
+ export default async (props) => {
7
+
8
+ const { entry } = props
9
+ const { path, email } = entry
10
+ const { default: Template, } = email
11
+ await reset({ path })
12
+
13
+ let html = render(<Template />, {
14
+ pretty: true,
15
+ })
16
+
17
+ const text = render(<Template />, {
18
+ plainText: true,
19
+ })
20
+
21
+ const child = await htmlToMdast({ data: html })
22
+ const mdast = await perform({
23
+ child,
24
+ path
25
+ })
26
+
27
+ let md = await mdastToMarkdown({ mdast })
28
+
29
+ // await updatePost({
30
+ // path,
31
+ // md,
32
+ // html
33
+ // })
34
+
35
+ return {
36
+ entry: {
37
+ ...entry,
38
+ email: {
39
+ text,
40
+ html,
41
+ mdast,
42
+ md
43
+ }
44
+ },
45
+
46
+ }
47
+ }
48
+
49
+ const perform = async (props) => {
50
+ const { child, path } = props
51
+ return child
52
+ }
package/src/index.js ADDED
@@ -0,0 +1,3 @@
1
+ export * as template from './template/index.js'
2
+ export * as project from './project/index.js'
3
+ export * as cloud from './cloud/index.js'
@@ -0,0 +1,12 @@
1
+ import cloudLibrary from './cloudLibrary/index.js'
2
+
3
+ export default ({ settings }) => {
4
+
5
+ if (!settings.defaultLocale) {
6
+ settings.defaultLocale = "en_us"
7
+ }
8
+
9
+ if (!settings.cloudLibrary) {
10
+ settings.cloudLibrary = cloudLibrary
11
+ }
12
+ }
@@ -0,0 +1,2 @@
1
+ export { default as isValid } from './isValid.js'
2
+ export { default as upload } from './upload.js'
@@ -0,0 +1,32 @@
1
+ import BunnyCDNStorage from 'node-bunny-storage'
2
+
3
+ export default async ({
4
+ auth,
5
+ }) => {
6
+
7
+ try {
8
+ const {
9
+ accessKey,
10
+ storageZoneName
11
+ } = auth
12
+
13
+ const bunny = new BunnyCDNStorage({
14
+ accessKey: accessKey,
15
+ storageZoneName: storageZoneName
16
+ })
17
+
18
+ const items = await bunny.listFiles({
19
+ remoteDirectory: '/',
20
+ recursive: false
21
+ })
22
+
23
+ return {
24
+ isValid: true,
25
+ }
26
+ } catch (e) {
27
+ return {
28
+ isValid: false,
29
+ error: e
30
+ }
31
+ }
32
+ }
@@ -0,0 +1,35 @@
1
+ import BunnyCDNStorage from 'node-bunny-storage'
2
+
3
+ export default async ({
4
+ sourceUrl,
5
+ filename,
6
+ auth,
7
+ // contentType = 'image/png'
8
+ }) => {
9
+
10
+ try {
11
+ const {
12
+ accessKey,
13
+ storageZoneName,
14
+ pullZone
15
+ } = auth
16
+
17
+ const bunny = new BunnyCDNStorage({
18
+ accessKey: accessKey,
19
+ storageZoneName: storageZoneName
20
+ })
21
+
22
+ const result = await bunny.uploadFile({
23
+ localFilePath: sourceUrl,
24
+ // remoteDirectory: 'default'
25
+ })
26
+
27
+
28
+ const url = `https://${pullZone}.b-cdn.net/${filename}`
29
+ return { url }
30
+
31
+ } catch (e) {
32
+ console.error(e)
33
+ }
34
+ return null
35
+ }
@@ -0,0 +1,20 @@
1
+ import * as minio from './minio/index.js'
2
+ import * as bunny from './bunny/index.js'
3
+
4
+ export default ({
5
+ id,
6
+ } = {}) => {
7
+
8
+ switch (id) {
9
+ case 'minio': {
10
+ return minio
11
+ }
12
+ case 'bunny': {
13
+ return bunny
14
+ }
15
+ default:
16
+ break
17
+ }
18
+
19
+ return null
20
+ }
@@ -0,0 +1,4 @@
1
+ export { default as isValid } from './isValid.js'
2
+ export { default as upload } from './upload.js'
3
+ export { default as remove } from './remove.js'
4
+ // export { default as uploadFolder } from './uploadFolder.js'
@@ -0,0 +1,33 @@
1
+ import * as Minio from 'minio'
2
+
3
+ export default async ({
4
+ auth,
5
+ }) => {
6
+
7
+ try {
8
+ const {
9
+ endPoint,
10
+ accessKey,
11
+ secretKey,
12
+ bucketName
13
+ } = auth
14
+
15
+ const minioClient = new Minio.Client({
16
+ endPoint,
17
+ accessKey,
18
+ secretKey,
19
+ })
20
+
21
+ const exists = await minioClient.bucketExists(bucketName)
22
+ return {
23
+ isValid: exists,
24
+ }
25
+ } catch (e) {
26
+
27
+ return {
28
+ isValid: false,
29
+ error: e
30
+ }
31
+ }
32
+ return false
33
+ }
@@ -0,0 +1,58 @@
1
+ import * as Minio from 'minio'
2
+
3
+ export default async ({
4
+ sourceUrl,
5
+ filename,
6
+ auth,
7
+ // contentType = 'image/png'
8
+ }) => {
9
+
10
+ try {
11
+ const {
12
+ endPoint,
13
+ accessKey,
14
+ secretKey,
15
+ bucketName
16
+ } = auth
17
+
18
+ const minioClient = new Minio.Client({
19
+ endPoint,
20
+ // port,
21
+ // useSSL,
22
+ accessKey,
23
+ secretKey,
24
+ })
25
+
26
+ const exists = await minioClient.bucketExists(bucketName)
27
+ if (!exists) {
28
+ return null
29
+ // await minioClient.makeBucket(bucketName, 'us-east-1')
30
+ // console.log('Bucket ' + bucketName + ' created in "us-east-1".')
31
+ }
32
+
33
+ const metaData = {
34
+ // 'Content-Type': contentType,
35
+ }
36
+
37
+ const minioResult = await new Promise((resolve, reject) => {
38
+ minioClient.removeObject(
39
+ bucketName,
40
+ filename,
41
+ {},
42
+ (error, objInfo) => {
43
+ if (error) {
44
+ reject(error)
45
+ return
46
+ }
47
+
48
+ resolve(objInfo)
49
+ })
50
+ })
51
+
52
+ return { success: true }
53
+
54
+ } catch (e) {
55
+ console.error(e)
56
+ }
57
+ return null
58
+ }