@sdk-it/core 0.31.2 → 0.33.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.
@@ -40,4 +40,5 @@ export declare function createWriterProxy(writer: Writer, output: string): {
40
40
  writer: Writer;
41
41
  files: Set<string>;
42
42
  };
43
+ export declare function readJson<T>(path: string): Promise<T>;
43
44
  //# sourceMappingURL=file-system.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"file-system.d.ts","sourceRoot":"","sources":["../../src/lib/file-system.ts"],"names":[],"mappings":"AAUA,wBAAsB,OAAO,CAAC,QAAQ,EAAE,MAAM,0BAK7C;AAED,wBAAsB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAI1D;AAED,wBAAsB,UAAU,CAC9B,IAAI,EAAE,MAAM,EACZ,SAAS,UAAQ,GAChB,OAAO,CAAC,MAAM,EAAE,CAAC,CAmBnB;AAED,MAAM,MAAM,YAAY,GAAG,MAAM,CAC/B,MAAM,EACN,IAAI,GAAG,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,OAAO,CAAA;CAAE,CAC9D,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CACpD;IACE,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,EAAE,CACJ,CAAC;AACF,MAAM,MAAM,MAAM,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAE5E,wBAAsB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,iBAqBnE;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,YAAY,EACxB,gBAAgB,UAAO,EACvB,UAAU,WAAS,EACnB,MAAM,GAAE,CAAC,MAAM,EAAE;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;CACnB,KAAK,OAAqB,mBA2B5B;AAED,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,YAAY,EACxB,OAAO,GAAE;IACP,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,OAAO,CAAC;KACnB,KAAK,OAAO,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;CAMtB,mBAkCF;AAED,eAAO,MAAM,MAAM,GAAI,WAAW,MAAM,WAkBvC,CAAC;AAEF,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,UAE3C;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,UAAQ,UAKtE;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,GAAG,GAAG,KAAK,IAAI,SAAS,GAAG,IAAI,CAEvE;AACD,wBAAgB,kBAAkB,CAAC,CAAC,EAClC,KAAK,EAAE,CAAC,GACP,KAAK,IAAI,OAAO,CAAC,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC,CAEvC;AAED,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,GACb;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;CAAE,CAaxC"}
1
+ {"version":3,"file":"file-system.d.ts","sourceRoot":"","sources":["../../src/lib/file-system.ts"],"names":[],"mappings":"AAUA,wBAAsB,OAAO,CAAC,QAAQ,EAAE,MAAM,0BAK7C;AAED,wBAAsB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAI1D;AAED,wBAAsB,UAAU,CAC9B,IAAI,EAAE,MAAM,EACZ,SAAS,UAAQ,GAChB,OAAO,CAAC,MAAM,EAAE,CAAC,CAmBnB;AAED,MAAM,MAAM,YAAY,GAAG,MAAM,CAC/B,MAAM,EACN,IAAI,GAAG,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,OAAO,CAAA;CAAE,CAC9D,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CACpD;IACE,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,EAAE,CACJ,CAAC;AACF,MAAM,MAAM,MAAM,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAE5E,wBAAsB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,iBAqBnE;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,YAAY,EACxB,gBAAgB,UAAO,EACvB,UAAU,WAAS,EACnB,MAAM,GAAE,CAAC,MAAM,EAAE;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;CACnB,KAAK,OAAqB,mBA2B5B;AAED,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,YAAY,EACxB,OAAO,GAAE;IACP,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,OAAO,CAAC;KACnB,KAAK,OAAO,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;CAMtB,mBAkCF;AAED,eAAO,MAAM,MAAM,GAAI,WAAW,MAAM,WAkBvC,CAAC;AAEF,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,UAE3C;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,UAAQ,UAKtE;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,GAAG,GAAG,KAAK,IAAI,SAAS,GAAG,IAAI,CAEvE;AACD,wBAAgB,kBAAkB,CAAC,CAAC,EAClC,KAAK,EAAE,CAAC,GACP,KAAK,IAAI,OAAO,CAAC,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC,CAEvC;AAED,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,GACb;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;CAAE,CAaxC;AAED,wBAAsB,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,cAG7C"}
@@ -103,9 +103,7 @@ async function getFolderExportsV2(folder, readFolder2, options = {
103
103
  }
104
104
  } else if (file.fileName !== `index.${options.extensions}` && options.extensions.includes(getExt(file.fileName))) {
105
105
  let name = options.includeExtension ? file.fileName : file.fileName.replace(extname(file.fileName), "");
106
- if (name.startsWith("$")) {
107
- name = `\\${name}`;
108
- }
106
+ name = name.replace(/\$/g, "\\$");
109
107
  exports.push(`${options.exportSyntax} './${name}';`);
110
108
  }
111
109
  }
@@ -154,6 +152,10 @@ function createWriterProxy(writer, output) {
154
152
  }
155
153
  };
156
154
  }
155
+ async function readJson(path) {
156
+ const data = await readFile(path, "utf-8");
157
+ return JSON.parse(data);
158
+ }
157
159
  export {
158
160
  addLeadingSlash,
159
161
  createWriterProxy,
@@ -165,6 +167,7 @@ export {
165
167
  isNullOrUndefined,
166
168
  notNullOrUndefined,
167
169
  readFolder,
170
+ readJson,
168
171
  removeTrialingSlashes,
169
172
  writeFiles
170
173
  };
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/lib/file-system.ts"],
4
- "sourcesContent": ["import { mkdir, readFile, readdir, stat, writeFile } from 'node:fs/promises';\nimport {\n dirname,\n extname,\n isAbsolute,\n join,\n normalize,\n relative,\n} from 'node:path';\n\nexport async function getFile(filePath: string) {\n if (await exist(filePath)) {\n return readFile(filePath, 'utf-8');\n }\n return null;\n}\n\nexport async function exist(file: string): Promise<boolean> {\n return stat(file)\n .then(() => true)\n .catch(() => false);\n}\n\nexport async function readFolder(\n path: string,\n recursive = false,\n): Promise<string[]> {\n if (!(await exist(path))) {\n return [];\n }\n const entries = await readdir(path, { withFileTypes: true });\n const results: string[] = [];\n for (const entry of entries) {\n if (entry.isDirectory()) {\n if (recursive) {\n const subFiles = await readFolder(join(path, entry.name), true);\n for (const sub of subFiles) {\n results.push(`${entry.name}/${sub}`);\n }\n }\n } else {\n results.push(entry.name);\n }\n }\n return results;\n}\n\nexport type WriteContent = Record<\n string,\n null | string | { content: string; ignoreIfExists?: boolean }\n>;\n\nexport type ReadFolderFn = (folder: string) => Promise<\n {\n filePath: string;\n fileName: string;\n isFolder: boolean;\n content?: string;\n }[]\n>;\nexport type Writer = (dir: string, contents: WriteContent) => Promise<void>;\n\nexport async function writeFiles(dir: string, contents: WriteContent) {\n await Promise.all(\n Object.entries(contents).map(async ([file, content]) => {\n if (content === null) {\n return;\n }\n const filePath = isAbsolute(file) ? file : join(dir, file);\n await mkdir(dirname(filePath), { recursive: true });\n if (typeof content === 'string') {\n await writeFile(filePath, content, 'utf-8');\n } else {\n if (content.ignoreIfExists) {\n if (!(await exist(filePath))) {\n await writeFile(filePath, content.content, 'utf-8');\n }\n } else {\n await writeFile(filePath, content.content, 'utf-8');\n }\n }\n }),\n );\n}\n\n/**\n * @deprecated use getFolderExportsV2 instead\n */\nexport async function getFolderExports(\n folder: string,\n readFolder: ReadFolderFn,\n includeExtension = true,\n extensions = ['ts'],\n ignore: (config: {\n filePath: string;\n fileName: string;\n isFolder: boolean;\n }) => boolean = () => false,\n) {\n const files = await readFolder(folder);\n const exports: string[] = [];\n for (const file of files) {\n if (ignore(file)) {\n continue;\n }\n if (file.isFolder) {\n if (\n (await exist(`${file.filePath}/index.ts`)) &&\n (await readFile(`${file.filePath}/index.ts`, 'utf-8')) !== ''\n ) {\n exports.push(\n `export * from './${file.fileName}/index${includeExtension ? '.ts' : ''}';`,\n );\n }\n } else if (\n file.fileName !== 'index.ts' &&\n extensions.includes(getExt(file.fileName))\n ) {\n exports.push(\n `export * from './${includeExtension ? file.fileName : file.fileName.replace(extname(file.fileName), '')}';`,\n );\n }\n }\n return exports.join('\\n');\n}\n\nexport async function getFolderExportsV2(\n folder: string,\n readFolder: ReadFolderFn,\n options: {\n includeExtension?: boolean;\n extensions: string;\n ignore?: (fileInfo: {\n filePath: string;\n fileName: string;\n isFolder: boolean;\n }) => boolean;\n exportSyntax: string;\n } = {\n extensions: 'ts',\n ignore: () => false,\n includeExtension: true,\n exportSyntax: 'export * from ',\n },\n) {\n options.includeExtension ??= true;\n if (!(await exist(folder))) {\n return '';\n }\n const files = await readFolder(folder);\n const exports: string[] = [];\n for (const file of files) {\n if (options.ignore?.(file)) {\n continue;\n }\n if (file.isFolder) {\n if (await exist(`${file.filePath}/index.${options.extensions}`)) {\n exports.push(\n `${options.exportSyntax} './${file.fileName}/index${\n options.includeExtension ? `.${options.extensions}` : ''\n }';`,\n );\n }\n } else if (\n file.fileName !== `index.${options.extensions}` &&\n options.extensions.includes(getExt(file.fileName))\n ) {\n let name = options.includeExtension\n ? file.fileName\n : file.fileName.replace(extname(file.fileName), '');\n if (name.startsWith('$')) {\n name = `\\\\${name}`\n }\n exports.push(`${options.exportSyntax} './${name}';`);\n }\n }\n return exports.join('\\n');\n}\n\nexport const getExt = (fileName?: string) => {\n if (!fileName) {\n return ''; // shouldn't happen as there will always be a file name\n }\n const lastDot = fileName.lastIndexOf('.');\n if (lastDot === -1) {\n return '';\n }\n const ext = fileName\n .slice(lastDot + 1)\n .split('/')\n .filter(Boolean)\n .join('');\n if (ext === fileName) {\n // files that have no extension\n return '';\n }\n return ext || 'txt';\n};\n\nexport function addLeadingSlash(path: string) {\n return normalize(join('/', path));\n}\n\nexport function removeTrialingSlashes(path: string, keepLastOne = false) {\n while (path.endsWith('/')) {\n path = path.slice(0, -1);\n }\n return path + (keepLastOne ? '/' : '');\n}\n\nexport function isNullOrUndefined(value: any): value is undefined | null {\n return value === undefined || value === null;\n}\nexport function notNullOrUndefined<T>(\n value: T,\n): value is Exclude<T, null | undefined> {\n return !isNullOrUndefined(value);\n}\n\nexport function createWriterProxy(\n writer: Writer,\n output: string,\n): { writer: Writer; files: Set<string> } {\n const writtenFiles = new Set<string>();\n return {\n files: writtenFiles,\n writer: async (dir: string, contents: WriteContent) => {\n await writer(dir, contents);\n for (const file of Object.keys(contents)) {\n if (contents[file] !== null) {\n writtenFiles.add(addLeadingSlash(`${relative(output, dir)}/${file}`));\n }\n }\n },\n };\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { mkdir, readFile, readdir, stat, writeFile } from 'node:fs/promises';\nimport {\n dirname,\n extname,\n isAbsolute,\n join,\n normalize,\n relative,\n} from 'node:path';\n\nexport async function getFile(filePath: string) {\n if (await exist(filePath)) {\n return readFile(filePath, 'utf-8');\n }\n return null;\n}\n\nexport async function exist(file: string): Promise<boolean> {\n return stat(file)\n .then(() => true)\n .catch(() => false);\n}\n\nexport async function readFolder(\n path: string,\n recursive = false,\n): Promise<string[]> {\n if (!(await exist(path))) {\n return [];\n }\n const entries = await readdir(path, { withFileTypes: true });\n const results: string[] = [];\n for (const entry of entries) {\n if (entry.isDirectory()) {\n if (recursive) {\n const subFiles = await readFolder(join(path, entry.name), true);\n for (const sub of subFiles) {\n results.push(`${entry.name}/${sub}`);\n }\n }\n } else {\n results.push(entry.name);\n }\n }\n return results;\n}\n\nexport type WriteContent = Record<\n string,\n null | string | { content: string; ignoreIfExists?: boolean }\n>;\n\nexport type ReadFolderFn = (folder: string) => Promise<\n {\n filePath: string;\n fileName: string;\n isFolder: boolean;\n content?: string;\n }[]\n>;\nexport type Writer = (dir: string, contents: WriteContent) => Promise<void>;\n\nexport async function writeFiles(dir: string, contents: WriteContent) {\n await Promise.all(\n Object.entries(contents).map(async ([file, content]) => {\n if (content === null) {\n return;\n }\n const filePath = isAbsolute(file) ? file : join(dir, file);\n await mkdir(dirname(filePath), { recursive: true });\n if (typeof content === 'string') {\n await writeFile(filePath, content, 'utf-8');\n } else {\n if (content.ignoreIfExists) {\n if (!(await exist(filePath))) {\n await writeFile(filePath, content.content, 'utf-8');\n }\n } else {\n await writeFile(filePath, content.content, 'utf-8');\n }\n }\n }),\n );\n}\n\n/**\n * @deprecated use getFolderExportsV2 instead\n */\nexport async function getFolderExports(\n folder: string,\n readFolder: ReadFolderFn,\n includeExtension = true,\n extensions = ['ts'],\n ignore: (config: {\n filePath: string;\n fileName: string;\n isFolder: boolean;\n }) => boolean = () => false,\n) {\n const files = await readFolder(folder);\n const exports: string[] = [];\n for (const file of files) {\n if (ignore(file)) {\n continue;\n }\n if (file.isFolder) {\n if (\n (await exist(`${file.filePath}/index.ts`)) &&\n (await readFile(`${file.filePath}/index.ts`, 'utf-8')) !== ''\n ) {\n exports.push(\n `export * from './${file.fileName}/index${includeExtension ? '.ts' : ''}';`,\n );\n }\n } else if (\n file.fileName !== 'index.ts' &&\n extensions.includes(getExt(file.fileName))\n ) {\n exports.push(\n `export * from './${includeExtension ? file.fileName : file.fileName.replace(extname(file.fileName), '')}';`,\n );\n }\n }\n return exports.join('\\n');\n}\n\nexport async function getFolderExportsV2(\n folder: string,\n readFolder: ReadFolderFn,\n options: {\n includeExtension?: boolean;\n extensions: string;\n ignore?: (fileInfo: {\n filePath: string;\n fileName: string;\n isFolder: boolean;\n }) => boolean;\n exportSyntax: string;\n } = {\n extensions: 'ts',\n ignore: () => false,\n includeExtension: true,\n exportSyntax: 'export * from ',\n },\n) {\n options.includeExtension ??= true;\n if (!(await exist(folder))) {\n return '';\n }\n const files = await readFolder(folder);\n const exports: string[] = [];\n for (const file of files) {\n if (options.ignore?.(file)) {\n continue;\n }\n if (file.isFolder) {\n if (await exist(`${file.filePath}/index.${options.extensions}`)) {\n exports.push(\n `${options.exportSyntax} './${file.fileName}/index${\n options.includeExtension ? `.${options.extensions}` : ''\n }';`,\n );\n }\n } else if (\n file.fileName !== `index.${options.extensions}` &&\n options.extensions.includes(getExt(file.fileName))\n ) {\n let name = options.includeExtension\n ? file.fileName\n : file.fileName.replace(extname(file.fileName), '');\n\n // replace $ with \\ to avoid issues with import/export syntax\n name = name.replace(/\\$/g, '\\\\$');\n exports.push(`${options.exportSyntax} './${name}';`);\n }\n }\n return exports.join('\\n');\n}\n\nexport const getExt = (fileName?: string) => {\n if (!fileName) {\n return ''; // shouldn't happen as there will always be a file name\n }\n const lastDot = fileName.lastIndexOf('.');\n if (lastDot === -1) {\n return '';\n }\n const ext = fileName\n .slice(lastDot + 1)\n .split('/')\n .filter(Boolean)\n .join('');\n if (ext === fileName) {\n // files that have no extension\n return '';\n }\n return ext || 'txt';\n};\n\nexport function addLeadingSlash(path: string) {\n return normalize(join('/', path));\n}\n\nexport function removeTrialingSlashes(path: string, keepLastOne = false) {\n while (path.endsWith('/')) {\n path = path.slice(0, -1);\n }\n return path + (keepLastOne ? '/' : '');\n}\n\nexport function isNullOrUndefined(value: any): value is undefined | null {\n return value === undefined || value === null;\n}\nexport function notNullOrUndefined<T>(\n value: T,\n): value is Exclude<T, null | undefined> {\n return !isNullOrUndefined(value);\n}\n\nexport function createWriterProxy(\n writer: Writer,\n output: string,\n): { writer: Writer; files: Set<string> } {\n const writtenFiles = new Set<string>();\n return {\n files: writtenFiles,\n writer: async (dir: string, contents: WriteContent) => {\n await writer(dir, contents);\n for (const file of Object.keys(contents)) {\n if (contents[file] !== null) {\n writtenFiles.add(addLeadingSlash(`${relative(output, dir)}/${file}`));\n }\n }\n },\n };\n}\n\nexport async function readJson<T>(path: string) {\n const data = await readFile(path, 'utf-8');\n return JSON.parse(data) as T;\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["readFolder"]
7
7
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sdk-it/core",
3
- "version": "0.31.2",
3
+ "version": "0.33.0",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.js",