@halospv3/hce.shared-config 3.4.7 → 3.4.8

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 (72) hide show
  1. package/CHANGELOG.md +25 -4
  2. package/mjs/CaseInsensitiveMap.mjs +27 -1
  3. package/mjs/CaseInsensitiveMap.mjs.map +1 -1
  4. package/mjs/commitlintConfig.mjs +13 -1
  5. package/mjs/commitlintConfig.mjs.map +1 -1
  6. package/mjs/debug.mjs +8 -1
  7. package/mjs/debug.mjs.map +1 -1
  8. package/mjs/dotnet/GithubNugetRegistryInfo.mjs +39 -1
  9. package/mjs/dotnet/GithubNugetRegistryInfo.mjs.map +1 -1
  10. package/mjs/dotnet/GitlabNugetRegistryInfo.mjs +81 -1
  11. package/mjs/dotnet/GitlabNugetRegistryInfo.mjs.map +1 -1
  12. package/mjs/dotnet/IsNextVersionAlreadyPublished.cli.mjs +42 -1
  13. package/mjs/dotnet/IsNextVersionAlreadyPublished.cli.mjs.map +1 -1
  14. package/mjs/dotnet/MSBuildProject.mjs +345 -2
  15. package/mjs/dotnet/MSBuildProject.mjs.map +1 -1
  16. package/mjs/dotnet/MSBuildProjectProperties.mjs +233 -1
  17. package/mjs/dotnet/MSBuildProjectProperties.mjs.map +1 -1
  18. package/mjs/dotnet/NugetProjectProperties.mjs +520 -1
  19. package/mjs/dotnet/NugetProjectProperties.mjs.map +1 -1
  20. package/mjs/dotnet/NugetRegistryInfo.mjs +599 -3
  21. package/mjs/dotnet/NugetRegistryInfo.mjs.map +1 -1
  22. package/mjs/dotnet/helpers.mjs +222 -1
  23. package/mjs/dotnet/helpers.mjs.map +1 -1
  24. package/mjs/dotnet/index.mjs +9 -1
  25. package/mjs/dotnet.mjs +9 -1
  26. package/mjs/eslintConfig.mjs +97 -1
  27. package/mjs/eslintConfig.mjs.map +1 -1
  28. package/mjs/index.mjs +2 -1
  29. package/mjs/insertPlugins.mjs +35 -1
  30. package/mjs/insertPlugins.mjs.map +1 -1
  31. package/mjs/semanticReleaseConfig.mjs +63 -1
  32. package/mjs/semanticReleaseConfig.mjs.map +1 -1
  33. package/mjs/semanticReleaseConfigDotnet.mjs +223 -6
  34. package/mjs/semanticReleaseConfigDotnet.mjs.map +1 -1
  35. package/mjs/setupGitPluginSpec.default.mjs +18 -2
  36. package/mjs/setupGitPluginSpec.default.mjs.map +1 -1
  37. package/mjs/setupGitPluginSpec.mjs +108 -1
  38. package/mjs/setupGitPluginSpec.mjs.map +1 -1
  39. package/mjs/utils/Exact.d.mts +10 -10
  40. package/mjs/utils/Exact.d.mts.map +1 -1
  41. package/mjs/utils/env.mjs +39 -1
  42. package/mjs/utils/env.mjs.map +1 -1
  43. package/mjs/utils/execAsync.mjs +54 -7
  44. package/mjs/utils/execAsync.mjs.map +1 -1
  45. package/mjs/utils/isError.mjs +17 -1
  46. package/mjs/utils/isError.mjs.map +1 -1
  47. package/mjs/utils/miscTypes.mjs +7 -1
  48. package/mjs/utils/miscTypes.mjs.map +1 -1
  49. package/mjs/utils/reflection/filterForGetters.mjs +25 -1
  50. package/mjs/utils/reflection/filterForGetters.mjs.map +1 -1
  51. package/mjs/utils/reflection/getOwnPropertyDescriptors.mjs +27 -1
  52. package/mjs/utils/reflection/getOwnPropertyDescriptors.mjs.map +1 -1
  53. package/mjs/utils/reflection/getOwnPropertyDescriptorsRecursively.mjs +34 -1
  54. package/mjs/utils/reflection/getOwnPropertyDescriptorsRecursively.mjs.map +1 -1
  55. package/mjs/utils/reflection/getPrototypeChainOf.mjs +39 -1
  56. package/mjs/utils/reflection/getPrototypeChainOf.mjs.map +1 -1
  57. package/mjs/utils/reflection/getPrototypeOf.mjs +12 -1
  58. package/mjs/utils/reflection/getPrototypeOf.mjs.map +1 -1
  59. package/mjs/utils/reflection/inheritance.mjs +10 -1
  60. package/mjs/utils/reflection/inheritance.mjs.map +1 -1
  61. package/mjs/utils/reflection/isConstructor.mjs +30 -1
  62. package/mjs/utils/reflection/isConstructor.mjs.map +1 -1
  63. package/mjs/utils/reflection/isGetterDescriptor.mjs +13 -1
  64. package/mjs/utils/reflection/isGetterDescriptor.mjs.map +1 -1
  65. package/mjs/utils/reflection/listOwnGetters.mjs +29 -1
  66. package/mjs/utils/reflection/listOwnGetters.mjs.map +1 -1
  67. package/mjs/utils/reflection.mjs +10 -1
  68. package/package.json +17 -43
  69. package/src/utils/Exact.d.ts +17 -0
  70. package/mjs/utils/Exact.mjs +0 -2
  71. package/mjs/utils/Exact.mjs.map +0 -1
  72. package/src/utils/Exact.ts +0 -49
package/CHANGELOG.md CHANGED
@@ -1,3 +1,21 @@
1
+ ## [3.4.8](https://github.com/HaloSPV3/HCE.Shared/compare/v3.4.7...v3.4.8) (2026-03-27)
2
+
3
+ ### Bug Fixes
4
+
5
+ * export .d.ts files, again ([37b11cb](https://github.com/HaloSPV3/HCE.Shared/commit/37b11cb3cf25a50dc4aae487c9a2a9f2c8f22b78))
6
+
7
+ ## [3.4.8-develop.1](https://github.com/HaloSPV3/HCE.Shared/compare/v3.4.7...v3.4.8-develop.1) (2026-03-27)
8
+
9
+ ### Bug Fixes
10
+
11
+ * export .d.ts files, again ([37b11cb](https://github.com/HaloSPV3/HCE.Shared/commit/37b11cb3cf25a50dc4aae487c9a2a9f2c8f22b78))
12
+
13
+ # Changelog
14
+
15
+ All notable changes to this project will be documented in this file. See
16
+ [commit-and-tag-version](https://github.com/absolute-version/commit-and-tag-version)
17
+ for commit guidelines.
18
+
1
19
  ## [3.4.7](https://github.com/HaloSPV3/HCE.Shared/compare/v3.4.6...v3.4.7) (2026-03-26)
2
20
 
3
21
  ### Bug Fixes
@@ -7,11 +25,14 @@
7
25
  * **deps:** update `sanitize-filename` to 1.6.4 ([9a97a04](https://github.com/HaloSPV3/HCE.Shared/commit/9a97a047acaea0ad575177419cb76d2d78c5c027))
8
26
  * **deps:** update dotenvx to 1.57.2 ([8185184](https://github.com/HaloSPV3/HCE.Shared/commit/8185184cc12112042c757e676e0015d8e48bc37f))
9
27
 
10
- # Changelog
28
+ ## [3.4.7-develop.1](https://github.com/HaloSPV3/HCE.Shared/compare/v3.4.6...v3.4.7-develop.1) (2026-03-26)
11
29
 
12
- All notable changes to this project will be documented in this file. See
13
- [commit-and-tag-version](https://github.com/absolute-version/commit-and-tag-version)
14
- for commit guidelines.
30
+ ### Bug Fixes
31
+
32
+ * **deps, deps-dev:** update commitlint deps to 20.5.0 ([a0e6ab3](https://github.com/HaloSPV3/HCE.Shared/commit/a0e6ab3066ae96c52124452a414224255a887696))
33
+ * **deps, deps-dev:** update eslint deps ([24a382b](https://github.com/HaloSPV3/HCE.Shared/commit/24a382be93d4479ec2fb3b1d80b7f626da4264b6))
34
+ * **deps:** update `sanitize-filename` to 1.6.4 ([9a97a04](https://github.com/HaloSPV3/HCE.Shared/commit/9a97a047acaea0ad575177419cb76d2d78c5c027))
35
+ * **deps:** update dotenvx to 1.57.2 ([8185184](https://github.com/HaloSPV3/HCE.Shared/commit/8185184cc12112042c757e676e0015d8e48bc37f))
15
36
 
16
37
  ## [3.4.6-develop.2](https://github.com/HaloSPV3/HCE.Shared/compare/v3.4.6-develop.1...v3.4.6-develop.2) (2026-03-26)
17
38
 
@@ -1,2 +1,28 @@
1
- var e=class extends Map{delete(e){return typeof e==`string`&&(e=e.toLowerCase()),super.delete(e)}get(e){return typeof e==`string`&&(e=e.toLowerCase()),super.get(e)}has(e){return typeof e==`string`&&(e=e.toLowerCase()),super.has(e)}set(e,t){return typeof e==`string`&&(e=e.toLowerCase()),super.set(e,t)}};export{e as CaseInsensitiveMap};
1
+ //#region src/CaseInsensitiveMap.ts
2
+ /**
3
+ * https://stackoverflow.com/a/50022230/14894786
4
+ * licensed under CC BY-SA 4.0
5
+ * changes: add overrides, remove "as any", remove empty lines
6
+ */
7
+ var CaseInsensitiveMap = class extends Map {
8
+ delete(key) {
9
+ if (typeof key === "string") key = key.toLowerCase();
10
+ return super.delete(key);
11
+ }
12
+ get(key) {
13
+ if (typeof key === "string") key = key.toLowerCase();
14
+ return super.get(key);
15
+ }
16
+ has(key) {
17
+ if (typeof key === "string") key = key.toLowerCase();
18
+ return super.has(key);
19
+ }
20
+ set(key, value) {
21
+ if (typeof key === "string") key = key.toLowerCase();
22
+ return super.set(key, value);
23
+ }
24
+ };
25
+ //#endregion
26
+ export { CaseInsensitiveMap };
27
+
2
28
  //# sourceMappingURL=CaseInsensitiveMap.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"CaseInsensitiveMap.mjs","names":[],"sources":["../src/CaseInsensitiveMap.ts"],"sourcesContent":["/**\n * https://stackoverflow.com/a/50022230/14894786\n * licensed under CC BY-SA 4.0\n * changes: add overrides, remove \"as any\", remove empty lines\n */\nexport class CaseInsensitiveMap<T, U> extends Map<T, U> {\n override delete(key: T): boolean {\n if (typeof key === 'string') {\n key = key.toLowerCase() as T;\n }\n return super.delete(key);\n }\n\n override get(key: T): U | undefined {\n if (typeof key === 'string') {\n key = key.toLowerCase() as T;\n }\n return super.get(key);\n }\n\n override has(key: T): boolean {\n if (typeof key === 'string') {\n key = key.toLowerCase() as T;\n }\n return super.has(key);\n }\n\n override set(key: T, value: U): this {\n if (typeof key === 'string') {\n key = key.toLowerCase() as T;\n }\n return super.set(key, value);\n }\n}\n"],"mappings":"AAKA,IAAa,EAAb,cAA8C,GAAU,CACtD,OAAgB,EAAiB,CAI/B,OAHI,OAAO,GAAQ,WACjB,EAAM,EAAI,aAAa,EAElB,MAAM,OAAO,EAAI,CAG1B,IAAa,EAAuB,CAIlC,OAHI,OAAO,GAAQ,WACjB,EAAM,EAAI,aAAa,EAElB,MAAM,IAAI,EAAI,CAGvB,IAAa,EAAiB,CAI5B,OAHI,OAAO,GAAQ,WACjB,EAAM,EAAI,aAAa,EAElB,MAAM,IAAI,EAAI,CAGvB,IAAa,EAAQ,EAAgB,CAInC,OAHI,OAAO,GAAQ,WACjB,EAAM,EAAI,aAAa,EAElB,MAAM,IAAI,EAAK,EAAM"}
1
+ {"version":3,"file":"CaseInsensitiveMap.mjs","names":[],"sources":["../src/CaseInsensitiveMap.ts"],"sourcesContent":["/**\n * https://stackoverflow.com/a/50022230/14894786\n * licensed under CC BY-SA 4.0\n * changes: add overrides, remove \"as any\", remove empty lines\n */\nexport class CaseInsensitiveMap<T, U> extends Map<T, U> {\n override delete(key: T): boolean {\n if (typeof key === 'string') {\n key = key.toLowerCase() as T;\n }\n return super.delete(key);\n }\n\n override get(key: T): U | undefined {\n if (typeof key === 'string') {\n key = key.toLowerCase() as T;\n }\n return super.get(key);\n }\n\n override has(key: T): boolean {\n if (typeof key === 'string') {\n key = key.toLowerCase() as T;\n }\n return super.has(key);\n }\n\n override set(key: T, value: U): this {\n if (typeof key === 'string') {\n key = key.toLowerCase() as T;\n }\n return super.set(key, value);\n }\n}\n"],"mappings":";;;;;;AAKA,IAAa,qBAAb,cAA8C,IAAU;CACtD,OAAgB,KAAiB;AAC/B,MAAI,OAAO,QAAQ,SACjB,OAAM,IAAI,aAAa;AAEzB,SAAO,MAAM,OAAO,IAAI;;CAG1B,IAAa,KAAuB;AAClC,MAAI,OAAO,QAAQ,SACjB,OAAM,IAAI,aAAa;AAEzB,SAAO,MAAM,IAAI,IAAI;;CAGvB,IAAa,KAAiB;AAC5B,MAAI,OAAO,QAAQ,SACjB,OAAM,IAAI,aAAa;AAEzB,SAAO,MAAM,IAAI,IAAI;;CAGvB,IAAa,KAAQ,OAAgB;AACnC,MAAI,OAAO,QAAQ,SACjB,OAAM,IAAI,aAAa;AAEzB,SAAO,MAAM,IAAI,KAAK,MAAM"}
@@ -1,2 +1,14 @@
1
- const e={extends:[`@commitlint/config-conventional`],rules:{"body-max-line-length":[0],"footer-max-line-length":[0],"header-max-length":[0]}};export{e as default};
1
+ //#region src/commitlintConfig.ts
2
+ const disabled = 0;
3
+ const commitlintConfig = {
4
+ extends: ["@commitlint/config-conventional"],
5
+ rules: {
6
+ "body-max-line-length": [disabled],
7
+ "footer-max-line-length": [disabled],
8
+ "header-max-length": [disabled]
9
+ }
10
+ };
11
+ //#endregion
12
+ export { commitlintConfig as default };
13
+
2
14
  //# sourceMappingURL=commitlintConfig.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"commitlintConfig.mjs","names":[],"sources":["../src/commitlintConfig.ts"],"sourcesContent":["import type { RuleConfigSeverity, UserConfig } from '@commitlint/types';\n\n// explicit type annotations for isolatedDeclarations. Allows for faster processing.\n\nconst disabled = 0 as RuleConfigSeverity.Disabled;\nconst commitlintConfig: UserConfig & {\n extends: UserConfig['extends'] | ['@commitlint/config-conventional'];\n rules: {\n 'body-max-line-length': [typeof disabled];\n 'footer-max-line-length': [typeof disabled];\n 'header-max-length': [typeof disabled];\n };\n} = {\n extends: ['@commitlint/config-conventional'],\n rules: {\n 'body-max-line-length': [disabled],\n 'footer-max-line-length': [disabled],\n 'header-max-length': [disabled],\n },\n};\n\n// only `default` export is loaded via `extends` config key!\nexport default commitlintConfig;\n"],"mappings":"AAIA,MACM,EAOF,CACF,QAAS,CAAC,kCAAkC,CAC5C,MAAO,CACL,uBAAwB,CAAC,EAAS,CAClC,yBAA0B,CAAC,EAAS,CACpC,oBAAqB,CAAC,EAAS,CAChC,CACF"}
1
+ {"version":3,"file":"commitlintConfig.mjs","names":[],"sources":["../src/commitlintConfig.ts"],"sourcesContent":["import type { RuleConfigSeverity, UserConfig } from '@commitlint/types';\n\n// explicit type annotations for isolatedDeclarations. Allows for faster processing.\n\nconst disabled = 0 as RuleConfigSeverity.Disabled;\nconst commitlintConfig: UserConfig & {\n extends: UserConfig['extends'] | ['@commitlint/config-conventional'];\n rules: {\n 'body-max-line-length': [typeof disabled];\n 'footer-max-line-length': [typeof disabled];\n 'header-max-length': [typeof disabled];\n };\n} = {\n extends: ['@commitlint/config-conventional'],\n rules: {\n 'body-max-line-length': [disabled],\n 'footer-max-line-length': [disabled],\n 'header-max-length': [disabled],\n },\n};\n\n// only `default` export is loaded via `extends` config key!\nexport default commitlintConfig;\n"],"mappings":";AAIA,MAAM,WAAW;AACjB,MAAM,mBAOF;CACF,SAAS,CAAC,kCAAkC;CAC5C,OAAO;EACL,wBAAwB,CAAC,SAAS;EAClC,0BAA0B,CAAC,SAAS;EACpC,qBAAqB,CAAC,SAAS;EAChC;CACF"}
package/mjs/debug.mjs CHANGED
@@ -1,2 +1,9 @@
1
- import e from"debug";import*as t from"node:process";const n=e(`@halospv3/hce.shared-config`);(t.argv.some(e=>e.includes(`--debug`))||e.enabled(`@halospv3/hce.shared-config`))&&e.enable(n.namespace);export{n as default};
1
+ import createDebugger from "debug";
2
+ import * as process from "node:process";
3
+ //#region src/debug.ts
4
+ const _debug = createDebugger("@halospv3/hce.shared-config");
5
+ if (process.argv.some((v) => v.includes("--debug")) || createDebugger.enabled("@halospv3/hce.shared-config")) createDebugger.enable(_debug.namespace);
6
+ //#endregion
7
+ export { _debug as default };
8
+
2
9
  //# sourceMappingURL=debug.mjs.map
package/mjs/debug.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"debug.mjs","names":[],"sources":["../src/debug.ts"],"sourcesContent":["// note: @types/debug is incorrect. There is no .log function!\nimport createDebugger, { type Debugger } from 'debug';\nimport * as process from 'node:process';\n\nconst _debug = createDebugger('@halospv3/hce.shared-config') as Debugger & { log: never };\n\nif (process.argv.some(v => v.includes('--debug')) || createDebugger.enabled('@halospv3/hce.shared-config')) {\n createDebugger.enable(_debug.namespace);\n}\n\nexport default _debug;\n"],"mappings":"oDAIA,MAAM,EAAS,EAAe,8BAA8B,EAExD,EAAQ,KAAK,KAAK,GAAK,EAAE,SAAS,UAAU,CAAC,EAAI,EAAe,QAAQ,8BAA8B,GACxG,EAAe,OAAO,EAAO,UAAU"}
1
+ {"version":3,"file":"debug.mjs","names":[],"sources":["../src/debug.ts"],"sourcesContent":["// note: @types/debug is incorrect. There is no .log function!\nimport createDebugger, { type Debugger } from 'debug';\nimport * as process from 'node:process';\n\nconst _debug = createDebugger('@halospv3/hce.shared-config') as Debugger & { log: never };\n\nif (process.argv.some(v => v.includes('--debug')) || createDebugger.enabled('@halospv3/hce.shared-config')) {\n createDebugger.enable(_debug.namespace);\n}\n\nexport default _debug;\n"],"mappings":";;;AAIA,MAAM,SAAS,eAAe,8BAA8B;AAE5D,IAAI,QAAQ,KAAK,MAAK,MAAK,EAAE,SAAS,UAAU,CAAC,IAAI,eAAe,QAAQ,8BAA8B,CACxG,gBAAe,OAAO,OAAO,UAAU"}
@@ -1,2 +1,40 @@
1
- import{getEnvVarValue as e}from"../utils/env.mjs";import{NRIOptsBase as t,NugetRegistryInfo as n}from"./NugetRegistryInfo.mjs";const r=Object.freeze([`GH_TOKEN`,`GITHUB_TOKEN`]);var i=class extends n{static NUGET_PKG_GITHUB_COM=`https://nuget.pkg.github.com`;constructor(e){super(o.from(e))}static getNugetGitHubUrl(){let t=e(`GITHUB_REPOSITORY_OWNER`);return t===void 0?void 0:`https://nuget.pkg.github.com/${t}/index.json`}};const a=i,o=t.merge({source:t.get(`source`).default(()=>a.getNugetGitHubUrl()??``),tokenEnvVars:t.get(`tokenEnvVars`).default(()=>r)});export{r as DefaultGithubTokenEnvVars,o as GHNRIOpts,i as GithubNugetRegistryInfo};
1
+ import { getEnvVarValue } from "../utils/env.mjs";
2
+ import { NRIOptsBase, NugetRegistryInfo } from "./NugetRegistryInfo.mjs";
3
+ //#region src/dotnet/GithubNugetRegistryInfo.ts
4
+ const NUGET_PKG_GITHUB_COM = "https://nuget.pkg.github.com";
5
+ const DefaultGithubTokenEnvVars = Object.freeze(["GH_TOKEN", "GITHUB_TOKEN"]);
6
+ var GithubNugetRegistryInfo = class extends NugetRegistryInfo {
7
+ static NUGET_PKG_GITHUB_COM = "https://nuget.pkg.github.com";
8
+ /**
9
+ * Creates an instance of GithubNugetRegistryInfo.
10
+ * @param opts The input type of {@link GHNRIOpts.from}
11
+ */
12
+ constructor(opts) {
13
+ super(GHNRIOpts.from(opts));
14
+ }
15
+ /**
16
+ * Returns `https://nuget.pkg.github.com/${GITHUB_REPOSITORY_OWNER}/index.json`
17
+ * or (if GITHUB_REPOSITORY_OWNER is not defined in {@link process.env} nor
18
+ * {@link process.cwd() $CWD}/.env) `undefined`.
19
+ * @returns If GITHUB_REPOSITORY_OWNER is defined, returns the GitHub Package Repository URL endpoint for NuGet pushes (--source).\
20
+ * Otherwise, returns `undefined`
21
+ */
22
+ static getNugetGitHubUrl() {
23
+ const owner = getEnvVarValue("GITHUB_REPOSITORY_OWNER");
24
+ return owner === void 0 ? void 0 : `${NUGET_PKG_GITHUB_COM}/${owner}/index.json`;
25
+ }
26
+ };
27
+ const GHNRI = GithubNugetRegistryInfo;
28
+ /**
29
+ * The default value of {@link GHNRIOpts.t.source `source`} is dependent on
30
+ * {@link GHNRI.getNugetGitHubUrl} and will default to an empty string if the
31
+ * environment variable `GITHUB_REPOSITORY_OWNER` is undefined!
32
+ */
33
+ const GHNRIOpts = NRIOptsBase.merge({
34
+ source: NRIOptsBase.get("source").default(() => GHNRI.getNugetGitHubUrl() ?? ""),
35
+ tokenEnvVars: NRIOptsBase.get("tokenEnvVars").default(() => DefaultGithubTokenEnvVars)
36
+ });
37
+ //#endregion
38
+ export { DefaultGithubTokenEnvVars, GHNRIOpts, GithubNugetRegistryInfo };
39
+
2
40
  //# sourceMappingURL=GithubNugetRegistryInfo.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"GithubNugetRegistryInfo.mjs","names":[],"sources":["../../src/dotnet/GithubNugetRegistryInfo.ts"],"sourcesContent":["import type { Type } from 'arktype';\nimport { getEnvVarValue } from '../utils/env.ts';\nimport type { MSBuildProject, MSBuildEvaluationOutput } from './MSBuildProject.ts';\nimport type { NugetProjectProperties } from './NugetProjectProperties.ts';\nimport {\n NugetRegistryInfo,\n NRIOptsBase,\n} from './NugetRegistryInfo.ts';\nimport type { Default } from 'arktype/internal/attributes.ts';\n\nconst NUGET_PKG_GITHUB_COM = 'https://nuget.pkg.github.com';\nexport const DefaultGithubTokenEnvVars: readonly ['GH_TOKEN', 'GITHUB_TOKEN'] = Object.freeze([\n 'GH_TOKEN',\n 'GITHUB_TOKEN',\n]);\n\nexport class GithubNugetRegistryInfo extends NugetRegistryInfo {\n static readonly NUGET_PKG_GITHUB_COM = 'https://nuget.pkg.github.com';\n\n // GithubNugetRegistryInfo.CtorArgs(...) behaves differently than NugetRegistryInfo.CtorArgs(...)\n /**\n * Creates an instance of GithubNugetRegistryInfo.\n * @param opts The input type of {@link GHNRIOpts.from}\n */\n constructor(opts: typeof GHNRIOpts.inferIn) {\n super(GHNRIOpts.from(opts));\n }\n\n /**\n * Returns `https://nuget.pkg.github.com/${GITHUB_REPOSITORY_OWNER}/index.json`\n * or (if GITHUB_REPOSITORY_OWNER is not defined in {@link process.env} nor\n * {@link process.cwd() $CWD}/.env) `undefined`.\n * @returns If GITHUB_REPOSITORY_OWNER is defined, returns the GitHub Package Repository URL endpoint for NuGet pushes (--source).\\\n * Otherwise, returns `undefined`\n */\n static getNugetGitHubUrl(): string | undefined {\n const owner = getEnvVarValue('GITHUB_REPOSITORY_OWNER');\n return owner === undefined\n ? undefined\n : `${NUGET_PKG_GITHUB_COM}/${owner}/index.json`;\n }\n}\nconst GHNRI = GithubNugetRegistryInfo;\n\n/**\n * The default value of {@link GHNRIOpts.t.source `source`} is dependent on\n * {@link GHNRI.getNugetGitHubUrl} and will default to an empty string if the\n * environment variable `GITHUB_REPOSITORY_OWNER` is undefined!\n */\nexport const GHNRIOpts: Type<{\n project: MSBuildProject | {\n readonly Items: Readonly<Required<MSBuildEvaluationOutput>['Items']>;\n readonly Properties: Readonly<NugetProjectProperties>;\n readonly Targets: readonly string[];\n readonly TargetResults: Required<MSBuildEvaluationOutput>['TargetResults'][];\n };\n source: Default<string, string>;\n tokenEnvVars: Default<readonly string[], readonly ['GH_TOKEN', 'GITHUB_TOKEN']>;\n}> = NRIOptsBase.merge({\n /** @see {@link GHNRI.getNugetGitHubUrl } */\n source: NRIOptsBase.get('source')\n .default(() => GHNRI.getNugetGitHubUrl() ?? ''),\n tokenEnvVars: NRIOptsBase.get('tokenEnvVars')\n .default(\n /* must be a function. A fixed-length array is NOT a primitive type! */\n (): typeof DefaultGithubTokenEnvVars => DefaultGithubTokenEnvVars,\n ),\n});\n"],"mappings":"+HAUA,MACa,EAAmE,OAAO,OAAO,CAC5F,WACA,eACD,CAAC,CAEF,IAAa,EAAb,cAA6C,CAAkB,CAC7D,OAAgB,qBAAuB,+BAOvC,YAAY,EAAgC,CAC1C,MAAM,EAAU,KAAK,EAAK,CAAC,CAU7B,OAAO,mBAAwC,CAC7C,IAAM,EAAQ,EAAe,0BAA0B,CACvD,OAAO,IAAU,IAAA,GACb,IAAA,GACA,gCAA2B,EAAM,eAGzC,MAAM,EAAQ,EAOD,EASR,EAAY,MAAM,CAErB,OAAQ,EAAY,IAAI,SAAS,CAC9B,YAAc,EAAM,mBAAmB,EAAI,GAAG,CACjD,aAAc,EAAY,IAAI,eAAe,CAC1C,YAEyC,EACzC,CACJ,CAAC"}
1
+ {"version":3,"file":"GithubNugetRegistryInfo.mjs","names":[],"sources":["../../src/dotnet/GithubNugetRegistryInfo.ts"],"sourcesContent":["import type { Type } from 'arktype';\nimport { getEnvVarValue } from '../utils/env.ts';\nimport type { MSBuildProject, MSBuildEvaluationOutput } from './MSBuildProject.ts';\nimport type { NugetProjectProperties } from './NugetProjectProperties.ts';\nimport {\n NugetRegistryInfo,\n NRIOptsBase,\n} from './NugetRegistryInfo.ts';\nimport type { Default } from 'arktype/internal/attributes.ts';\n\nconst NUGET_PKG_GITHUB_COM = 'https://nuget.pkg.github.com';\nexport const DefaultGithubTokenEnvVars: readonly ['GH_TOKEN', 'GITHUB_TOKEN'] = Object.freeze([\n 'GH_TOKEN',\n 'GITHUB_TOKEN',\n]);\n\nexport class GithubNugetRegistryInfo extends NugetRegistryInfo {\n static readonly NUGET_PKG_GITHUB_COM = 'https://nuget.pkg.github.com';\n\n // GithubNugetRegistryInfo.CtorArgs(...) behaves differently than NugetRegistryInfo.CtorArgs(...)\n /**\n * Creates an instance of GithubNugetRegistryInfo.\n * @param opts The input type of {@link GHNRIOpts.from}\n */\n constructor(opts: typeof GHNRIOpts.inferIn) {\n super(GHNRIOpts.from(opts));\n }\n\n /**\n * Returns `https://nuget.pkg.github.com/${GITHUB_REPOSITORY_OWNER}/index.json`\n * or (if GITHUB_REPOSITORY_OWNER is not defined in {@link process.env} nor\n * {@link process.cwd() $CWD}/.env) `undefined`.\n * @returns If GITHUB_REPOSITORY_OWNER is defined, returns the GitHub Package Repository URL endpoint for NuGet pushes (--source).\\\n * Otherwise, returns `undefined`\n */\n static getNugetGitHubUrl(): string | undefined {\n const owner = getEnvVarValue('GITHUB_REPOSITORY_OWNER');\n return owner === undefined\n ? undefined\n : `${NUGET_PKG_GITHUB_COM}/${owner}/index.json`;\n }\n}\nconst GHNRI = GithubNugetRegistryInfo;\n\n/**\n * The default value of {@link GHNRIOpts.t.source `source`} is dependent on\n * {@link GHNRI.getNugetGitHubUrl} and will default to an empty string if the\n * environment variable `GITHUB_REPOSITORY_OWNER` is undefined!\n */\nexport const GHNRIOpts: Type<{\n project: MSBuildProject | {\n readonly Items: Readonly<Required<MSBuildEvaluationOutput>['Items']>;\n readonly Properties: Readonly<NugetProjectProperties>;\n readonly Targets: readonly string[];\n readonly TargetResults: Required<MSBuildEvaluationOutput>['TargetResults'][];\n };\n source: Default<string, string>;\n tokenEnvVars: Default<readonly string[], readonly ['GH_TOKEN', 'GITHUB_TOKEN']>;\n}> = NRIOptsBase.merge({\n /** @see {@link GHNRI.getNugetGitHubUrl } */\n source: NRIOptsBase.get('source')\n .default(() => GHNRI.getNugetGitHubUrl() ?? ''),\n tokenEnvVars: NRIOptsBase.get('tokenEnvVars')\n .default(\n /* must be a function. A fixed-length array is NOT a primitive type! */\n (): typeof DefaultGithubTokenEnvVars => DefaultGithubTokenEnvVars,\n ),\n});\n"],"mappings":";;;AAUA,MAAM,uBAAuB;AAC7B,MAAa,4BAAmE,OAAO,OAAO,CAC5F,YACA,eACD,CAAC;AAEF,IAAa,0BAAb,cAA6C,kBAAkB;CAC7D,OAAgB,uBAAuB;;;;;CAOvC,YAAY,MAAgC;AAC1C,QAAM,UAAU,KAAK,KAAK,CAAC;;;;;;;;;CAU7B,OAAO,oBAAwC;EAC7C,MAAM,QAAQ,eAAe,0BAA0B;AACvD,SAAO,UAAU,KAAA,IACb,KAAA,IACA,GAAG,qBAAqB,GAAG,MAAM;;;AAGzC,MAAM,QAAQ;;;;;;AAOd,MAAa,YASR,YAAY,MAAM;CAErB,QAAQ,YAAY,IAAI,SAAS,CAC9B,cAAc,MAAM,mBAAmB,IAAI,GAAG;CACjD,cAAc,YAAY,IAAI,eAAe,CAC1C,cAEyC,0BACzC;CACJ,CAAC"}
@@ -1,2 +1,82 @@
1
- import{isError as e}from"../utils/isError.mjs";import{getEnvVarValue as t}from"../utils/env.mjs";import{NRIOpts as n,NRIOptsBase as r,NugetRegistryInfo as i}from"./NugetRegistryInfo.mjs";var a=class extends i{static get CI_API_V4_URL(){return t(`CI_API_V4_URL`)??`https://gitlab.com/api/v4`}static get projectId(){return t(`CI_PROJECT_ID`)}static get ownerId(){return t(`CI_PROJECT_NAMESPACE_ID`)}static DefaultGitlabTokenEnvVars=Object.freeze([`GL_TOKEN`,`GITLAB_TOKEN`,`CI_JOB_TOKEN`]);constructor(t){let n=s.from(t);if(e(n.source))throw n.source;super(n)}static get projectUrl(){return this.projectId?`${this.CI_API_V4_URL}/projects/${this.projectId}/packages/nuget/index.json`:Error(`The project-type URL was specified, but one or more of the required environment variables (CI_API_V4_URL, CI_PROJECT_ID) were undefined.`)}static get groupUrl(){return this.ownerId?`${this.CI_API_V4_URL}/groups/${this.ownerId}/-/packages/nuget/index.json`:Error(`env.CI_PROJECT_NAMESPACE_ID must be defined to use its GitLab API endpoint!`)}};const o=a,s=n.merge({tokenEnvVars:r.get(`tokenEnvVars`).default(()=>o.DefaultGitlabTokenEnvVars),source:r.get(`source`).or(`"group" | "project" | Error`).pipe(e=>{switch(e){case`group`:return o.groupUrl;case`project`:return o.projectUrl;default:return e}}).default(()=>o.projectUrl)});export{s as GLNRIOpts,a as GitlabNugetRegistryInfo};
1
+ import { isError } from "../utils/isError.mjs";
2
+ import { getEnvVarValue } from "../utils/env.mjs";
3
+ import { NRIOpts, NRIOptsBase, NugetRegistryInfo } from "./NugetRegistryInfo.mjs";
4
+ //#region src/dotnet/GitlabNugetRegistryInfo.ts
5
+ var GitlabNugetRegistryInfo = class extends NugetRegistryInfo {
6
+ /**
7
+ * The GitLab API v4 root URL.
8
+ * @returns The value of the environment variable `CI_API_V4_URL`.
9
+ * If that's `undefined`, 'https://gitlab.com/api/v4' is returned, instead.
10
+ */
11
+ static get CI_API_V4_URL() {
12
+ return getEnvVarValue("CI_API_V4_URL") ?? "https://gitlab.com/api/v4";
13
+ }
14
+ /**
15
+ * CI_PROJECT_ID - If you want to publish to your GitLab server, this needs to be set to the Id of the project you want to publish to. When running in GitLab CI this is already set to the project the pipeline runs in by GitLab.
16
+ * This method checks the contents of your `.env` file, if present.
17
+ * @returns The value of the environment variable `CI_PROJECT_ID` or `undefined`.
18
+ * @todo add URI encoded project pathname as alternative e.g. 'halospv3%2FHCE.Shared' in 'https://gitlab.com/api/v4/projects/halospv3%2FHCE.Shared'
19
+ */
20
+ static get projectId() {
21
+ return getEnvVarValue("CI_PROJECT_ID");
22
+ }
23
+ /**
24
+ * CI_PROJECT_NAMESPACE_ID
25
+ * This method checks the contents of your `.env` file, if present.
26
+ * @returns The value of the environment variable 'CI_PROJECT_NAMESPACE_ID' or `undefined`.
27
+ */
28
+ static get ownerId() {
29
+ return getEnvVarValue("CI_PROJECT_NAMESPACE_ID");
30
+ }
31
+ static DefaultGitlabTokenEnvVars = Object.freeze([
32
+ "GL_TOKEN",
33
+ "GITLAB_TOKEN",
34
+ "CI_JOB_TOKEN"
35
+ ]);
36
+ /**
37
+ * Creates an instance of GitlabNugetRegistryInfo.
38
+ * @param opts The input type of {@link GLNRIOpts.from}
39
+ */
40
+ constructor(opts) {
41
+ const optsOut = GLNRIOpts.from(opts);
42
+ if (isError(optsOut.source)) throw optsOut.source;
43
+ super(optsOut);
44
+ }
45
+ /**
46
+ * Get the GitLab Nuget API for your project url as seen in https://docs.gitlab.com/ee/user/packages/nuget_repository/index.html#publish-a-nuget-package-by-using-cicd
47
+ * ${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/nuget/index.json
48
+ * @returns If {@link this.projectId} is a string, a string formatted like
49
+ * `${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/nuget/index.json`.
50
+ * Else, {@link Error}.
51
+ */
52
+ static get projectUrl() {
53
+ return this.projectId ? `${this.CI_API_V4_URL}/projects/${this.projectId}/packages/nuget/index.json` : /* @__PURE__ */ new Error("The project-type URL was specified, but one or more of the required environment variables (CI_API_V4_URL, CI_PROJECT_ID) were undefined.");
54
+ }
55
+ /**
56
+ * ${CI_API_V4_URL}/groups/${CI_PROJECT_NAMESPACE_ID}/-/packages/nuget/index.json
57
+ * @returns If {@link ownerId} is a string, then a string formatted like
58
+ * `${CI_API_V4_URL}/groups/${CI_PROJECT_NAMESPACE_ID}/-/packages/nuget/index.json`.
59
+ * Else, {@link Error}.
60
+ */
61
+ static get groupUrl() {
62
+ return this.ownerId ? `${this.CI_API_V4_URL}/groups/${this.ownerId}/-/packages/nuget/index.json` : /* @__PURE__ */ new Error("env.CI_PROJECT_NAMESPACE_ID must be defined to use its GitLab API endpoint!");
63
+ }
64
+ };
65
+ const GLNRI = GitlabNugetRegistryInfo;
66
+ /**
67
+ * The Arktype definition for {@link GitlabNugetRegistryInfo}'s constructor parameter. Construct an object of this type by calling {@link GLNRIOpts.from}
68
+ */
69
+ const GLNRIOpts = NRIOpts.merge({
70
+ tokenEnvVars: NRIOptsBase.get("tokenEnvVars").default(() => GLNRI.DefaultGitlabTokenEnvVars),
71
+ source: NRIOptsBase.get("source").or("\"group\" | \"project\" | Error").pipe((source) => {
72
+ switch (source) {
73
+ case "group": return GLNRI.groupUrl;
74
+ case "project": return GLNRI.projectUrl;
75
+ default: return source;
76
+ }
77
+ }).default(() => GLNRI.projectUrl)
78
+ });
79
+ //#endregion
80
+ export { GLNRIOpts, GitlabNugetRegistryInfo };
81
+
2
82
  //# sourceMappingURL=GitlabNugetRegistryInfo.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"GitlabNugetRegistryInfo.mjs","names":[],"sources":["../../src/dotnet/GitlabNugetRegistryInfo.ts"],"sourcesContent":["import { getEnvVarValue } from '../utils/env.ts';\nimport { isError } from '../utils/isError.ts';\nimport {\n NugetRegistryInfo,\n NRIOpts,\n NRIOptsBase,\n} from './NugetRegistryInfo.ts';\nimport type { Out, Type } from 'arktype';\nimport type { Default } from 'arktype/internal/attributes.ts';\nimport type { MSBuildProject, MSBuildEvaluationOutput } from './MSBuildProject.ts';\nimport type { NugetProjectProperties } from './NugetProjectProperties.ts';\n\n// https://docs.gitlab.com/ee/user/packages/nuget_repository/\nexport class GitlabNugetRegistryInfo extends NugetRegistryInfo {\n /**\n * The GitLab API v4 root URL.\n * @returns The value of the environment variable `CI_API_V4_URL`.\n * If that's `undefined`, 'https://gitlab.com/api/v4' is returned, instead.\n */\n static get CI_API_V4_URL(): string {\n return getEnvVarValue('CI_API_V4_URL') ?? 'https://gitlab.com/api/v4';\n }\n\n /**\n * CI_PROJECT_ID - If you want to publish to your GitLab server, this needs to be set to the Id of the project you want to publish to. When running in GitLab CI this is already set to the project the pipeline runs in by GitLab.\n * This method checks the contents of your `.env` file, if present.\n * @returns The value of the environment variable `CI_PROJECT_ID` or `undefined`.\n * @todo add URI encoded project pathname as alternative e.g. 'halospv3%2FHCE.Shared' in 'https://gitlab.com/api/v4/projects/halospv3%2FHCE.Shared'\n */\n static get projectId(): string | undefined {\n return getEnvVarValue('CI_PROJECT_ID');\n }\n\n /**\n * CI_PROJECT_NAMESPACE_ID\n * This method checks the contents of your `.env` file, if present.\n * @returns The value of the environment variable 'CI_PROJECT_NAMESPACE_ID' or `undefined`.\n */\n static get ownerId(): string | undefined {\n return getEnvVarValue('CI_PROJECT_NAMESPACE_ID');\n }\n\n static readonly DefaultGitlabTokenEnvVars: readonly ['GL_TOKEN', 'GITLAB_TOKEN', 'CI_JOB_TOKEN'] = Object.freeze([\n 'GL_TOKEN',\n 'GITLAB_TOKEN',\n 'CI_JOB_TOKEN',\n ] as const);\n\n /**\n * Creates an instance of GitlabNugetRegistryInfo.\n * @param opts The input type of {@link GLNRIOpts.from}\n */\n constructor(opts: typeof GLNRIOpts.inferIn) {\n const optsOut = GLNRIOpts.from(opts);\n if (isError(optsOut.source))\n throw optsOut.source;\n super(optsOut as typeof optsOut & { source: string });\n }\n\n /**\n * Get the GitLab Nuget API for your project url as seen in https://docs.gitlab.com/ee/user/packages/nuget_repository/index.html#publish-a-nuget-package-by-using-cicd\n * ${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/nuget/index.json\n * @returns If {@link this.projectId} is a string, a string formatted like\n * `${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/nuget/index.json`.\n * Else, {@link Error}.\n */\n static get projectUrl(): string | Error {\n return this.projectId\n ? `${this.CI_API_V4_URL}/projects/${this.projectId}/packages/nuget/index.json`\n : new Error('The project-type URL was specified, but one or more of the required environment variables (CI_API_V4_URL, CI_PROJECT_ID) were undefined.');\n }\n\n /**\n * ${CI_API_V4_URL}/groups/${CI_PROJECT_NAMESPACE_ID}/-/packages/nuget/index.json\n * @returns If {@link ownerId} is a string, then a string formatted like\n * `${CI_API_V4_URL}/groups/${CI_PROJECT_NAMESPACE_ID}/-/packages/nuget/index.json`.\n * Else, {@link Error}.\n */\n static get groupUrl(): string | Error {\n return this.ownerId\n ? `${this.CI_API_V4_URL}/groups/${this.ownerId}/-/packages/nuget/index.json`\n : new Error('env.CI_PROJECT_NAMESPACE_ID must be defined to use its GitLab API endpoint!');\n }\n}\nconst GLNRI = GitlabNugetRegistryInfo;\n\n/**\n * The Arktype definition for {@link GitlabNugetRegistryInfo}'s constructor parameter. Construct an object of this type by calling {@link GLNRIOpts.from}\n */\nexport const GLNRIOpts: Type<{\n project: MSBuildProject | {\n readonly Items: Readonly<Required<MSBuildEvaluationOutput>['Items']>;\n readonly Properties: Readonly<NugetProjectProperties>;\n readonly Targets: readonly string[];\n readonly TargetResults: Required<MSBuildEvaluationOutput>['TargetResults'][];\n };\n tokenEnvVars: Default<readonly string[], readonly ['GL_TOKEN', 'GITLAB_TOKEN', 'CI_JOB_TOKEN']>;\n source: (In: Default<string | Error, string | Error>) => Out<string | Error>;\n}> = NRIOpts.merge({\n tokenEnvVars: NRIOptsBase.get('tokenEnvVars').default(\n () => GLNRI.DefaultGitlabTokenEnvVars,\n ),\n /**\n * The GitLab Nuget API URL to push packages to -OR- a keyword such as \"group\"\n * or \"project\" used to determine URL.\n * @default GLNRI.projectUrl\n * @see {@link GLNRI.projectUrl}, {@link GLNRI.groupUrl}\n */\n // todo: change '\"group\" | \"project\"' to '\"GITLAB:PROJECT\" | \"GITLAB:GROUP\"'\n source: NRIOptsBase.get('source')\n .or('\"group\" | \"project\" | Error')\n .pipe((source: string | Error): string | Error => {\n switch (source) {\n case 'group': {\n return GLNRI.groupUrl;\n }\n case 'project': {\n return GLNRI.projectUrl;\n }\n default: {\n return source;\n }\n }\n }).default(() => GLNRI.projectUrl),\n});\n"],"mappings":"2LAaA,IAAa,EAAb,cAA6C,CAAkB,CAM7D,WAAW,eAAwB,CACjC,OAAO,EAAe,gBAAgB,EAAI,4BAS5C,WAAW,WAAgC,CACzC,OAAO,EAAe,gBAAgB,CAQxC,WAAW,SAA8B,CACvC,OAAO,EAAe,0BAA0B,CAGlD,OAAgB,0BAAmF,OAAO,OAAO,CAC/G,WACA,eACA,eACD,CAAU,CAMX,YAAY,EAAgC,CAC1C,IAAM,EAAU,EAAU,KAAK,EAAK,CACpC,GAAI,EAAQ,EAAQ,OAAO,CACzB,MAAM,EAAQ,OAChB,MAAM,EAA+C,CAUvD,WAAW,YAA6B,CACtC,OAAO,KAAK,UACR,GAAG,KAAK,cAAc,YAAY,KAAK,UAAU,4BAC7C,MAAM,2IAA2I,CAS3J,WAAW,UAA2B,CACpC,OAAO,KAAK,QACR,GAAG,KAAK,cAAc,UAAU,KAAK,QAAQ,8BACzC,MAAM,8EAA8E,GAGhG,MAAM,EAAQ,EAKD,EASR,EAAQ,MAAM,CACjB,aAAc,EAAY,IAAI,eAAe,CAAC,YACtC,EAAM,0BACb,CAQD,OAAQ,EAAY,IAAI,SAAS,CAC9B,GAAG,8BAA8B,CACjC,KAAM,GAA2C,CAChD,OAAQ,EAAR,CACE,IAAK,QACH,OAAO,EAAM,SAEf,IAAK,UACH,OAAO,EAAM,WAEf,QACE,OAAO,IAGX,CAAC,YAAc,EAAM,WAAW,CACrC,CAAC"}
1
+ {"version":3,"file":"GitlabNugetRegistryInfo.mjs","names":[],"sources":["../../src/dotnet/GitlabNugetRegistryInfo.ts"],"sourcesContent":["import { getEnvVarValue } from '../utils/env.ts';\nimport { isError } from '../utils/isError.ts';\nimport {\n NugetRegistryInfo,\n NRIOpts,\n NRIOptsBase,\n} from './NugetRegistryInfo.ts';\nimport type { Out, Type } from 'arktype';\nimport type { Default } from 'arktype/internal/attributes.ts';\nimport type { MSBuildProject, MSBuildEvaluationOutput } from './MSBuildProject.ts';\nimport type { NugetProjectProperties } from './NugetProjectProperties.ts';\n\n// https://docs.gitlab.com/ee/user/packages/nuget_repository/\nexport class GitlabNugetRegistryInfo extends NugetRegistryInfo {\n /**\n * The GitLab API v4 root URL.\n * @returns The value of the environment variable `CI_API_V4_URL`.\n * If that's `undefined`, 'https://gitlab.com/api/v4' is returned, instead.\n */\n static get CI_API_V4_URL(): string {\n return getEnvVarValue('CI_API_V4_URL') ?? 'https://gitlab.com/api/v4';\n }\n\n /**\n * CI_PROJECT_ID - If you want to publish to your GitLab server, this needs to be set to the Id of the project you want to publish to. When running in GitLab CI this is already set to the project the pipeline runs in by GitLab.\n * This method checks the contents of your `.env` file, if present.\n * @returns The value of the environment variable `CI_PROJECT_ID` or `undefined`.\n * @todo add URI encoded project pathname as alternative e.g. 'halospv3%2FHCE.Shared' in 'https://gitlab.com/api/v4/projects/halospv3%2FHCE.Shared'\n */\n static get projectId(): string | undefined {\n return getEnvVarValue('CI_PROJECT_ID');\n }\n\n /**\n * CI_PROJECT_NAMESPACE_ID\n * This method checks the contents of your `.env` file, if present.\n * @returns The value of the environment variable 'CI_PROJECT_NAMESPACE_ID' or `undefined`.\n */\n static get ownerId(): string | undefined {\n return getEnvVarValue('CI_PROJECT_NAMESPACE_ID');\n }\n\n static readonly DefaultGitlabTokenEnvVars: readonly ['GL_TOKEN', 'GITLAB_TOKEN', 'CI_JOB_TOKEN'] = Object.freeze([\n 'GL_TOKEN',\n 'GITLAB_TOKEN',\n 'CI_JOB_TOKEN',\n ] as const);\n\n /**\n * Creates an instance of GitlabNugetRegistryInfo.\n * @param opts The input type of {@link GLNRIOpts.from}\n */\n constructor(opts: typeof GLNRIOpts.inferIn) {\n const optsOut = GLNRIOpts.from(opts);\n if (isError(optsOut.source))\n throw optsOut.source;\n super(optsOut as typeof optsOut & { source: string });\n }\n\n /**\n * Get the GitLab Nuget API for your project url as seen in https://docs.gitlab.com/ee/user/packages/nuget_repository/index.html#publish-a-nuget-package-by-using-cicd\n * ${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/nuget/index.json\n * @returns If {@link this.projectId} is a string, a string formatted like\n * `${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/nuget/index.json`.\n * Else, {@link Error}.\n */\n static get projectUrl(): string | Error {\n return this.projectId\n ? `${this.CI_API_V4_URL}/projects/${this.projectId}/packages/nuget/index.json`\n : new Error('The project-type URL was specified, but one or more of the required environment variables (CI_API_V4_URL, CI_PROJECT_ID) were undefined.');\n }\n\n /**\n * ${CI_API_V4_URL}/groups/${CI_PROJECT_NAMESPACE_ID}/-/packages/nuget/index.json\n * @returns If {@link ownerId} is a string, then a string formatted like\n * `${CI_API_V4_URL}/groups/${CI_PROJECT_NAMESPACE_ID}/-/packages/nuget/index.json`.\n * Else, {@link Error}.\n */\n static get groupUrl(): string | Error {\n return this.ownerId\n ? `${this.CI_API_V4_URL}/groups/${this.ownerId}/-/packages/nuget/index.json`\n : new Error('env.CI_PROJECT_NAMESPACE_ID must be defined to use its GitLab API endpoint!');\n }\n}\nconst GLNRI = GitlabNugetRegistryInfo;\n\n/**\n * The Arktype definition for {@link GitlabNugetRegistryInfo}'s constructor parameter. Construct an object of this type by calling {@link GLNRIOpts.from}\n */\nexport const GLNRIOpts: Type<{\n project: MSBuildProject | {\n readonly Items: Readonly<Required<MSBuildEvaluationOutput>['Items']>;\n readonly Properties: Readonly<NugetProjectProperties>;\n readonly Targets: readonly string[];\n readonly TargetResults: Required<MSBuildEvaluationOutput>['TargetResults'][];\n };\n tokenEnvVars: Default<readonly string[], readonly ['GL_TOKEN', 'GITLAB_TOKEN', 'CI_JOB_TOKEN']>;\n source: (In: Default<string | Error, string | Error>) => Out<string | Error>;\n}> = NRIOpts.merge({\n tokenEnvVars: NRIOptsBase.get('tokenEnvVars').default(\n () => GLNRI.DefaultGitlabTokenEnvVars,\n ),\n /**\n * The GitLab Nuget API URL to push packages to -OR- a keyword such as \"group\"\n * or \"project\" used to determine URL.\n * @default GLNRI.projectUrl\n * @see {@link GLNRI.projectUrl}, {@link GLNRI.groupUrl}\n */\n // todo: change '\"group\" | \"project\"' to '\"GITLAB:PROJECT\" | \"GITLAB:GROUP\"'\n source: NRIOptsBase.get('source')\n .or('\"group\" | \"project\" | Error')\n .pipe((source: string | Error): string | Error => {\n switch (source) {\n case 'group': {\n return GLNRI.groupUrl;\n }\n case 'project': {\n return GLNRI.projectUrl;\n }\n default: {\n return source;\n }\n }\n }).default(() => GLNRI.projectUrl),\n});\n"],"mappings":";;;;AAaA,IAAa,0BAAb,cAA6C,kBAAkB;;;;;;CAM7D,WAAW,gBAAwB;AACjC,SAAO,eAAe,gBAAgB,IAAI;;;;;;;;CAS5C,WAAW,YAAgC;AACzC,SAAO,eAAe,gBAAgB;;;;;;;CAQxC,WAAW,UAA8B;AACvC,SAAO,eAAe,0BAA0B;;CAGlD,OAAgB,4BAAmF,OAAO,OAAO;EAC/G;EACA;EACA;EACD,CAAU;;;;;CAMX,YAAY,MAAgC;EAC1C,MAAM,UAAU,UAAU,KAAK,KAAK;AACpC,MAAI,QAAQ,QAAQ,OAAO,CACzB,OAAM,QAAQ;AAChB,QAAM,QAA+C;;;;;;;;;CAUvD,WAAW,aAA6B;AACtC,SAAO,KAAK,YACR,GAAG,KAAK,cAAc,YAAY,KAAK,UAAU,8CACjD,IAAI,MAAM,2IAA2I;;;;;;;;CAS3J,WAAW,WAA2B;AACpC,SAAO,KAAK,UACR,GAAG,KAAK,cAAc,UAAU,KAAK,QAAQ,gDAC7C,IAAI,MAAM,8EAA8E;;;AAGhG,MAAM,QAAQ;;;;AAKd,MAAa,YASR,QAAQ,MAAM;CACjB,cAAc,YAAY,IAAI,eAAe,CAAC,cACtC,MAAM,0BACb;CAQD,QAAQ,YAAY,IAAI,SAAS,CAC9B,GAAG,kCAA8B,CACjC,MAAM,WAA2C;AAChD,UAAQ,QAAR;GACE,KAAK,QACH,QAAO,MAAM;GAEf,KAAK,UACH,QAAO,MAAM;GAEf,QACE,QAAO;;GAGX,CAAC,cAAc,MAAM,WAAW;CACrC,CAAC"}
@@ -1,2 +1,43 @@
1
- import{NugetRegistryInfo as e,getGithubOutput as t}from"./NugetRegistryInfo.mjs";import*as n from"node:console";import r from"es-main";async function i(){let r=process.argv.slice(2),i={packageId:void 0,source:void 0};for(let e=0;e<r.length;e+=2){let t=r[e],n=r[e+1];n!==void 0&&t?.startsWith(`--`)===!0&&(i[t.slice(2)]=n)}if(typeof i.packageId!=`string`)throw Error(`packageId must be a string`);if(typeof i.source!=`string`)throw Error(`source must be a string`);let a=i.packageId,o=i.source,s=new RegExp(/\d+\.\d+\.\d+([-+].+)?/),c=await t()??{},l=s.exec(c[`new-release-version`]??``);if(l===null||l.length===0)throw Error(`The variable new-release-version is not present in the GITHUB_OUTPUT env file or its value contains invalid characters.`);let u=l[0],d=await e.IsNextVersionAlreadyPublished(o,a,u);if(typeof d!=`boolean`)throw Error(`isPublished is not a boolean`);if(d)throw Error(`${a}@${u} already exists at ${o}.`);return n.log(`OK: ${a}@${u} does NOT yet exist at ${o}. Yay.`),0}r(import.meta)&&await i();export{};
1
+ import { NugetRegistryInfo, getGithubOutput } from "./NugetRegistryInfo.mjs";
2
+ import * as console from "node:console";
3
+ import esMain from "es-main";
4
+ //#region src/dotnet/IsNextVersionAlreadyPublished.cli.ts
5
+ /**
6
+ * @returns if successful
7
+ * @throws {Error} if...
8
+ * - {@link process.argv} does not include...
9
+ * - `--packageId [string]`
10
+ * - `--source [string]`
11
+ * - Value of `await getGithubOutput())['new-release-version']`...
12
+ * - is not a valid Version
13
+ * - already exists at `source`
14
+ */
15
+ async function main() {
16
+ const args = process.argv.slice(2);
17
+ const options = {
18
+ packageId: void 0,
19
+ source: void 0
20
+ };
21
+ for (let i = 0; i < args.length; i += 2) {
22
+ const argName = args[i];
23
+ const argValue = args[i + 1];
24
+ if (argValue !== void 0 && argName?.startsWith("--") === true) options[argName.slice(2)] = argValue;
25
+ }
26
+ if (typeof options.packageId !== "string") throw new Error("packageId must be a string");
27
+ if (typeof options.source !== "string") throw new Error("source must be a string");
28
+ const packageId = options.packageId, source = options.source, versionPattern = /* @__PURE__ */ new RegExp(/\d+\.\d+\.\d+([-+].+)?/);
29
+ const ghOutput = await getGithubOutput() ?? {};
30
+ const matches = versionPattern.exec(ghOutput["new-release-version"] ?? "");
31
+ if (matches === null || matches.length === 0) throw new Error("The variable new-release-version is not present in the GITHUB_OUTPUT env file or its value contains invalid characters.");
32
+ const nextVersion = matches[0];
33
+ const isPublished = await NugetRegistryInfo.IsNextVersionAlreadyPublished(source, packageId, nextVersion);
34
+ if (typeof isPublished !== "boolean") throw new Error("isPublished is not a boolean");
35
+ if (isPublished) throw new Error(`${packageId}@${nextVersion} already exists at ${source}.`);
36
+ console.log(`OK: ${packageId}@${nextVersion} does NOT yet exist at ${source}. Yay.`);
37
+ return 0;
38
+ }
39
+ if (esMain(import.meta)) await main();
40
+ //#endregion
41
+ export {};
42
+
2
43
  //# sourceMappingURL=IsNextVersionAlreadyPublished.cli.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"IsNextVersionAlreadyPublished.cli.mjs","names":[],"sources":["../../src/dotnet/IsNextVersionAlreadyPublished.cli.ts"],"sourcesContent":["import * as console from 'node:console';\nimport { NugetRegistryInfo, getGithubOutput } from './NugetRegistryInfo.ts';\nimport esMain from 'es-main';\n\n/**\n * @returns if successful\n * @throws {Error} if...\n * - {@link process.argv} does not include...\n * - `--packageId [string]`\n * - `--source [string]`\n * - Value of `await getGithubOutput())['new-release-version']`...\n * - is not a valid Version\n * - already exists at `source`\n */\nasync function main(): Promise<0> {\n const args = process.argv.slice(2);\n // Parse command-line arguments - https://stackoverflow.com/a/76298476/14894786\n const options: {\n packageId: string | undefined;\n source: string | undefined;\n } & Record<string, string | undefined> = { packageId: undefined, source: undefined };\n for (let i = 0; i < args.length; i += 2) {\n const argName = args[i];\n const argValue = args[i + 1];\n if (argValue !== undefined && argName?.startsWith('--') === true) {\n options[argName.slice(2)] = argValue;\n }\n }\n\n if (typeof options.packageId !== 'string')\n throw new Error('packageId must be a string');\n if (typeof options.source !== 'string')\n throw new Error('source must be a string');\n\n const packageId = options.packageId,\n source = options.source,\n versionPattern = new RegExp(/\\d+\\.\\d+\\.\\d+([-+].+)?/);\n const ghOutput = await getGithubOutput() ?? {};\n const matches = versionPattern.exec(ghOutput['new-release-version'] ?? '');\n if (matches === null || matches.length === 0)\n throw new Error(\n 'The variable new-release-version is not present in the GITHUB_OUTPUT env file or its value contains invalid characters.',\n );\n\n const nextVersion = matches[0];\n const isPublished = await NugetRegistryInfo.IsNextVersionAlreadyPublished(\n source,\n packageId,\n nextVersion,\n );\n\n if (typeof isPublished !== 'boolean')\n throw new Error('isPublished is not a boolean');\n if (isPublished)\n throw new Error(`${packageId}@${nextVersion} already exists at ${source}.`);\n console.log(`OK: ${packageId}@${nextVersion} does NOT yet exist at ${source}. Yay.`);\n\n return 0;\n}\n\nif (esMain(import.meta))\n await main();\n"],"mappings":"uIAcA,eAAe,GAAmB,CAChC,IAAM,EAAO,QAAQ,KAAK,MAAM,EAAE,CAE5B,EAGmC,CAAE,UAAW,IAAA,GAAW,OAAQ,IAAA,GAAW,CACpF,IAAK,IAAI,EAAI,EAAG,EAAI,EAAK,OAAQ,GAAK,EAAG,CACvC,IAAM,EAAU,EAAK,GACf,EAAW,EAAK,EAAI,GACtB,IAAa,IAAA,IAAa,GAAS,WAAW,KAAK,GAAK,KAC1D,EAAQ,EAAQ,MAAM,EAAE,EAAI,GAIhC,GAAI,OAAO,EAAQ,WAAc,SAC/B,MAAU,MAAM,6BAA6B,CAC/C,GAAI,OAAO,EAAQ,QAAW,SAC5B,MAAU,MAAM,0BAA0B,CAE5C,IAAM,EAAY,EAAQ,UACxB,EAAS,EAAQ,OACjB,EAAiB,IAAI,OAAO,yBAAyB,CACjD,EAAW,MAAM,GAAiB,EAAI,EAAE,CACxC,EAAU,EAAe,KAAK,EAAS,wBAA0B,GAAG,CAC1E,GAAI,IAAY,MAAQ,EAAQ,SAAW,EACzC,MAAU,MACR,0HACD,CAEH,IAAM,EAAc,EAAQ,GACtB,EAAc,MAAM,EAAkB,8BAC1C,EACA,EACA,EACD,CAED,GAAI,OAAO,GAAgB,UACzB,MAAU,MAAM,+BAA+B,CACjD,GAAI,EACF,MAAU,MAAM,GAAG,EAAU,GAAG,EAAY,qBAAqB,EAAO,GAAG,CAG7E,OAFA,EAAQ,IAAI,OAAO,EAAU,GAAG,EAAY,yBAAyB,EAAO,QAAQ,CAE7E,EAGL,EAAO,OAAO,KAAK,EACrB,MAAM,GAAM"}
1
+ {"version":3,"file":"IsNextVersionAlreadyPublished.cli.mjs","names":[],"sources":["../../src/dotnet/IsNextVersionAlreadyPublished.cli.ts"],"sourcesContent":["import * as console from 'node:console';\nimport { NugetRegistryInfo, getGithubOutput } from './NugetRegistryInfo.ts';\nimport esMain from 'es-main';\n\n/**\n * @returns if successful\n * @throws {Error} if...\n * - {@link process.argv} does not include...\n * - `--packageId [string]`\n * - `--source [string]`\n * - Value of `await getGithubOutput())['new-release-version']`...\n * - is not a valid Version\n * - already exists at `source`\n */\nasync function main(): Promise<0> {\n const args = process.argv.slice(2);\n // Parse command-line arguments - https://stackoverflow.com/a/76298476/14894786\n const options: {\n packageId: string | undefined;\n source: string | undefined;\n } & Record<string, string | undefined> = { packageId: undefined, source: undefined };\n for (let i = 0; i < args.length; i += 2) {\n const argName = args[i];\n const argValue = args[i + 1];\n if (argValue !== undefined && argName?.startsWith('--') === true) {\n options[argName.slice(2)] = argValue;\n }\n }\n\n if (typeof options.packageId !== 'string')\n throw new Error('packageId must be a string');\n if (typeof options.source !== 'string')\n throw new Error('source must be a string');\n\n const packageId = options.packageId,\n source = options.source,\n versionPattern = new RegExp(/\\d+\\.\\d+\\.\\d+([-+].+)?/);\n const ghOutput = await getGithubOutput() ?? {};\n const matches = versionPattern.exec(ghOutput['new-release-version'] ?? '');\n if (matches === null || matches.length === 0)\n throw new Error(\n 'The variable new-release-version is not present in the GITHUB_OUTPUT env file or its value contains invalid characters.',\n );\n\n const nextVersion = matches[0];\n const isPublished = await NugetRegistryInfo.IsNextVersionAlreadyPublished(\n source,\n packageId,\n nextVersion,\n );\n\n if (typeof isPublished !== 'boolean')\n throw new Error('isPublished is not a boolean');\n if (isPublished)\n throw new Error(`${packageId}@${nextVersion} already exists at ${source}.`);\n console.log(`OK: ${packageId}@${nextVersion} does NOT yet exist at ${source}. Yay.`);\n\n return 0;\n}\n\nif (esMain(import.meta))\n await main();\n"],"mappings":";;;;;;;;;;;;;;AAcA,eAAe,OAAmB;CAChC,MAAM,OAAO,QAAQ,KAAK,MAAM,EAAE;CAElC,MAAM,UAGmC;EAAE,WAAW,KAAA;EAAW,QAAQ,KAAA;EAAW;AACpF,MAAK,IAAI,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK,GAAG;EACvC,MAAM,UAAU,KAAK;EACrB,MAAM,WAAW,KAAK,IAAI;AAC1B,MAAI,aAAa,KAAA,KAAa,SAAS,WAAW,KAAK,KAAK,KAC1D,SAAQ,QAAQ,MAAM,EAAE,IAAI;;AAIhC,KAAI,OAAO,QAAQ,cAAc,SAC/B,OAAM,IAAI,MAAM,6BAA6B;AAC/C,KAAI,OAAO,QAAQ,WAAW,SAC5B,OAAM,IAAI,MAAM,0BAA0B;CAE5C,MAAM,YAAY,QAAQ,WACxB,SAAS,QAAQ,QACjB,iCAAiB,IAAI,OAAO,yBAAyB;CACvD,MAAM,WAAW,MAAM,iBAAiB,IAAI,EAAE;CAC9C,MAAM,UAAU,eAAe,KAAK,SAAS,0BAA0B,GAAG;AAC1E,KAAI,YAAY,QAAQ,QAAQ,WAAW,EACzC,OAAM,IAAI,MACR,0HACD;CAEH,MAAM,cAAc,QAAQ;CAC5B,MAAM,cAAc,MAAM,kBAAkB,8BAC1C,QACA,WACA,YACD;AAED,KAAI,OAAO,gBAAgB,UACzB,OAAM,IAAI,MAAM,+BAA+B;AACjD,KAAI,YACF,OAAM,IAAI,MAAM,GAAG,UAAU,GAAG,YAAY,qBAAqB,OAAO,GAAG;AAC7E,SAAQ,IAAI,OAAO,UAAU,GAAG,YAAY,yBAAyB,OAAO,QAAQ;AAEpF,QAAO;;AAGT,IAAI,OAAO,OAAO,KAAK,CACrB,OAAM,MAAM"}