@voxelio/deploy 1.0.1 → 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,10 +1,10 @@
1
- ---
2
- game_versions:
3
- - "1.21.1"
4
- - "1.21"
5
- - "1.20.1"
6
- version_type: release
7
- version_bump: patch
8
- ---
9
-
10
- # Changelog Test with Github CI/CD
1
+ ---
2
+ game_versions:
3
+ - "1.21.1"
4
+ - "1.21"
5
+ - "1.20.1"
6
+ version_type: release
7
+ version_bump: patch
8
+ ---
9
+
10
+ # Changelog Test with Github CI/CD
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@voxelio/deploy",
3
- "version": "1.0.1",
3
+ "version": "1.0.3",
4
4
  "type": "module",
5
5
  "license": "MIT",
6
6
  "description": "CLI tool for deploying datapacks to Modrinth and CurseForge",
@@ -15,7 +15,7 @@
15
15
  "dev": "tsx src/cli.ts"
16
16
  },
17
17
  "bin": {
18
- "voxset": "./dist/cli.js"
18
+ "voxset": "dist/cli.js"
19
19
  },
20
20
  "exports": {
21
21
  ".": {
@@ -1,2 +0,0 @@
1
- import{access as e,constants as t,copyFile as n,mkdir as r,readFile as i,writeFile as a}from"node:fs/promises";import{dirname as o,join as s,resolve as c}from"node:path";import{parse as l,stringify as u}from"yaml";import{type as d}from"arktype";import{fileURLToPath as f}from"node:url";function p(e){let t=e.match(/^---\n([\s\S]*?)\n---\n([\s\S]*)$/);if(!t)throw Error(`Invalid markdown frontmatter format`);let[,n,r]=t;return{data:l(n),content:r.trim()}}function m(e,t){return`---\n${u(e)}---\n\n${t}`}const h=`.changeset`;async function g(e,t){await r(h,{recursive:!0});let n=`${h}/${_()}`;return await a(n,m(e,t),`utf-8`),n}function _(){let e=[`happy`,`silly`,`brave`,`calm`,`bright`,`clever`,`fair`,`gentle`,`kind`,`lovely`],t=[`pandas`,`tigers`,`dragons`,`wolves`,`eagles`,`foxes`,`bears`,`lions`,`owls`,`hawks`],n=[`dance`,`jump`,`fly`,`swim`,`run`,`sing`,`play`,`rest`,`hunt`,`soar`];return`${e[Math.floor(Math.random()*e.length)]}-${t[Math.floor(Math.random()*t.length)]}-${n[Math.floor(Math.random()*n.length)]}.md`}const v=d(`'major'|'minor'|'patch'`),y=d(`'release'|'beta'|'alpha'`);d(`string`),d(`'fabric'|'forge'|'neoforge'|'quilt'`),d({game_versions:`string[]`,version_type:y,version_bump:v,"loaders?":`string[]`});const b=d({project:{version:`string`,name:`string`,filename:`string`},modrinth:{enabled:`boolean`,project_id:`string`,"featured?":`boolean`},curseforge:{datapack:{enabled:`boolean`,"project_id?":`number | null`},mod:{enabled:`boolean`,"project_id?":`number | null`,"java_versions?":`string[]`,"environments?":`string[]`}},package_as_mod:{enabled:`boolean`,loaders:`string[]`,id:`string`,"filename?":`string`,authors:`string[]`,"homepage?":`string`,"issues?":`string`,"sources?":`string`},"build?":{"exclude?":`string[]`}});async function x(){try{return await e(`deploy.yaml`,t.F_OK),!0}catch{return!1}}async function S(){let e=b(l(await i(`deploy.yaml`,`utf-8`)));if(e instanceof Error)throw Error(`Invalid deploy.yaml: ${e.message}`);return e}async function C(e){let t=b(e);if(t instanceof Error)throw Error(`Invalid config: ${t.message}`);await a(`deploy.yaml`,u(e),`utf-8`)}function w(){return{project:{version:`0.1.0`,name:``,filename:``},modrinth:{enabled:!1,project_id:``,featured:!1},curseforge:{datapack:{enabled:!1,project_id:null},mod:{enabled:!1,project_id:null,java_versions:[`Java 21`],environments:[`server`]}},package_as_mod:{enabled:!1,loaders:[`fabric`,`forge`,`neoforge`,`quilt`],id:``,authors:[]},build:{exclude:[`.git`,`.github`,`.changeset`,`.vscode`,`.cursor`,`node_modules`,`README.md`,`.gitignore`,`deploy.yaml`]}}}async function T(){try{await e(`pack.mcmeta`,t.F_OK);let n=await i(`pack.mcmeta`,`utf-8`),r=JSON.parse(n);return!!r.pack?.description&&!!r.pack?.pack_format}catch{return!1}}const E=`.github/workflows/voxset.yaml`;function D(){let e=o(f(import.meta.url));return s(e.includes(`src`)?c(e,`../..`):c(e,`..`),`examples/deploy.yml`)}async function O(){try{return await e(E,t.F_OK),!0}catch{return!1}}async function k(){await r(o(E),{recursive:!0}),await n(D(),E)}export{x as configExists,g as createChangeset,w as createDefaultConfig,m as createMarkdownWithFrontmatter,k as createWorkflow,T as isValidDatapack,p as parseMarkdownFrontmatter,S as readConfig,O as workflowExists,C as writeConfig};
2
- //# sourceMappingURL=workflow-JsUijDQh.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"workflow-JsUijDQh.js","names":[],"sources":["../src/utils/frontmatter.ts","../src/utils/changeset.ts","../src/types/schema.ts","../src/utils/config.ts","../src/utils/datapack.ts","../src/utils/workflow.ts"],"sourcesContent":["import { parse, stringify } from \"yaml\";\r\nimport type { ChangesetFrontmatter } from \"@/types/schema\";\r\n\r\nexport function parseMarkdownFrontmatter(content: string): { data: ChangesetFrontmatter; content: string } {\r\n const match = content.match(/^---\\n([\\s\\S]*?)\\n---\\n([\\s\\S]*)$/);\r\n if (!match) {\r\n throw new Error(\"Invalid markdown frontmatter format\");\r\n }\r\n\r\n const [, frontmatter, markdownContent] = match;\r\n const data = parse(frontmatter) as ChangesetFrontmatter;\r\n\r\n return {\r\n data,\r\n content: markdownContent.trim()\r\n };\r\n}\r\n\r\nexport function createMarkdownWithFrontmatter(data: ChangesetFrontmatter, content: string): string {\r\n const frontmatter = stringify(data);\r\n return `---\\n${frontmatter}---\\n\\n${content}`;\r\n}\r\n","import { mkdir, writeFile } from \"node:fs/promises\";\r\nimport type { ChangesetFrontmatter } from \"@/types/schema\";\r\nimport { createMarkdownWithFrontmatter } from \"@/utils/frontmatter\";\r\n\r\nconst CHANGESET_DIR = \".changeset\";\r\n\r\nexport async function createChangeset(data: ChangesetFrontmatter, changelog: string): Promise<string> {\r\n await mkdir(CHANGESET_DIR, { recursive: true });\r\n\r\n const filename = generateChangesetFilename();\r\n const filepath = `${CHANGESET_DIR}/${filename}`;\r\n const content = createMarkdownWithFrontmatter(data, changelog);\r\n\r\n await writeFile(filepath, content, \"utf-8\");\r\n\r\n return filepath;\r\n}\r\n\r\nfunction generateChangesetFilename(): string {\r\n const adjectives = [\"happy\", \"silly\", \"brave\", \"calm\", \"bright\", \"clever\", \"fair\", \"gentle\", \"kind\", \"lovely\"];\r\n const nouns = [\"pandas\", \"tigers\", \"dragons\", \"wolves\", \"eagles\", \"foxes\", \"bears\", \"lions\", \"owls\", \"hawks\"];\r\n const verbs = [\"dance\", \"jump\", \"fly\", \"swim\", \"run\", \"sing\", \"play\", \"rest\", \"hunt\", \"soar\"];\r\n\r\n const adj = adjectives[Math.floor(Math.random() * adjectives.length)];\r\n const noun = nouns[Math.floor(Math.random() * nouns.length)];\r\n const verb = verbs[Math.floor(Math.random() * verbs.length)];\r\n\r\n return `${adj}-${noun}-${verb}.md`;\r\n}\r\n","import { type } from \"arktype\";\r\n\r\nexport const VersionBump = type(\"'major'|'minor'|'patch'\");\r\nexport type VersionBump = typeof VersionBump.infer;\r\n\r\nexport const VersionType = type(\"'release'|'beta'|'alpha'\");\r\nexport type VersionType = typeof VersionType.infer;\r\n\r\nexport const GameVersion = type(\"string\");\r\nexport type GameVersion = typeof GameVersion.infer;\r\n\r\nexport const Loader = type(\"'fabric'|'forge'|'neoforge'|'quilt'\");\r\nexport type Loader = typeof Loader.infer;\r\n\r\nexport const ChangesetFrontmatter = type({\r\n game_versions: \"string[]\",\r\n version_type: VersionType,\r\n version_bump: VersionBump,\r\n \"loaders?\": \"string[]\"\r\n});\r\nexport type ChangesetFrontmatter = typeof ChangesetFrontmatter.infer;\r\n\r\nexport const DeployConfig = type({\r\n project: {\r\n version: \"string\",\r\n name: \"string\",\r\n filename: \"string\"\r\n },\r\n modrinth: {\r\n enabled: \"boolean\",\r\n project_id: \"string\",\r\n \"featured?\": \"boolean\"\r\n },\r\n curseforge: {\r\n datapack: {\r\n enabled: \"boolean\",\r\n \"project_id?\": \"number | null\"\r\n },\r\n mod: {\r\n enabled: \"boolean\",\r\n \"project_id?\": \"number | null\",\r\n \"java_versions?\": \"string[]\",\r\n \"environments?\": \"string[]\"\r\n }\r\n },\r\n package_as_mod: {\r\n enabled: \"boolean\",\r\n loaders: \"string[]\",\r\n id: \"string\",\r\n \"filename?\": \"string\",\r\n authors: \"string[]\",\r\n \"homepage?\": \"string\",\r\n \"issues?\": \"string\",\r\n \"sources?\": \"string\"\r\n },\r\n \"build?\": {\r\n \"exclude?\": \"string[]\"\r\n }\r\n});\r\nexport type DeployConfig = typeof DeployConfig.infer;\r\n","import { access, constants, readFile, writeFile } from \"node:fs/promises\";\r\nimport { parse, stringify } from \"yaml\";\r\nimport { DeployConfig } from \"@/types/schema\";\r\n\r\nexport async function configExists(): Promise<boolean> {\r\n try {\r\n await access(\"deploy.yaml\", constants.F_OK);\r\n return true;\r\n } catch {\r\n return false;\r\n }\r\n}\r\n\r\nexport async function readConfig(): Promise<DeployConfig> {\r\n const content = await readFile(\"deploy.yaml\", \"utf-8\");\r\n const config = parse(content);\r\n const validation = DeployConfig(config);\r\n if (validation instanceof Error) {\r\n throw new Error(`Invalid deploy.yaml: ${validation.message}`);\r\n }\r\n\r\n return validation as DeployConfig;\r\n}\r\n\r\nexport async function writeConfig(config: DeployConfig): Promise<void> {\r\n const validation = DeployConfig(config);\r\n if (validation instanceof Error) {\r\n throw new Error(`Invalid config: ${validation.message}`);\r\n }\r\n\r\n const content = stringify(config);\r\n await writeFile(\"deploy.yaml\", content, \"utf-8\");\r\n}\r\n\r\nexport function createDefaultConfig(): DeployConfig {\r\n return {\r\n project: {\r\n version: \"0.1.0\",\r\n name: \"\",\r\n filename: \"\"\r\n },\r\n modrinth: {\r\n enabled: false,\r\n project_id: \"\",\r\n featured: false\r\n },\r\n curseforge: {\r\n datapack: {\r\n enabled: false,\r\n project_id: null\r\n },\r\n mod: {\r\n enabled: false,\r\n project_id: null,\r\n java_versions: [\"Java 21\"],\r\n environments: [\"server\"]\r\n }\r\n },\r\n package_as_mod: {\r\n enabled: false,\r\n loaders: [\"fabric\", \"forge\", \"neoforge\", \"quilt\"],\r\n id: \"\",\r\n authors: []\r\n },\r\n build: {\r\n exclude: [\".git\", \".github\", \".changeset\", \".vscode\", \".cursor\", \"node_modules\", \"README.md\", \".gitignore\", \"deploy.yaml\"]\r\n }\r\n };\r\n}\r\n","import { access, constants, readFile } from \"node:fs/promises\";\r\n\r\ninterface PackMcmeta {\r\n pack?: {\r\n description?: string;\r\n pack_format?: number;\r\n };\r\n}\r\n\r\nexport async function isValidDatapack(): Promise<boolean> {\r\n try {\r\n await access(\"pack.mcmeta\", constants.F_OK);\r\n const content = await readFile(\"pack.mcmeta\", \"utf-8\");\r\n const data = JSON.parse(content) as PackMcmeta;\r\n return !!data.pack?.description && !!data.pack?.pack_format;\r\n } catch {\r\n return false;\r\n }\r\n}\r\n","import { access, constants, copyFile, mkdir } from \"node:fs/promises\";\r\nimport { dirname, join, resolve } from \"node:path\";\r\nimport { fileURLToPath } from \"node:url\";\r\n\r\nconst WORKFLOW_PATH = \".github/workflows/voxset.yaml\";\r\n\r\nfunction getExampleWorkflowPath(): string {\r\n const currentFile = fileURLToPath(import.meta.url);\r\n const currentDir = dirname(currentFile);\r\n const isSrcDir = currentDir.includes(\"src\");\r\n const packageRoot = isSrcDir ? resolve(currentDir, \"../..\") : resolve(currentDir, \"..\");\r\n return join(packageRoot, \"examples/deploy.yml\");\r\n}\r\n\r\nexport async function workflowExists(): Promise<boolean> {\r\n try {\r\n await access(WORKFLOW_PATH, constants.F_OK);\r\n return true;\r\n } catch {\r\n return false;\r\n }\r\n}\r\n\r\nexport async function createWorkflow(): Promise<void> {\r\n const dir = dirname(WORKFLOW_PATH);\r\n await mkdir(dir, { recursive: true });\r\n const examplePath = getExampleWorkflowPath();\r\n await copyFile(examplePath, WORKFLOW_PATH);\r\n}\r\n"],"mappings":"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"}