@yongdall/create 0.6.1 → 0.6.4

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.
package/index.mjs CHANGED
@@ -134,6 +134,7 @@ const plugins = [
134
134
  "@yongdall/cache-redis",
135
135
  "@yongdall/file",
136
136
  "@yongdall/user",
137
+ "@yongdall/user-password",
137
138
  "@yongdall/permission"
138
139
  ];
139
140
  const gitignore = `\
@@ -180,7 +181,7 @@ async function createPackageJson({ name, development } = {}) {
180
181
  const files = {
181
182
  ".gitignore": async () => gitignore,
182
183
  "package.json": createPackageJson,
183
- "yongdall.config": async ({ title, single }) => ({
184
+ "yongdall.project": async ({ title, single }) => ({
184
185
  title: title || "拥道YongDall",
185
186
  single,
186
187
  bootName: "yongdallBoot",
@@ -200,7 +201,7 @@ const files = {
200
201
  "modelCopy": "@yongdall/pages#new",
201
202
  "modelEdit": "@yongdall/pages#edit"
202
203
  },
203
- continuations: { "password": "@yongdall/user#password" },
204
+ continuations: { "password": "@yongdall/user-password#page" },
204
205
  theme: "@yongdall/theme#allSider",
205
206
  skin: "@yongdall/skin/style.css",
206
207
  webRoot: "/workbench/",
@@ -238,7 +239,7 @@ async function createProject(root, { name, development, plugins: addPlugins, tit
238
239
  single
239
240
  };
240
241
  if (await existFile(rootPath, "package.json")) return;
241
- if (!await configCreatable(rootPath, "yongdall.config")) return;
242
+ if (!await configCreatable(rootPath, "yongdall.project")) return;
242
243
  await createFiles(rootPath, files, createOptions);
243
244
  }
244
245
 
package/index.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":[],"sources":["../../cli/create/npmVersion.mjs","../../cli/create/file.mjs","../../cli/create/createFiles.mjs","../../cli/create/createProject.mjs"],"sourcesContent":["/**\n * 获取 npm 包版本信息\n * @param {string} packageName \n * @returns {Promise<string>}\n */\nexport default async function npmVersion(packageName) {\n\tconst registry = 'https://registry.npmjs.org';\n\tconst response = await fetch(`${registry}/${packageName}`);\n\n\tif (!response.ok) { return ''; }\n\n\tconst data = await response.json();\n\n\treturn data['dist-tags']?.latest || '';\n}\n","import * as fsPromises from 'node:fs/promises';\nimport * as pathFn from 'node:path';\n\n/**\n * \n * @param {string} root \n * @param {string} path \n */\nexport async function fileType(root, path) {\n\treturn fsPromises.stat(pathFn.resolve(root, path)).then(\n\t\t(s) => {\n\t\t\tif (s.isFIFO()) { return 'fifo'; }\n\t\t\tif (s.isFile()) { return 'file'; }\n\t\t\tif (s.isBlockDevice()) { return 'device'; }\n\t\t\tif (s.isCharacterDevice()) { return 'device'; }\n\t\t\tif (s.isSocket()) { return 'socket'; }\n\t\t\tif (s.isDirectory()) { return 'dir'; }\n\t\t\treturn 'file';\n\t\t},\n\t\t() => '',\n\t);\n}\n\n/**\n * \n * @param {string} root \n * @param {string} path \n */\nexport async function existFile(root, path) {\n\treturn fsPromises.stat(pathFn.resolve(root, path)).then(\n\t\t(s) => true,\n\t\t() => false,\n\t);\n}\n/**\n * \n * @param {string} root \n * @param {string} path \n * @param {string | NodeJS.ArrayBufferView} [data] \n */\nexport async function createFile(root, path, data) {\n\tconst filename = pathFn.resolve(root, path);\n\tif (data === undefined) {\n\t\tawait fsPromises.mkdir(filename, { recursive: true });\n\t\treturn;\n\t}\n\tconst dirname = pathFn.dirname(filename);\n\tawait fsPromises.mkdir(dirname, { recursive: true });\n\tawait fsPromises.writeFile(filename, data);\n}\n","import { fileType, createFile } from './file.mjs';\n\nconst configExtNames = ['.mts', '.mjs', '.json', '.yaml', '.yml', '.toml'];\n\n/**\n * \n * @param {string} root \n * @param {string} name \n */\nexport async function configCreatable(root, name) {\n\tconst ext = new Set(configExtNames);\n\tfor (const e of configExtNames) {\n\t\tconst type = await fileType(root, name + e);\n\t\tif (!type) { continue; }\n\t\text.delete(e);\n\t\tif (type === 'file') { return false; }\n\t}\n\treturn ext.has('.json');\n}\n/**\n * @template T\n * @param {string} root\n * @param {Record<string, (options: T) => PromiseLike<string | Uint8Array | object>>} files \n * @param {T} options \n * @returns {Promise<void>}\n */\nexport default async function createFiles(root, files, options) {\n\tfile: for (const [path, f] of Object.entries(files)) {\n\t\tconst isPackage = path === 'package.json';\n\t\tif (isPackage && await fileType(root, path)) {\n\t\t\tcontinue;\n\t\t}\n\t\tconst data = await f(options);\n\t\tif (ArrayBuffer.isView(data) || typeof data === 'string') {\n\t\t\tif (await fileType(root, path)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\t// @ts-ignore\n\t\t\tawait createFile(root, path, data);\n\t\t\tcontinue;\n\t\t}\n\t\tif (isPackage) {\n\t\t\tawait createFile(root, path, JSON.stringify(data, null, 2));\n\t\t\tcontinue;\n\n\t\t}\n\t\tif (!await configCreatable(root, path)) { continue; }\n\t\tawait createFile(root, path + '.json', JSON.stringify(data, null, 2));\n\t}\n\n}\n","import * as pathFn from 'node:path';\nimport createSalt from '@yongdall/configuration/createSalt.mjs';\nimport npmVersion from './npmVersion.mjs';\nimport createFiles, { configCreatable } from './createFiles.mjs';\nimport { existFile } from './file.mjs';\n\n\nconst devDependencies = [\n\t'@yongdall/live-server',\n];\nconst projectDependencies = [\n\t'@yongdall/cli',\n\t'@yongdall/migrate',\n\t'@yongdall/assets',\n\t'@yongdall/configuration',\n\t'@yongdall/http',\n];\n\nconst plugins = [\n\t'@yongdall/web',\n\t'@yongdall/theme',\n\t'@yongdall/pages',\n\t'@yongdall/skin',\n\t'@yongdall/icons-antd',\n\n\t'@yongdall/standard',\n\t'@yongdall/api',\n\t'@yongdall/api-model',\n\n\t'@yongdall/fs-s3',\n\t'@yongdall/tq-redis',\n\t'@yongdall/rdb-postgres',\n\t'@yongdall/mq-redis',\n\t'@yongdall/cache-redis',\n\n\n\t'@yongdall/file',\n\t'@yongdall/user',\n\t'@yongdall/permission',\n\n\n];\n\nconst gitignore = `\\\nnode_modules\n/assets\n/index.html\n/config/salt\n`;\n\n/**\n * @typedef {object} CreateOptions\n * @property {string} name\n * @property {string} title\n * @property {boolean} development\n * @property {boolean} single\n * @property {Record<string, string>} plugins\n */\n/**\n * \n * @param {Partial<CreateOptions>} [options] \n */\nasync function createPackageJson({ name, development } = {}) {\n\treturn {\n\t\tname: name || 'yongdall-project',\n\t\tversion: '0.0.0',\n\t\tprivate: true,\n\t\tscripts: development ? {\n\t\t\t'migrate': 'yongdall --development migrate',\n\t\t\t'start': 'yongdall http --port=8090',\n\t\t\t'test:server': 'yongdall http --watch --development --port=8090',\n\t\t\t'inspect:server': 'yongdall http --watch --inspect --development --port=8090',\n\t\t\t'assets': 'yongdall assets',\n\t\t\t'test:web': 'yongdall live-server --port=8080 --server=8090',\n\t\t\t'test': 'yongdall live-server --port=8080',\n\t\t} : {\n\t\t\t'migrate': 'yongdall --development migrate',\n\t\t\t'start': 'yongdall http --port=8090',\n\t\t\t'assets': 'yongdall assets',\n\t\t},\n\t\tdependencies: Object.fromEntries([\n\t\t\t...await Promise.all(projectDependencies.map(v => Promise.all([v, npmVersion(v)]))),\n\t\t\t...await Promise.all(plugins.map(v => Promise.all([v, npmVersion(v)]))),\n\t\t].sort(([a], [b]) => a > b ? 1 : -1).map(([k, v]) => [k, v ? `^${v}` : '*'])),\n\t\tdevDependencies: Object.fromEntries([\n\t\t\t...await Promise.all(devDependencies.map(v => Promise.all([v, npmVersion(v)]))),\n\t\t].sort(([a], [b]) => a > b ? 1 : -1).map(([k, v]) => [k, v ? `^${v}` : '*'])),\n\t};\n}\n/** @type {Record<string, (options: Partial<CreateOptions>) => PromiseLike<string | Uint8Array | object>>} */\nconst files = {\n\t'.gitignore': async () => gitignore,\n\t'package.json': createPackageJson,\n\t'yongdall.config': async ({ title, single }) => ({\n\t\ttitle: title || '拥道YongDall',\n\t\tsingle,\n\t\tbootName: 'yongdallBoot',\n\t\tbootModule: '@yongdall/web/boot'\n\t}),\n\t'config/boot': async () => ({\n\t\tpages: {\n\t\t\t'settings': '@yongdall/pages#settings',\n\t\t\t'todo': '@yongdall/pages#todo',\n\t\t\t'search': '@yongdall/pages#search',\n\t\t\t'status': '@yongdall/pages#status',\n\t\t\t'devtools': '@yongdall/devtools#page',\n\n\t\t\t'model': '@yongdall/pages#list',\n\t\t\t'modelDetails': '@yongdall/pages#details',\n\t\t\t'modelSetting': '@yongdall/pages#setting',\n\t\t\t'modelInput': '@yongdall/pages#new',\n\t\t\t'modelCopy': '@yongdall/pages#new',\n\t\t\t'modelEdit': '@yongdall/pages#edit',\n\n\t\t},\n\t\tcontinuations: {\n\t\t\t'password': '@yongdall/user#password'\n\t\t},\n\t\ttheme: '@yongdall/theme#allSider',\n\t\tskin: '@yongdall/skin/style.css',\n\t\t// route: '@yongdall/route-symbol',\n\t\twebRoot: '/workbench/',\n\t\tauthRequired: true,\n\n\t}),\n\t'config/plugins': async ({ plugins: addPlugins }) => ({\n\t\t...Object.fromEntries(plugins.map(v => [v, true])),\n\t\t...addPlugins,\n\t}),\n\t'config/providers': async () => ({\n\t\trdb: 'postgres://yongdall:yongdall@127.0.0.1:5432/lcp?schema=public',\n\t\ttq: 'redis://yongdall:yongdall@127.0.0.1:6379/0?prefix=tq:',\n\t\tmq: 'redis://yongdall:yongdall@127.0.0.1:6379/0?prefix=mq:',\n\t\tcache: 'redis://yongdall:yongdall@127.0.0.1:6379/0?prefix=cache:',\n\t}),\n\t'config/salt': () => createSalt(),\n\n};\n\n/**\n * \n * @param {string} [root] \n * @param {object} [options] \n * @param {string} [options.name] \n * @param {string} [options.title] \n * @param {boolean} [options.development] \n * @param {boolean} [options.single] \n * @param {Record<string, string>} [options.plugins] \n */\nexport default async function createProject(\n\troot, { name, development, plugins: addPlugins, title, single } = {}\n) {\n\tconst rootPath = pathFn.resolve(root || '.');\n\tconst createOptions = {\n\t\tname: name || pathFn.basename(rootPath),\n\t\tdevelopment, plugins: addPlugins, title, single,\n\t};\n\tif (await existFile(rootPath, 'package.json')) { return; }\n\tif (!await configCreatable(rootPath, 'yongdall.config')) { return; }\n\n\tawait createFiles(rootPath, files, createOptions);\n\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../cli/create/npmVersion.mjs","../../cli/create/file.mjs","../../cli/create/createFiles.mjs","../../cli/create/createProject.mjs"],"sourcesContent":["/**\n * 获取 npm 包版本信息\n * @param {string} packageName \n * @returns {Promise<string>}\n */\nexport default async function npmVersion(packageName) {\n\tconst registry = 'https://registry.npmjs.org';\n\tconst response = await fetch(`${registry}/${packageName}`);\n\n\tif (!response.ok) { return ''; }\n\n\tconst data = await response.json();\n\n\treturn data['dist-tags']?.latest || '';\n}\n","import * as fsPromises from 'node:fs/promises';\nimport * as pathFn from 'node:path';\n\n/**\n * \n * @param {string} root \n * @param {string} path \n */\nexport async function fileType(root, path) {\n\treturn fsPromises.stat(pathFn.resolve(root, path)).then(\n\t\t(s) => {\n\t\t\tif (s.isFIFO()) { return 'fifo'; }\n\t\t\tif (s.isFile()) { return 'file'; }\n\t\t\tif (s.isBlockDevice()) { return 'device'; }\n\t\t\tif (s.isCharacterDevice()) { return 'device'; }\n\t\t\tif (s.isSocket()) { return 'socket'; }\n\t\t\tif (s.isDirectory()) { return 'dir'; }\n\t\t\treturn 'file';\n\t\t},\n\t\t() => '',\n\t);\n}\n\n/**\n * \n * @param {string} root \n * @param {string} path \n */\nexport async function existFile(root, path) {\n\treturn fsPromises.stat(pathFn.resolve(root, path)).then(\n\t\t(s) => true,\n\t\t() => false,\n\t);\n}\n/**\n * \n * @param {string} root \n * @param {string} path \n * @param {string | NodeJS.ArrayBufferView} [data] \n */\nexport async function createFile(root, path, data) {\n\tconst filename = pathFn.resolve(root, path);\n\tif (data === undefined) {\n\t\tawait fsPromises.mkdir(filename, { recursive: true });\n\t\treturn;\n\t}\n\tconst dirname = pathFn.dirname(filename);\n\tawait fsPromises.mkdir(dirname, { recursive: true });\n\tawait fsPromises.writeFile(filename, data);\n}\n","import { fileType, createFile } from './file.mjs';\n\nconst configExtNames = ['.mts', '.mjs', '.json', '.yaml', '.yml', '.toml'];\n\n/**\n * \n * @param {string} root \n * @param {string} name \n */\nexport async function configCreatable(root, name) {\n\tconst ext = new Set(configExtNames);\n\tfor (const e of configExtNames) {\n\t\tconst type = await fileType(root, name + e);\n\t\tif (!type) { continue; }\n\t\text.delete(e);\n\t\tif (type === 'file') { return false; }\n\t}\n\treturn ext.has('.json');\n}\n/**\n * @template T\n * @param {string} root\n * @param {Record<string, (options: T) => PromiseLike<string | Uint8Array | object>>} files \n * @param {T} options \n * @returns {Promise<void>}\n */\nexport default async function createFiles(root, files, options) {\n\tfile: for (const [path, f] of Object.entries(files)) {\n\t\tconst isPackage = path === 'package.json';\n\t\tif (isPackage && await fileType(root, path)) {\n\t\t\tcontinue;\n\t\t}\n\t\tconst data = await f(options);\n\t\tif (ArrayBuffer.isView(data) || typeof data === 'string') {\n\t\t\tif (await fileType(root, path)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\t// @ts-ignore\n\t\t\tawait createFile(root, path, data);\n\t\t\tcontinue;\n\t\t}\n\t\tif (isPackage) {\n\t\t\tawait createFile(root, path, JSON.stringify(data, null, 2));\n\t\t\tcontinue;\n\n\t\t}\n\t\tif (!await configCreatable(root, path)) { continue; }\n\t\tawait createFile(root, path + '.json', JSON.stringify(data, null, 2));\n\t}\n\n}\n","import * as pathFn from 'node:path';\nimport createSalt from '@yongdall/configuration/createSalt.mjs';\nimport npmVersion from './npmVersion.mjs';\nimport createFiles, { configCreatable } from './createFiles.mjs';\nimport { existFile } from './file.mjs';\n\n\nconst devDependencies = [\n\t'@yongdall/live-server',\n];\nconst projectDependencies = [\n\t'@yongdall/cli',\n\t'@yongdall/migrate',\n\t'@yongdall/assets',\n\t'@yongdall/configuration',\n\t'@yongdall/http',\n];\n\nconst plugins = [\n\t'@yongdall/web',\n\t'@yongdall/theme',\n\t'@yongdall/pages',\n\t'@yongdall/skin',\n\t'@yongdall/icons-antd',\n\n\t'@yongdall/standard',\n\t'@yongdall/api',\n\t'@yongdall/api-model',\n\n\t'@yongdall/fs-s3',\n\t'@yongdall/tq-redis',\n\t'@yongdall/rdb-postgres',\n\t'@yongdall/mq-redis',\n\t'@yongdall/cache-redis',\n\n\n\t'@yongdall/file',\n\t'@yongdall/user',\n\t'@yongdall/user-password',\n\t'@yongdall/permission',\n\n\n];\n\nconst gitignore = `\\\nnode_modules\n/assets\n/index.html\n/config/salt\n`;\n\n/**\n * @typedef {object} CreateOptions\n * @property {string} name\n * @property {string} title\n * @property {boolean} development\n * @property {boolean} single\n * @property {Record<string, string>} plugins\n */\n/**\n * \n * @param {Partial<CreateOptions>} [options] \n */\nasync function createPackageJson({ name, development } = {}) {\n\treturn {\n\t\tname: name || 'yongdall-project',\n\t\tversion: '0.0.0',\n\t\tprivate: true,\n\t\tscripts: development ? {\n\t\t\t'migrate': 'yongdall --development migrate',\n\t\t\t'start': 'yongdall http --port=8090',\n\t\t\t'test:server': 'yongdall http --watch --development --port=8090',\n\t\t\t'inspect:server': 'yongdall http --watch --inspect --development --port=8090',\n\t\t\t'assets': 'yongdall assets',\n\t\t\t'test:web': 'yongdall live-server --port=8080 --server=8090',\n\t\t\t'test': 'yongdall live-server --port=8080',\n\t\t} : {\n\t\t\t'migrate': 'yongdall --development migrate',\n\t\t\t'start': 'yongdall http --port=8090',\n\t\t\t'assets': 'yongdall assets',\n\t\t},\n\t\tdependencies: Object.fromEntries([\n\t\t\t...await Promise.all(projectDependencies.map(v => Promise.all([v, npmVersion(v)]))),\n\t\t\t...await Promise.all(plugins.map(v => Promise.all([v, npmVersion(v)]))),\n\t\t].sort(([a], [b]) => a > b ? 1 : -1).map(([k, v]) => [k, v ? `^${v}` : '*'])),\n\t\tdevDependencies: Object.fromEntries([\n\t\t\t...await Promise.all(devDependencies.map(v => Promise.all([v, npmVersion(v)]))),\n\t\t].sort(([a], [b]) => a > b ? 1 : -1).map(([k, v]) => [k, v ? `^${v}` : '*'])),\n\t};\n}\n/** @type {Record<string, (options: Partial<CreateOptions>) => PromiseLike<string | Uint8Array | object>>} */\nconst files = {\n\t'.gitignore': async () => gitignore,\n\t'package.json': createPackageJson,\n\t'yongdall.project': async ({ title, single }) => ({\n\t\ttitle: title || '拥道YongDall',\n\t\tsingle,\n\t\tbootName: 'yongdallBoot',\n\t\tbootModule: '@yongdall/web/boot'\n\t}),\n\t'config/boot': async () => ({\n\t\tpages: {\n\t\t\t'settings': '@yongdall/pages#settings',\n\t\t\t'todo': '@yongdall/pages#todo',\n\t\t\t'search': '@yongdall/pages#search',\n\t\t\t'status': '@yongdall/pages#status',\n\t\t\t'devtools': '@yongdall/devtools#page',\n\n\t\t\t'model': '@yongdall/pages#list',\n\t\t\t'modelDetails': '@yongdall/pages#details',\n\t\t\t'modelSetting': '@yongdall/pages#setting',\n\t\t\t'modelInput': '@yongdall/pages#new',\n\t\t\t'modelCopy': '@yongdall/pages#new',\n\t\t\t'modelEdit': '@yongdall/pages#edit',\n\n\t\t},\n\t\tcontinuations: {\n\t\t\t'password': '@yongdall/user-password#page'\n\t\t},\n\t\ttheme: '@yongdall/theme#allSider',\n\t\tskin: '@yongdall/skin/style.css',\n\t\t// route: '@yongdall/route-symbol',\n\t\twebRoot: '/workbench/',\n\t\tauthRequired: true,\n\n\t}),\n\t'config/plugins': async ({ plugins: addPlugins }) => ({\n\t\t...Object.fromEntries(plugins.map(v => [v, true])),\n\t\t...addPlugins,\n\t}),\n\t'config/providers': async () => ({\n\t\trdb: 'postgres://yongdall:yongdall@127.0.0.1:5432/lcp?schema=public',\n\t\ttq: 'redis://yongdall:yongdall@127.0.0.1:6379/0?prefix=tq:',\n\t\tmq: 'redis://yongdall:yongdall@127.0.0.1:6379/0?prefix=mq:',\n\t\tcache: 'redis://yongdall:yongdall@127.0.0.1:6379/0?prefix=cache:',\n\t}),\n\t'config/salt': () => createSalt(),\n\n};\n\n/**\n * \n * @param {string} [root] \n * @param {object} [options] \n * @param {string} [options.name] \n * @param {string} [options.title] \n * @param {boolean} [options.development] \n * @param {boolean} [options.single] \n * @param {Record<string, string>} [options.plugins] \n */\nexport default async function createProject(\n\troot, { name, development, plugins: addPlugins, title, single } = {}\n) {\n\tconst rootPath = pathFn.resolve(root || '.');\n\tconst createOptions = {\n\t\tname: name || pathFn.basename(rootPath),\n\t\tdevelopment, plugins: addPlugins, title, single,\n\t};\n\tif (await existFile(rootPath, 'package.json')) { return; }\n\tif (!await configCreatable(rootPath, 'yongdall.project')) { return; }\n\n\tawait createFiles(rootPath, files, createOptions);\n\n}\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yongdall/create",
3
- "version": "0.6.1",
3
+ "version": "0.6.4",
4
4
  "type": "module",
5
5
  "bin": "./bin.mjs",
6
6
  "main": "./index.mjs",
@@ -9,8 +9,11 @@
9
9
  "#cli/create": "./cli/create.mjs"
10
10
  },
11
11
  "dependencies": {
12
- "@yongdall/cli-parse": "^0.6.1",
13
- "@yongdall/configuration": "^0.6.1"
12
+ "@yongdall/cli-parse": "^0.6.4",
13
+ "@yongdall/configuration": "^0.6.4"
14
+ },
15
+ "devDependencies": {
16
+ "@yongdall/cli": "^0.6.4"
14
17
  },
15
18
  "exports": {
16
19
  ".": "./index.mjs"