auklet 0.1.2 → 0.1.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.
Files changed (50) hide show
  1. package/README.md +19 -2
  2. package/dist/build/tsdown/dependencies.js +2 -2
  3. package/dist/cli/build.js +26 -16
  4. package/dist/cli/buildArgs.d.ts +2 -1
  5. package/dist/cli/buildArgs.js +30 -8
  6. package/dist/cli/buildCss.d.ts +2 -0
  7. package/dist/cli/buildCss.js +28 -21
  8. package/dist/cli/dev.js +14 -4
  9. package/dist/cli/values.d.ts +17 -0
  10. package/dist/cli/values.js +14 -0
  11. package/dist/css/core/style/dependencies.d.ts +0 -1
  12. package/dist/css/core/style/dependencies.js +0 -3
  13. package/dist/css/core/style/entries.js +2 -2
  14. package/dist/css/core/style/files.d.ts +0 -1
  15. package/dist/css/core/style/files.js +0 -3
  16. package/dist/css/core/stylePackageContext.js +3 -3
  17. package/dist/css/vite/hmr.js +2 -2
  18. package/dist/css/vite/moduleGraph/packageSource/monorepo.d.ts +1 -1
  19. package/dist/css/vite/moduleGraph/packageSource/monorepo.js +2 -2
  20. package/dist/env.d.ts +22 -0
  21. package/dist/env.js +105 -0
  22. package/dist/logger.d.ts +0 -1
  23. package/dist/logger.js +0 -3
  24. package/dist/publish/api/npmrc.d.ts +4 -0
  25. package/dist/publish/api/npmrc.js +34 -0
  26. package/dist/publish/api/pnpmApi.d.ts +12 -10
  27. package/dist/publish/api/pnpmApi.js +13 -16
  28. package/dist/publish/api/pnpmPublishApi.d.ts +2 -2
  29. package/dist/publish/api/pnpmPublishApi.js +5 -3
  30. package/dist/publish/cli.d.ts +6 -2
  31. package/dist/publish/cli.js +93 -46
  32. package/dist/publish/inspect.js +20 -5
  33. package/dist/publish/inspectPack.js +6 -2
  34. package/dist/publish/inspectRegistry.d.ts +3 -2
  35. package/dist/publish/inspectRegistry.js +11 -4
  36. package/dist/publish/publishEnv.d.ts +13 -0
  37. package/dist/publish/publishEnv.js +21 -0
  38. package/dist/publish/publishRunner.d.ts +3 -2
  39. package/dist/publish/publishRunner.js +9 -7
  40. package/dist/publish/runner/packageBuilder.d.ts +2 -2
  41. package/dist/publish/runner/packageBuilder.js +7 -1
  42. package/dist/publish/runner/packagePublisher.d.ts +3 -2
  43. package/dist/publish/runner/packagePublisher.js +4 -2
  44. package/dist/publish/runner/publishPreflight.d.ts +4 -2
  45. package/dist/publish/runner/publishPreflight.js +21 -6
  46. package/dist/publish/runner/versionWriter.d.ts +1 -1
  47. package/dist/publish/targetResolver.d.ts +3 -3
  48. package/dist/publish/targetResolver.js +11 -5
  49. package/dist/publish/types.d.ts +6 -1
  50. package/package.json +1 -1
@@ -1,5 +1,6 @@
1
1
  import { isString } from 'aidly';
2
2
  import { runPnpmBuild } from '#auklet/publish/api/pnpmApi';
3
+ import { createPublishTargetEnv } from '#auklet/publish/publishEnv';
3
4
  export function validateBuildScript(targets) {
4
5
  for (const target of targets) {
5
6
  const buildScript = target.packageJson.scripts?.build;
@@ -8,9 +9,14 @@ export function validateBuildScript(targets) {
8
9
  }
9
10
  }
10
11
  }
11
- export async function runPackageBuilds(targets, logger) {
12
+ export async function runPackageBuilds(targets, logger, options, runtime) {
12
13
  for (const target of targets) {
13
14
  logger.step('build ', logger.package(target.packageName));
15
+ const { env } = createPublishTargetEnv(options, runtime, target);
16
+ if (env) {
17
+ await runPnpmBuild(target.packageRoot, { env });
18
+ continue;
19
+ }
14
20
  await runPnpmBuild(target.packageRoot);
15
21
  }
16
22
  }
@@ -1,10 +1,11 @@
1
1
  import type { AukletLogger } from '#auklet/logger';
2
- import type { PublishOptions, PublishPlan } from '#auklet/publish/types';
2
+ import type { PublishOptions, PublishPlan, PublishRuntime } from '#auklet/publish/types';
3
3
  export declare class PackagePublisher {
4
4
  private readonly options;
5
+ private readonly runtime;
5
6
  private readonly logger;
6
7
  private readonly pnpm;
7
- constructor(options: PublishOptions, logger: AukletLogger);
8
+ constructor(options: PublishOptions, runtime: PublishRuntime, logger: AukletLogger);
8
9
  run(plan: PublishPlan): Promise<void>;
9
10
  }
10
11
  export declare function logAuthenticationError(logger: AukletLogger, error: unknown): void;
@@ -3,17 +3,19 @@ import { NpmPublishAuthenticationError } from '#auklet/publish/api/pnpmApi';
3
3
  import { PublishTargetError } from '#auklet/publish/runner/publishTargetError';
4
4
  export class PackagePublisher {
5
5
  options;
6
+ runtime;
6
7
  logger;
7
8
  pnpm = new PnpmPublishApi();
8
- constructor(options, logger) {
9
+ constructor(options, runtime, logger) {
9
10
  this.options = options;
11
+ this.runtime = runtime;
10
12
  this.logger = logger;
11
13
  }
12
14
  async run(plan) {
13
15
  const publishedTargets = [];
14
16
  for (const target of plan.targets) {
15
17
  try {
16
- await this.pnpm.publish(target, this.options);
18
+ await this.pnpm.publish(target, this.options, this.runtime);
17
19
  publishedTargets.push(target);
18
20
  }
19
21
  catch (error) {
@@ -1,12 +1,14 @@
1
1
  import type { AukletLogger } from '#auklet/logger';
2
- import type { PublishOptions, PublishPlan } from '#auklet/publish/types';
2
+ import type { PublishOptions, PublishPlan, PublishRuntime } from '#auklet/publish/types';
3
3
  export declare class PublishPreflight {
4
4
  private readonly options;
5
+ private readonly runtime;
5
6
  private readonly logger;
6
7
  private readonly pnpm;
7
- constructor(options: PublishOptions, logger: AukletLogger);
8
+ constructor(options: PublishOptions, runtime: PublishRuntime, logger: AukletLogger);
8
9
  run(plan: PublishPlan): Promise<void>;
9
10
  verifyBeforeBuild(plan: PublishPlan): Promise<void>;
11
+ private verifyNpmrcAuthEnv;
10
12
  private verifyTokenConfig;
11
13
  private verifyAuthentication;
12
14
  private verifyPnpmPublishDryRun;
@@ -1,27 +1,39 @@
1
1
  import { PnpmPublishApi } from '#auklet/publish/api/pnpmPublishApi';
2
- import { hasPublishedPackageVersion, NpmPackageVersionExistsError, runPnpmWhoami, } from '#auklet/publish/api/pnpmApi';
3
- import { findNpmrcFiles, findNpmrcWithAuthToken, toNpmrcRegistryKey, } from '#auklet/publish/api/npmrc';
2
+ import { runPnpmWhoami, hasPublishedPackageVersion, NpmPackageVersionExistsError, } from '#auklet/publish/api/pnpmApi';
3
+ import { findNpmrcFiles, findNpmrcWithAuthToken, toNpmrcRegistryKey, validateNpmrcAuthEnv, } from '#auklet/publish/api/npmrc';
4
4
  import { getPublishRegistry } from '#auklet/publish/api/registry';
5
+ import { createPublishTargetEnv } from '#auklet/publish/publishEnv';
5
6
  import { logAuthenticationError } from '#auklet/publish/runner/packagePublisher';
6
7
  import { PublishTargetError } from '#auklet/publish/runner/publishTargetError';
7
8
  export class PublishPreflight {
8
9
  options;
10
+ runtime;
9
11
  logger;
10
12
  pnpm = new PnpmPublishApi();
11
- constructor(options, logger) {
13
+ constructor(options, runtime, logger) {
12
14
  this.options = options;
15
+ this.runtime = runtime;
13
16
  this.logger = logger;
14
17
  }
15
18
  async run(plan) {
16
19
  await this.verifyPnpmPublishDryRun(plan);
17
20
  }
18
21
  async verifyBeforeBuild(plan) {
22
+ this.verifyNpmrcAuthEnv(plan);
19
23
  this.verifyTokenConfig(plan);
20
24
  if (plan.dryRun)
21
25
  return;
22
26
  await this.verifyAuthentication(plan);
23
27
  await this.verifyPackageVersions(plan);
24
28
  }
29
+ verifyNpmrcAuthEnv(plan) {
30
+ for (const target of plan.targets) {
31
+ const { env } = createPublishTargetEnv(this.options, this.runtime, target);
32
+ validateNpmrcAuthEnv(target.packageRoot, plan.root, {
33
+ env,
34
+ });
35
+ }
36
+ }
25
37
  verifyTokenConfig(plan) {
26
38
  if (!this.options.token)
27
39
  return;
@@ -43,7 +55,7 @@ export class PublishPreflight {
43
55
  await runPnpmWhoami(target.packageRoot, {
44
56
  packageName: target.packageName,
45
57
  registry,
46
- token: this.options.token,
58
+ ...createPublishTargetEnv(this.options, this.runtime, target),
47
59
  });
48
60
  checked.add(key);
49
61
  }
@@ -55,7 +67,7 @@ export class PublishPreflight {
55
67
  };
56
68
  for (const target of plan.targets) {
57
69
  try {
58
- await this.pnpm.publish(target, options);
70
+ await this.pnpm.publish(target, options, this.runtime);
59
71
  }
60
72
  catch (error) {
61
73
  logAuthenticationError(this.logger, error);
@@ -66,7 +78,10 @@ export class PublishPreflight {
66
78
  async verifyPackageVersions(plan) {
67
79
  for (const target of plan.targets) {
68
80
  const registry = getPublishRegistry(target.packageJson.publishConfig);
69
- const exists = await hasPublishedPackageVersion(target.packageRoot, target.packageName, target.publishVersion, { registry, token: this.options.token });
81
+ const exists = await hasPublishedPackageVersion(target.packageRoot, target.packageName, target.publishVersion, {
82
+ registry,
83
+ ...createPublishTargetEnv(this.options, this.runtime, target),
84
+ });
70
85
  if (!exists)
71
86
  continue;
72
87
  this.logExistingVersion(target, registry);
@@ -1,5 +1,5 @@
1
+ import { type AukletLogger } from '#auklet/logger';
1
2
  import type { PublishOptions, PublishPlan } from '#auklet/publish/types';
2
- import type { AukletLogger } from '#auklet/logger';
3
3
  export declare class VersionWriter {
4
4
  private readonly options;
5
5
  private readonly logger;
@@ -1,7 +1,7 @@
1
1
  import { type AukletLogger } from '#auklet/logger';
2
- import type { OwnerOptions, PublishOptions, PublishPlan } from '#auklet/publish/types';
3
- type ResolvePublishTargetsOptions = Pick<PublishOptions, 'cwd' | 'filters' | 'version' | 'dryRun'>;
2
+ import type { OwnerOptions, PublishOptions, PublishPlan, PublishRuntime } from '#auklet/publish/types';
3
+ type ResolvePublishTargetsOptions = Pick<PublishOptions, 'cwd' | 'filters' | 'version' | 'dryRun' | 'token'>;
4
4
  type ResolveOwnerTargetsOptions = Pick<OwnerOptions, 'cwd' | 'filters' | 'packages'>;
5
- export declare function resolvePublishPlan(options: ResolvePublishTargetsOptions, logger?: AukletLogger): Promise<PublishPlan>;
5
+ export declare function resolvePublishPlan(options: ResolvePublishTargetsOptions, runtime: PublishRuntime, logger?: AukletLogger): Promise<PublishPlan>;
6
6
  export declare function resolveOwnerPackageNames(options: ResolveOwnerTargetsOptions): Promise<string[]>;
7
7
  export {};
@@ -1,13 +1,14 @@
1
1
  import path from 'node:path';
2
2
  import semver from 'semver';
3
- import { createScopedAukletLogger } from '#auklet/logger';
4
3
  import { findWorkspaceRoot } from '#auklet/workspace/root';
4
+ import { createPublishRootEnv } from '#auklet/publish/publishEnv';
5
+ import { createAukletLogger } from '#auklet/logger';
5
6
  import { getPublishConfig, readPackageJson, requirePackageName, requirePackageVersion, } from '#auklet/publish/api/packageJsonApi';
6
7
  import { readPnpmWorkspacePackages } from '#auklet/publish/api/pnpmApi';
7
8
  import { resolvePublishVersion, validateVersionConsistency, } from '#auklet/publish/version';
8
- export async function resolvePublishPlan(options, logger = createScopedAukletLogger('publish')) {
9
+ export async function resolvePublishPlan(options, runtime, logger = createAukletLogger({ scope: 'publish' })) {
9
10
  if (options.filters.length) {
10
- return resolveMonorepoPublishPlan(options, logger);
11
+ return resolveMonorepoPublishPlan(options, runtime, logger);
11
12
  }
12
13
  return resolveCurrentPackagePublishPlan(options);
13
14
  }
@@ -55,11 +56,16 @@ const resolveCurrentPackagePublishPlan = async (options) => {
55
56
  workspaceMode: 'single',
56
57
  };
57
58
  };
58
- const resolveMonorepoPublishPlan = async (options, logger) => {
59
+ const resolveMonorepoPublishPlan = async (options, runtime, logger) => {
59
60
  const root = requireWorkspaceRoot(options.cwd);
60
61
  const rootPackageJson = readPackageJson(root);
61
62
  const rootVersion = requirePackageVersion(root, rootPackageJson);
62
- const workspacePackages = await readPnpmWorkspacePackages(root);
63
+ const { env } = createPublishRootEnv({
64
+ token: options.token,
65
+ }, runtime);
66
+ const workspacePackages = await readPnpmWorkspacePackages(root, {
67
+ env,
68
+ });
63
69
  const selectedPackages = filterWorkspacePackages(workspacePackages, options.filters);
64
70
  const targets = selectedPackages
65
71
  .filter((item) => {
@@ -1,3 +1,5 @@
1
+ import type { AukletEnvContext } from '#auklet/env';
2
+ import type { DeferredCliValue } from '#auklet/cli/values';
1
3
  export type PackageJson = {
2
4
  name?: string;
3
5
  version?: string;
@@ -50,9 +52,12 @@ export type PublishOptions = {
50
52
  filters: Array<string>;
51
53
  git?: boolean;
52
54
  otp?: string;
53
- token?: string;
55
+ token?: DeferredCliValue;
54
56
  version?: string;
55
57
  };
58
+ export type PublishRuntime = {
59
+ envContext: AukletEnvContext;
60
+ };
56
61
  export type OwnerOptions = {
57
62
  cwd: string;
58
63
  users: Array<string>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "auklet",
3
- "version": "0.1.2",
3
+ "version": "0.1.4",
4
4
  "type": "module",
5
5
  "author": "chentao.arthur",
6
6
  "description": "Build utilities for TypeScript packages and module CSS output.",