@fairgarden/distribution 0.1.0-alpha.1 → 0.1.0-alpha.2

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 (63) hide show
  1. package/Readme.md +3 -3
  2. package/dist/add-module.d.ts +4 -0
  3. package/dist/add-module.d.ts.map +1 -1
  4. package/dist/add-module.js +29 -0
  5. package/dist/add-module.js.map +1 -1
  6. package/dist/calver.d.ts +65 -0
  7. package/dist/calver.d.ts.map +1 -0
  8. package/dist/calver.js +115 -0
  9. package/dist/calver.js.map +1 -0
  10. package/dist/canary.d.ts.map +1 -1
  11. package/dist/canary.js +15 -2
  12. package/dist/canary.js.map +1 -1
  13. package/dist/changelog.d.ts +111 -0
  14. package/dist/changelog.d.ts.map +1 -0
  15. package/dist/changelog.js +285 -0
  16. package/dist/changelog.js.map +1 -0
  17. package/dist/cli.js +299 -12
  18. package/dist/cli.js.map +1 -1
  19. package/dist/extends.d.ts +3 -2
  20. package/dist/extends.d.ts.map +1 -1
  21. package/dist/extends.js +12 -2
  22. package/dist/extends.js.map +1 -1
  23. package/dist/forks.d.ts +116 -0
  24. package/dist/forks.d.ts.map +1 -0
  25. package/dist/forks.js +357 -0
  26. package/dist/forks.js.map +1 -0
  27. package/dist/index.d.ts +7 -0
  28. package/dist/index.d.ts.map +1 -1
  29. package/dist/index.js +3 -0
  30. package/dist/index.js.map +1 -1
  31. package/dist/inherit.d.ts +18 -0
  32. package/dist/inherit.d.ts.map +1 -0
  33. package/dist/inherit.js +84 -0
  34. package/dist/inherit.js.map +1 -0
  35. package/dist/manifest.d.ts +43 -0
  36. package/dist/manifest.d.ts.map +1 -0
  37. package/dist/manifest.js +64 -0
  38. package/dist/manifest.js.map +1 -0
  39. package/dist/policy.d.ts +5 -1
  40. package/dist/policy.d.ts.map +1 -1
  41. package/dist/policy.js +14 -6
  42. package/dist/policy.js.map +1 -1
  43. package/dist/readme.d.ts +2 -0
  44. package/dist/readme.d.ts.map +1 -1
  45. package/dist/readme.js +6 -1
  46. package/dist/readme.js.map +1 -1
  47. package/dist/release.d.ts +24 -0
  48. package/dist/release.d.ts.map +1 -1
  49. package/dist/release.js +51 -6
  50. package/dist/release.js.map +1 -1
  51. package/dist/scaffold.d.ts +3 -5
  52. package/dist/scaffold.d.ts.map +1 -1
  53. package/dist/scaffold.js +116 -64
  54. package/dist/scaffold.js.map +1 -1
  55. package/dist/submodules.d.ts +49 -0
  56. package/dist/submodules.d.ts.map +1 -1
  57. package/dist/submodules.js +94 -4
  58. package/dist/submodules.js.map +1 -1
  59. package/dist/workflows.d.ts +46 -1
  60. package/dist/workflows.d.ts.map +1 -1
  61. package/dist/workflows.js +372 -20
  62. package/dist/workflows.js.map +1 -1
  63. package/package.json +14 -12
@@ -1 +1 @@
1
- {"version":3,"file":"extends.d.ts","sourceRoot":"","sources":["../src/extends.ts"],"names":[],"mappings":"AAMA;;;;;;;;GAQG;AAEH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,gEAAgE;IAChE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/B,8DAA8D;IAC9D,OAAO,EAAE,MAAM,GAAG,SAAS,CAAA;CAC5B;AAsCD;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,GAAI,MAAM,MAAM,KAAG,YAkB/C,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,UAAU,GACrB,MAAM,MAAM,EACZ,QAAQ,MAAM,KACb,YAAY,GAAG,SAQjB,CAAA;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAA;IACd,iDAAiD;IACjD,MAAM,EAAE,MAAM,CAAA;IACd,qEAAqE;IACrE,IAAI,EAAE,MAAM,GAAG,SAAS,CAAA;IACxB,MAAM,EAAE,QAAQ,GAAG,SAAS,CAAA;CAC7B;AAiBD;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,GAC9B,MAAM,YAAY,EAClB,QAAQ,YAAY,KACnB,cAAc,EAgChB,CAAA;AAED,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,YAAY,CAAA;IAC1B,MAAM,EAAE,YAAY,GAAG,SAAS,CAAA;IAChC,UAAU,EAAE,cAAc,EAAE,CAAA;IAC5B,2DAA2D;IAC3D,UAAU,EAAE,MAAM,GAAG,SAAS,CAAA;CAC/B;AAED,eAAO,MAAM,cAAc,GAAI,MAAM,MAAM,KAAG,aAuB7C,CAAA;AAED,eAAO,MAAM,kBAAkB,GAAI,QAAQ,aAAa,KAAG,MAa1D,CAAA;AAED,0EAA0E;AAC1E,eAAO,MAAM,aAAa,GAAI,MAAM,MAAM,KAAG,IAG5C,CAAA"}
1
+ {"version":3,"file":"extends.d.ts","sourceRoot":"","sources":["../src/extends.ts"],"names":[],"mappings":"AAOA;;;;;;;;GAQG;AAEH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,gEAAgE;IAChE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/B,8DAA8D;IAC9D,OAAO,EAAE,MAAM,GAAG,SAAS,CAAA;CAC5B;AAsCD;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB,GAAI,MAAM,MAAM,KAAG,YAuB/C,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,UAAU,GACrB,MAAM,MAAM,EACZ,QAAQ,MAAM,KACb,YAAY,GAAG,SAQjB,CAAA;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAA;IACd,iDAAiD;IACjD,MAAM,EAAE,MAAM,CAAA;IACd,qEAAqE;IACrE,IAAI,EAAE,MAAM,GAAG,SAAS,CAAA;IACxB,MAAM,EAAE,QAAQ,GAAG,SAAS,CAAA;CAC7B;AAiBD;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,GAC9B,MAAM,YAAY,EAClB,QAAQ,YAAY,KACnB,cAAc,EAgChB,CAAA;AAED,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,YAAY,CAAA;IAC1B,MAAM,EAAE,YAAY,GAAG,SAAS,CAAA;IAChC,UAAU,EAAE,cAAc,EAAE,CAAA;IAC5B,2DAA2D;IAC3D,UAAU,EAAE,MAAM,GAAG,SAAS,CAAA;CAC/B;AAED,eAAO,MAAM,cAAc,GAAI,MAAM,MAAM,KAAG,aAuB7C,CAAA;AAED,eAAO,MAAM,kBAAkB,GAAI,QAAQ,aAAa,KAAG,MAiB1D,CAAA;AAED,0EAA0E;AAC1E,eAAO,MAAM,aAAa,GAAI,MAAM,MAAM,KAAG,IAG5C,CAAA"}
package/dist/extends.js CHANGED
@@ -2,6 +2,7 @@ import { createRequire } from 'node:module';
2
2
  import { readFileSync } from 'node:fs';
3
3
  import path from 'node:path';
4
4
  import semver from 'semver';
5
+ import { readPublishedModules } from "./manifest.js";
5
6
  import { submodules } from "./submodules.js";
6
7
  const readPackageJson = (file) => JSON.parse(readFileSync(file, 'utf8'));
7
8
  /**
@@ -35,7 +36,8 @@ const modulesFromSubmodules = (root) => {
35
36
  *
36
37
  * In a repository the modules come from the submodules. A published
37
38
  * distribution has no submodules, so its manifest carries the versions it
38
- * shipped, which is what an extension is compared against.
39
+ * shipped, which is what an extension is compared against: in
40
+ * `distribution.modules`, or as `dependencies` in one published before that.
39
41
  */
40
42
  export const readDistribution = (root) => {
41
43
  const pkg = readPackageJson(path.join(root, 'package.json'));
@@ -49,10 +51,14 @@ export const readDistribution = (root) => {
49
51
  if (range.startsWith('workspace:') || range.startsWith('link:'))
50
52
  delete declared[name];
51
53
  }
54
+ const published = readPublishedModules(pkg);
55
+ const recorded = published
56
+ ? Object.fromEntries(Object.entries(published).map(([name, module]) => [name, module.version]))
57
+ : undefined;
52
58
  return {
53
59
  name: pkg.name ?? path.basename(root),
54
60
  version: pkg.version ?? '0.0.0',
55
- modules: modulesFromSubmodules(root) ?? declared,
61
+ modules: modulesFromSubmodules(root) ?? recorded ?? declared,
56
62
  extends: parent,
57
63
  };
58
64
  };
@@ -148,10 +154,14 @@ export const describeViolations = (report) => {
148
154
  const lines = violations.map((violation) => violation.reason === 'missing'
149
155
  ? ` ${violation.module} is not shipped, but ${parent?.name} ships ${violation.parent}`
150
156
  : ` ${violation.module} ${violation.ours} is older than the ${violation.parent} ${parent?.name} ships`);
157
+ const behind = violations.some((violation) => violation.reason === 'behind');
158
+ const missing = violations.some((violation) => violation.reason === 'missing');
151
159
  return [
152
160
  `${distribution.name} extends ${parent?.name}, so it cannot ship anything older:`,
153
161
  ...lines,
154
162
  'An extension may move ahead of what it extends, never behind it.',
163
+ ...(behind ? ["`fg-dist bump` moves a module to its newest release; a fork, by merging upstream's."] : []),
164
+ ...(missing ? [`\`fg-dist inherit\` adds what ${parent?.name} ships and this does not.`] : []),
155
165
  ].join('\n');
156
166
  };
157
167
  /** Throw when this distribution ships something older than its parent. */
@@ -1 +1 @@
1
- {"version":3,"file":"extends.js","sourceRoot":"","sources":["../src/extends.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"extends.js","sourceRoot":"","sources":["../src/extends.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,116 @@
1
+ import { type Submodule, type SubmoduleState } from './submodules.ts';
2
+ /**
3
+ * The branch in a fork that holds everything this distribution pins, named
4
+ * after the distribution.
5
+ *
6
+ * Not the pull request's branch: GitHub deletes that once it is merged, and a
7
+ * pinned commit has to stay fetchable for as long as anything pins it. Not the
8
+ * fork's main either, which is upstream's to follow.
9
+ */
10
+ export declare const distributionBranch: (root: string) => string;
11
+ /** `https://github.com/acme/id.git` -> `acme/id`; undefined anywhere else. */
12
+ export declare const githubRepo: (url: string) => string | undefined;
13
+ export interface ForkOptions {
14
+ /** Record the url as given instead of rewriting it to https. */
15
+ ssh?: boolean;
16
+ /** Push the pinned commit to the fork, so other clones can check it out. */
17
+ push?: boolean;
18
+ }
19
+ export interface ForkResult {
20
+ /** The fork's url, as recorded in .gitmodules. */
21
+ url: string;
22
+ /** Where it was forked from. */
23
+ upstream: string;
24
+ /** Whether the url was rewritten from ssh. */
25
+ rewritten: boolean;
26
+ /** The branch the pinned commit was pushed to, when it was. */
27
+ branch: string | undefined;
28
+ }
29
+ /**
30
+ * Check a module out from a fork, keeping where it came from.
31
+ *
32
+ * The fork has to exist already — on GitHub, the Fork button — since creating
33
+ * repositories is not something to do behind anyone's back. Forking a fork
34
+ * keeps the original upstream.
35
+ */
36
+ export declare const forkModule: (root: string, submodule: Submodule, url: string, { ssh, push }?: ForkOptions) => ForkResult;
37
+ export interface ContributeOptions {
38
+ /** Push the branch and open the pull request. On by default. */
39
+ push?: boolean;
40
+ /** The branch the pull request goes into; defaults to the upstream's own. */
41
+ base?: string;
42
+ }
43
+ export interface ContributeResult {
44
+ branch: string;
45
+ /** The repository the pull request is against, and its branch. */
46
+ repository: string;
47
+ base: string;
48
+ /** The pull request, when `gh` opened one. */
49
+ pullRequest: string | undefined;
50
+ /** Where to open it by hand otherwise, on GitHub. */
51
+ compare: string | undefined;
52
+ /** The fork's distribution branch, which now holds the pinned commit too. */
53
+ pinnedOn: string | undefined;
54
+ /**
55
+ * The line the module's changelog check wants, when the pull request is
56
+ * open and has none yet: its link filled in, its words left to whoever made
57
+ * the change, and to review.
58
+ */
59
+ changelog?: {
60
+ file: string;
61
+ version: string;
62
+ line: string;
63
+ };
64
+ }
65
+ /**
66
+ * Offer what is on the checkout's branch upstream, as a pull request.
67
+ *
68
+ * For a fork the branch goes to the fork and the pull request to upstream; for
69
+ * a module you can push to, both go to its own repository. A fork also moves
70
+ * its distribution branch up to the commit, since that is what is pinned and
71
+ * the pull request's branch is gone once merged.
72
+ */
73
+ export declare const contribute: (root: string, submodule: Submodule, { push, base }?: ContributeOptions) => ContributeResult;
74
+ export interface Integration {
75
+ /** `moved` when upstream's release already had the fork's work, `merged` otherwise. */
76
+ how: 'moved' | 'merged';
77
+ /** What was pushed to the fork: the distribution branch, or the release's tag. */
78
+ pushed: string | undefined;
79
+ }
80
+ /**
81
+ * Take an upstream release into a fork: what `bump` does for one.
82
+ *
83
+ * When the release already has everything the fork adds, the fork is simply
84
+ * moved to it — upstream has taken the work, and the fork could be dropped.
85
+ * Otherwise the release is merged into the fork, keeping the fork's changes on
86
+ * top, and pushed to the distribution branch. A merge rather than a rebase, so
87
+ * every commit an older distribution pinned stays in the fork.
88
+ */
89
+ export declare const integrate: (root: string, state: SubmoduleState, tag: string, { push }?: {
90
+ push?: boolean;
91
+ }) => Integration;
92
+ export interface UnforkOptions {
93
+ /** What to go back to: an upstream tag, branch or commit. Chosen when omitted. */
94
+ to?: string;
95
+ /** Allow going back to a release with a newer major version. */
96
+ major?: boolean;
97
+ /** Go back to `to` even when it lacks some of what the fork adds. */
98
+ force?: boolean;
99
+ }
100
+ export interface UnforkResult {
101
+ /** The upstream url the module is checked out from again. */
102
+ url: string;
103
+ /** The release or ref it is pinned at. */
104
+ to: string;
105
+ }
106
+ /**
107
+ * Check a forked module out from its upstream again.
108
+ *
109
+ * Only to something that has everything the fork adds, unless forced: going
110
+ * back means the fork's commits stop shipping, and that should be because
111
+ * upstream has them, not by accident. Without `to`, the oldest upstream release
112
+ * from the pinned version on that has them is chosen — going back to upstream
113
+ * is not the moment to upgrade as well.
114
+ */
115
+ export declare const unforkModule: (root: string, state: SubmoduleState, { to, major, force }?: UnforkOptions) => UnforkResult;
116
+ //# sourceMappingURL=forks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"forks.d.ts","sourceRoot":"","sources":["../src/forks.ts"],"names":[],"mappings":"AAkBA,OAAO,EAOL,KAAK,SAAS,EACd,KAAK,cAAc,EACpB,MAAM,iBAAiB,CAAA;AAqCxB;;;;;;;GAOG;AACH,eAAO,MAAM,kBAAkB,GAAI,MAAM,MAAM,KAAG,MAUjD,CAAA;AAoBD,8EAA8E;AAC9E,eAAO,MAAM,UAAU,GAAI,KAAK,MAAM,KAAG,MAAM,GAAG,SACgC,CAAA;AAYlF,MAAM,WAAW,WAAW;IAC1B,gEAAgE;IAChE,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,4EAA4E;IAC5E,IAAI,CAAC,EAAE,OAAO,CAAA;CACf;AAED,MAAM,WAAW,UAAU;IACzB,kDAAkD;IAClD,GAAG,EAAE,MAAM,CAAA;IACX,gCAAgC;IAChC,QAAQ,EAAE,MAAM,CAAA;IAChB,8CAA8C;IAC9C,SAAS,EAAE,OAAO,CAAA;IAClB,+DAA+D;IAC/D,MAAM,EAAE,MAAM,GAAG,SAAS,CAAA;CAC3B;AAED;;;;;;GAMG;AACH,eAAO,MAAM,UAAU,GACrB,MAAM,MAAM,EACZ,WAAW,SAAS,EACpB,KAAK,MAAM,EACX,gBAA8B,WAAgB,KAC7C,UAmCF,CAAA;AAED,MAAM,WAAW,iBAAiB;IAChC,gEAAgE;IAChE,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,6EAA6E;IAC7E,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAA;IACd,kEAAkE;IAClE,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,MAAM,CAAA;IACZ,8CAA8C;IAC9C,WAAW,EAAE,MAAM,GAAG,SAAS,CAAA;IAC/B,qDAAqD;IACrD,OAAO,EAAE,MAAM,GAAG,SAAS,CAAA;IAC3B,6EAA6E;IAC7E,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAA;IAC5B;;;;OAIG;IACH,SAAS,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;CAC5D;AAwCD;;;;;;;GAOG;AACH,eAAO,MAAM,UAAU,GACrB,MAAM,MAAM,EACZ,WAAW,SAAS,EACpB,iBAAuB,iBAAsB,KAC5C,gBAmFF,CAAA;AAED,MAAM,WAAW,WAAW;IAC1B,uFAAuF;IACvF,GAAG,EAAE,OAAO,GAAG,QAAQ,CAAA;IACvB,kFAAkF;IAClF,MAAM,EAAE,MAAM,GAAG,SAAS,CAAA;CAC3B;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,SAAS,GACpB,MAAM,MAAM,EACZ,OAAO,cAAc,EACrB,KAAK,MAAM,EACX,WAAiB;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAO,KACvC,WAuCF,CAAA;AAED,MAAM,WAAW,aAAa;IAC5B,kFAAkF;IAClF,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,gEAAgE;IAChE,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,qEAAqE;IACrE,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,6DAA6D;IAC7D,GAAG,EAAE,MAAM,CAAA;IACX,0CAA0C;IAC1C,EAAE,EAAE,MAAM,CAAA;CACX;AAiBD;;;;;;;;GAQG;AACH,eAAO,MAAM,YAAY,GACvB,MAAM,MAAM,EACZ,OAAO,cAAc,EACrB,uBAAsC,aAAkB,KACvD,YAyEF,CAAA"}
package/dist/forks.js ADDED
@@ -0,0 +1,357 @@
1
+ import { execFileSync } from 'node:child_process';
2
+ import { readFileSync } from 'node:fs';
3
+ import path from 'node:path';
4
+ import semver from 'semver';
5
+ import { CHANGELOG, aheadEntry, bumpEntry, crossedReleases, moduleLabel, noteInDistribution, releaseNotesLinks, repositoryLink, shown, topVersion, } from "./changelog.js";
6
+ import { existsSync } from 'node:fs';
7
+ import { describeRemote, toHttps } from "./git-url.js";
8
+ import { UPSTREAM, containsAll, ensureUpstreamRemote, gitmodulesSet, moveTo, setUrl, } from "./submodules.js";
9
+ /**
10
+ * Forking a module, from inside a distribution.
11
+ *
12
+ * A fork is the module checked out from somewhere you can push to, with the
13
+ * repository it came from recorded beside it. You fix or add something there,
14
+ * offer it upstream as a pull request, and meanwhile ship it. Updating works
15
+ * as it does for any module, except that a fork takes upstream's releases by
16
+ * merging them in. Once upstream has everything the fork adds, you can go back
17
+ * to upstream, or keep the fork.
18
+ */
19
+ /** Run git, throwing with what it said when it fails. */
20
+ const run = (cwd, args) => {
21
+ try {
22
+ return execFileSync('git', args, {
23
+ cwd,
24
+ encoding: 'utf8',
25
+ stdio: ['ignore', 'pipe', 'pipe'],
26
+ }).trim();
27
+ }
28
+ catch (cause) {
29
+ const stderr = cause instanceof Error && 'stderr' in cause ? String(cause.stderr).trim() : '';
30
+ throw new Error(`git ${args[0]} failed in ${cwd}${stderr ? `:\n${stderr}` : ''}`, { cause });
31
+ }
32
+ };
33
+ /** Run git, returning undefined rather than throwing when it fails. */
34
+ const attempt = (cwd, args) => {
35
+ try {
36
+ return run(cwd, args);
37
+ }
38
+ catch {
39
+ return undefined;
40
+ }
41
+ };
42
+ /**
43
+ * The branch in a fork that holds everything this distribution pins, named
44
+ * after the distribution.
45
+ *
46
+ * Not the pull request's branch: GitHub deletes that once it is merged, and a
47
+ * pinned commit has to stay fetchable for as long as anything pins it. Not the
48
+ * fork's main either, which is upstream's to follow.
49
+ */
50
+ export const distributionBranch = (root) => {
51
+ let name;
52
+ try {
53
+ name = JSON.parse(readFileSync(path.join(root, 'package.json'), 'utf8')).name;
54
+ }
55
+ catch {
56
+ name = undefined;
57
+ }
58
+ return (typeof name === 'string' ? name : path.basename(root))
59
+ .replace(/^@/, '')
60
+ .replace(/[^A-Za-z0-9._-]+/g, '-');
61
+ };
62
+ /**
63
+ * Put the checked-out commit on the fork's distribution branch, which only
64
+ * moves forward. `to` is the fork's url, or `origin` once it is the fork.
65
+ */
66
+ const pushPinned = (submodule, branch, to = 'origin') => {
67
+ try {
68
+ run(submodule.path, ['push', '--quiet', to, `HEAD:refs/heads/${branch}`]);
69
+ }
70
+ catch (cause) {
71
+ const fork = to === 'origin' ? submodule.url : to;
72
+ throw new Error(`${branch} on ${describeRemote(fork)} has commits that ${submodule.relativePath} does not. ` +
73
+ `Merge them in first, then run this again:\n` +
74
+ ` cd ${submodule.relativePath} && git fetch ${fork} ${branch} && git merge FETCH_HEAD`, { cause });
75
+ }
76
+ };
77
+ /** `https://github.com/acme/id.git` -> `acme/id`; undefined anywhere else. */
78
+ export const githubRepo = (url) => /^https:\/\/github\.com\/([^/]+\/[^/]+?)(?:\.git)?\/?$/i.exec(toHttps(url))?.[1];
79
+ /** The branch a remote's HEAD names, which is where pull requests go. */
80
+ const defaultBranch = (cwd, remote) => {
81
+ const read = () => attempt(cwd, ['symbolic-ref', '--short', `refs/remotes/${remote}/HEAD`])?.replace(`${remote}/`, '');
82
+ const known = read();
83
+ if (known)
84
+ return known;
85
+ attempt(cwd, ['remote', 'set-head', remote, '--auto']);
86
+ return read() ?? 'main';
87
+ };
88
+ /**
89
+ * Check a module out from a fork, keeping where it came from.
90
+ *
91
+ * The fork has to exist already — on GitHub, the Fork button — since creating
92
+ * repositories is not something to do behind anyone's back. Forking a fork
93
+ * keeps the original upstream.
94
+ */
95
+ export const forkModule = (root, submodule, url, { ssh = false, push = true } = {}) => {
96
+ const fork = ssh ? url : toHttps(url);
97
+ const upstream = submodule.upstream ?? submodule.url;
98
+ if (fork === submodule.url) {
99
+ throw new Error(`${submodule.relativePath} is already checked out from ${fork}.`);
100
+ }
101
+ if (fork === upstream) {
102
+ throw new Error(`${fork} is where ${submodule.relativePath} was forked from. ` +
103
+ `Run \`fg-dist unfork ${submodule.name}\` to go back to it.`);
104
+ }
105
+ // Before anything is written: a fork nobody can read is a pin nobody can fetch.
106
+ if (attempt(submodule.path, ['ls-remote', '--heads', fork]) === undefined) {
107
+ throw new Error(`Could not read ${fork}. Fork ${describeRemote(upstream)} there first, then run this again.`);
108
+ }
109
+ // Pushed before anything is recorded, so a refusal leaves the module as it was.
110
+ const branch = distributionBranch(root);
111
+ if (push)
112
+ pushPinned(submodule, branch, fork);
113
+ gitmodulesSet(root, submodule.configName, 'upstream', upstream);
114
+ setUrl(root, submodule, fork);
115
+ run(submodule.path, ['remote', 'set-url', 'origin', fork]);
116
+ ensureUpstreamRemote(submodule.path, upstream);
117
+ attempt(submodule.path, ['fetch', '--quiet', 'origin']);
118
+ attempt(submodule.path, ['fetch', '--quiet', '--tags', UPSTREAM]);
119
+ const { name } = moduleLabel(submodule.path);
120
+ noteInDistribution(root, `\`${name}\` forked to ${repositoryLink(fork)}, from ${repositoryLink(upstream)}`);
121
+ return { url: fork, upstream, rewritten: fork !== url, branch: push ? branch : undefined };
122
+ };
123
+ /** A pull request's title, as GitHub has it. */
124
+ const pullRequestTitle = (cwd, url) => {
125
+ try {
126
+ return (execFileSync('gh', ['pr', 'view', url, '--json', 'title', '--jq', '.title'], {
127
+ cwd,
128
+ encoding: 'utf8',
129
+ stdio: ['ignore', 'pipe', 'ignore'],
130
+ }).trim() || undefined);
131
+ }
132
+ catch {
133
+ return undefined;
134
+ }
135
+ };
136
+ /**
137
+ * The changelog line a pull request still needs, with its link: only the
138
+ * words are left, which are the author's to write. Undefined for a module
139
+ * without a changelog, or one that links the pull request already.
140
+ */
141
+ const changelogLine = (submodule, pullRequest) => {
142
+ const file = path.join(submodule.path, CHANGELOG);
143
+ if (!existsSync(file))
144
+ return undefined;
145
+ const text = readFileSync(file, 'utf8');
146
+ if (text.toLowerCase().includes(pullRequest.replace(/^https?:\/\//, '').toLowerCase()))
147
+ return undefined;
148
+ const version = topVersion(text);
149
+ const number = /\/pull\/(\d+)/.exec(pullRequest)?.[1];
150
+ if (!version || !number)
151
+ return undefined;
152
+ return {
153
+ file: path.join(submodule.relativePath, CHANGELOG),
154
+ version,
155
+ line: `- What this changes, for someone using it ([#${number}](${pullRequest}))`,
156
+ };
157
+ };
158
+ /**
159
+ * Offer what is on the checkout's branch upstream, as a pull request.
160
+ *
161
+ * For a fork the branch goes to the fork and the pull request to upstream; for
162
+ * a module you can push to, both go to its own repository. A fork also moves
163
+ * its distribution branch up to the commit, since that is what is pinned and
164
+ * the pull request's branch is gone once merged.
165
+ */
166
+ export const contribute = (root, submodule, { push = true, base } = {}) => {
167
+ const cwd = submodule.path;
168
+ const branch = attempt(cwd, ['symbolic-ref', '--short', '-q', 'HEAD']);
169
+ if (!branch) {
170
+ throw new Error(`${submodule.relativePath} is not on a branch. Start one for the change:\n` +
171
+ ` cd ${submodule.relativePath} && git switch -c <name>`);
172
+ }
173
+ if ((attempt(cwd, ['status', '--porcelain']) ?? '') !== '') {
174
+ throw new Error(`${submodule.relativePath} has uncommitted changes. Commit them first.`);
175
+ }
176
+ const fork = submodule.upstream;
177
+ const remote = fork ? UPSTREAM : 'origin';
178
+ const repository = fork ?? submodule.url;
179
+ if (fork) {
180
+ ensureUpstreamRemote(cwd, fork);
181
+ attempt(cwd, ['fetch', '--quiet', UPSTREAM]);
182
+ }
183
+ const into = base ?? defaultBranch(cwd, remote);
184
+ if (!fork && branch === into) {
185
+ throw new Error(`${submodule.relativePath} is on ${into} itself. A pull request needs a branch of its own:\n` +
186
+ ` cd ${submodule.relativePath} && git switch -c <name>`);
187
+ }
188
+ const upstreamRepo = githubRepo(repository);
189
+ const ownRepo = githubRepo(submodule.url);
190
+ const head = fork && ownRepo ? `${ownRepo.split('/')[0]}:${branch}` : branch;
191
+ const compare = upstreamRepo
192
+ ? `https://github.com/${upstreamRepo}/compare/${into}...${head}?expand=1`
193
+ : undefined;
194
+ if (!push) {
195
+ return { branch, repository, base: into, pullRequest: undefined, compare, pinnedOn: undefined };
196
+ }
197
+ run(cwd, ['push', '--quiet', '-u', 'origin', branch]);
198
+ const pinnedOn = fork ? distributionBranch(root) : undefined;
199
+ if (pinnedOn)
200
+ pushPinned(submodule, pinnedOn);
201
+ let pullRequest;
202
+ if (upstreamRepo) {
203
+ try {
204
+ const output = execFileSync('gh', ['pr', 'create', '--repo', upstreamRepo, '--base', into, '--head', head, '--fill'], { cwd, encoding: 'utf8', stdio: ['ignore', 'pipe', 'pipe'] });
205
+ pullRequest = /https:\/\/\S+/.exec(output)?.[0];
206
+ }
207
+ catch {
208
+ // No gh, not signed in, or one already open: the compare link does the rest.
209
+ pullRequest = undefined;
210
+ }
211
+ }
212
+ // What the change is, in the distribution's changelog: the pull request's
213
+ // title, or without one, what its last commit says. Never the branch's name,
214
+ // which means nothing to anyone reading it.
215
+ const title = (pullRequest && pullRequestTitle(cwd, pullRequest)) ||
216
+ attempt(cwd, ['log', '-1', '--format=%s']) ||
217
+ branch;
218
+ // Linked where it can be read about: its pull request, or else its commit.
219
+ const { name } = moduleLabel(cwd);
220
+ const number = pullRequest && /\/pull\/(\d+)/.exec(pullRequest)?.[1];
221
+ const tip = attempt(cwd, ['rev-parse', 'HEAD']);
222
+ const link = pullRequest && upstreamRepo && number
223
+ ? { text: `${upstreamRepo}#${number}`, url: pullRequest }
224
+ : ownRepo && tip
225
+ ? { text: `${ownRepo}@${tip.slice(0, 7)}`, url: `https://github.com/${ownRepo}/commit/${tip}` }
226
+ : undefined;
227
+ noteInDistribution(root, aheadEntry(name, title, link));
228
+ // The module's own line is written by whoever made the change, and reviewed
229
+ // with it; only its link is known here.
230
+ const changelog = pullRequest ? changelogLine(submodule, pullRequest) : undefined;
231
+ return { branch, repository, base: into, pullRequest, compare, pinnedOn, changelog };
232
+ };
233
+ /**
234
+ * Take an upstream release into a fork: what `bump` does for one.
235
+ *
236
+ * When the release already has everything the fork adds, the fork is simply
237
+ * moved to it — upstream has taken the work, and the fork could be dropped.
238
+ * Otherwise the release is merged into the fork, keeping the fork's changes on
239
+ * top, and pushed to the distribution branch. A merge rather than a rebase, so
240
+ * every commit an older distribution pinned stays in the fork.
241
+ */
242
+ export const integrate = (root, state, tag, { push = true } = {}) => {
243
+ const { submodule } = state;
244
+ const cwd = submodule.path;
245
+ const upstream = submodule.upstream ?? submodule.url;
246
+ const { name } = moduleLabel(cwd);
247
+ const from = state.current ?? state.head.slice(0, 7);
248
+ const releases = crossedReleases(state.available, tag);
249
+ if (containsAll(cwd, `refs/tags/${tag}`, state.head)) {
250
+ moveTo(submodule, tag);
251
+ // The fork may not have the release yet, and it is what is pinned now.
252
+ if (push)
253
+ run(cwd, ['push', '--quiet', 'origin', `refs/tags/${tag}`]);
254
+ noteInDistribution(root, bumpEntry(name, from, tag, upstream, releases, 'which has everything the fork added'));
255
+ return { how: 'moved', pushed: push ? tag : undefined };
256
+ }
257
+ try {
258
+ run(cwd, [
259
+ 'merge',
260
+ '--no-edit',
261
+ '--quiet',
262
+ '-m',
263
+ `Merge ${tag} from ${describeRemote(upstream)}`,
264
+ `refs/tags/${tag}`,
265
+ ]);
266
+ }
267
+ catch (cause) {
268
+ attempt(cwd, ['merge', '--abort']);
269
+ throw new Error(`${tag} does not merge cleanly into ${submodule.relativePath}. Merge it by hand, ` +
270
+ `then push, and commit the new pin:\n cd ${submodule.relativePath} && git merge ${tag}`, { cause });
271
+ }
272
+ const branch = distributionBranch(root);
273
+ if (push)
274
+ pushPinned(submodule, branch);
275
+ noteInDistribution(root, bumpEntry(name, from, tag, upstream, releases, 'merged into the fork'));
276
+ return { how: 'merged', pushed: push ? branch : undefined };
277
+ };
278
+ /** Commits the fork has that `base` does not, for saying what would be lost. */
279
+ const notIn = (cwd, base) => (attempt(cwd, [
280
+ 'log',
281
+ '--no-merges',
282
+ '--cherry-pick',
283
+ '--right-only',
284
+ '--format=%h %s',
285
+ `${base}...HEAD`,
286
+ ]) ?? '')
287
+ .split('\n')
288
+ .filter(Boolean);
289
+ /**
290
+ * Check a forked module out from its upstream again.
291
+ *
292
+ * Only to something that has everything the fork adds, unless forced: going
293
+ * back means the fork's commits stop shipping, and that should be because
294
+ * upstream has them, not by accident. Without `to`, the oldest upstream release
295
+ * from the pinned version on that has them is chosen — going back to upstream
296
+ * is not the moment to upgrade as well.
297
+ */
298
+ export const unforkModule = (root, state, { to, major = false, force = false } = {}) => {
299
+ const { submodule } = state;
300
+ const cwd = submodule.path;
301
+ const upstream = submodule.upstream;
302
+ if (!upstream) {
303
+ throw new Error(`${submodule.relativePath} is not a fork; it is checked out from ${submodule.url}.`);
304
+ }
305
+ if (state.dirty) {
306
+ throw new Error(`${submodule.relativePath} has uncommitted changes. Commit or drop them first.`);
307
+ }
308
+ let target;
309
+ let label;
310
+ if (to) {
311
+ const ref = [`refs/tags/${to}`, `${UPSTREAM}/${to}`, to].find((candidate) => attempt(cwd, ['rev-parse', '--verify', '--quiet', `${candidate}^{commit}`]) !== undefined);
312
+ if (!ref)
313
+ throw new Error(`${to} is not a tag, upstream branch or commit in ${submodule.relativePath}.`);
314
+ const lost = containsAll(cwd, ref, state.head) ? [] : notIn(cwd, ref);
315
+ if (lost.length > 0 && !force) {
316
+ throw new Error(`${to} does not have everything the fork adds:\n${lost.map((line) => ` ${line}`).join('\n')}\n` +
317
+ 'Pass --force to go back anyway and stop shipping them.');
318
+ }
319
+ target = ref;
320
+ label = to;
321
+ }
322
+ else {
323
+ const merged = state.fork?.merged;
324
+ if (!merged) {
325
+ const tip = `${UPSTREAM}/HEAD`;
326
+ const lost = notIn(cwd, attempt(cwd, ['rev-parse', '--verify', '--quiet', tip]) ? tip : 'HEAD');
327
+ throw new Error(`Upstream has not taken everything ${submodule.relativePath} adds yet:\n` +
328
+ `${lost.map((line) => ` ${line}`).join('\n')}\n` +
329
+ 'Keep the fork until it has, or pass --to <tag> --force to go back without them.');
330
+ }
331
+ if (!semver.valid(merged)) {
332
+ throw new Error(`Only ${merged} has everything ${submodule.relativePath} adds, and it is not a release yet. ` +
333
+ `Wait for one, or pass --to ${merged.replace(`${UPSTREAM}/`, '')} to go back to the branch.`);
334
+ }
335
+ if (!major && state.current && semver.major(merged) !== semver.major(state.current)) {
336
+ throw new Error(`The first release with everything ${submodule.relativePath} adds is ${merged}, a major ` +
337
+ 'upgrade. Pass --major to go back to it.');
338
+ }
339
+ target = `refs/tags/${merged}`;
340
+ label = merged;
341
+ }
342
+ const lost = containsAll(cwd, target, state.head) ? [] : notIn(cwd, target);
343
+ run(cwd, ['checkout', '--quiet', `${target}^{commit}`]);
344
+ setUrl(root, submodule, upstream);
345
+ run(cwd, ['remote', 'set-url', 'origin', upstream]);
346
+ gitmodulesSet(root, submodule.configName, 'upstream', undefined);
347
+ attempt(cwd, ['remote', 'remove', UPSTREAM]);
348
+ const { name } = moduleLabel(cwd);
349
+ const notes = semver.valid(label) ? releaseNotesLinks(upstream, crossedReleases(state.available, label)) : '';
350
+ noteInDistribution(root, `\`${name}\` back to ${repositoryLink(upstream)} at ${shown(label)}, ` +
351
+ (lost.length > 0
352
+ ? `leaving behind ${lost.length} commit${lost.length === 1 ? '' : 's'} of the fork's that upstream does not have`
353
+ : 'which has everything the fork added') +
354
+ notes);
355
+ return { url: upstream, to: label };
356
+ };
357
+ //# sourceMappingURL=forks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"forks.js","sourceRoot":"","sources":["../src/forks.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -11,4 +11,11 @@ export { assertExtends, describeViolations, findFloorViolations, inspectExtends,
11
11
  export type { Distribution, ExtendsReport, FloorViolation } from './extends.ts';
12
12
  export { buildPolicy, findPolicy, setupTurbo, testPolicy, turboTasks, usePolicy } from './policy.ts';
13
13
  export type { DistributionPolicy } from './policy.ts';
14
+ export { contribute, distributionBranch, forkModule, integrate, unforkModule } from './forks.ts';
15
+ export type { ContributeResult, ForkResult, Integration, UnforkResult } from './forks.ts';
16
+ export type { ForkState } from './submodules.ts';
17
+ export { readPublishedModules, shippedModules, stampModules } from './manifest.ts';
18
+ export type { PublishedModule, PublishedModules } from './manifest.ts';
19
+ export { inherit } from './inherit.ts';
20
+ export type { Inheritance, InheritedModule } from './inherit.ts';
14
21
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAC1C,OAAO,EACL,QAAQ,EACR,gBAAgB,EAChB,UAAU,EACV,YAAY,EACZ,OAAO,EACP,eAAe,EACf,KAAK,GACN,MAAM,eAAe,CAAA;AAEtB,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AACtE,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAExE,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAC5D,YAAY,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAElD,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAE7D,OAAO,EACL,OAAO,EACP,QAAQ,EACR,MAAM,EACN,cAAc,EACd,MAAM,EACN,UAAU,EACV,MAAM,GACP,MAAM,iBAAiB,CAAA;AACxB,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAE7E,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,mBAAmB,EACnB,cAAc,EACd,gBAAgB,EAChB,UAAU,GACX,MAAM,cAAc,CAAA;AACrB,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAE/E,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACpG,YAAY,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAC1C,OAAO,EACL,QAAQ,EACR,gBAAgB,EAChB,UAAU,EACV,YAAY,EACZ,OAAO,EACP,eAAe,EACf,KAAK,GACN,MAAM,eAAe,CAAA;AAEtB,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AACtE,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAExE,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAC5D,YAAY,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAElD,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAE7D,OAAO,EACL,OAAO,EACP,QAAQ,EACR,MAAM,EACN,cAAc,EACd,MAAM,EACN,UAAU,EACV,MAAM,GACP,MAAM,iBAAiB,CAAA;AACxB,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAE7E,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,mBAAmB,EACnB,cAAc,EACd,gBAAgB,EAChB,UAAU,GACX,MAAM,cAAc,CAAA;AACrB,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAE/E,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACpG,YAAY,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAErD,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAChG,YAAY,EAAE,gBAAgB,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AACzF,YAAY,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAEhD,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAClF,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAEtE,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA"}
package/dist/index.js CHANGED
@@ -5,4 +5,7 @@ export { describeRemote, isSsh, toHttps } from "./git-url.js";
5
5
  export { inspect, isPublic, moveTo, repositoryRoot, setUrl, submodules, target, } from "./submodules.js";
6
6
  export { assertExtends, describeViolations, findFloorViolations, inspectExtends, readDistribution, readParent, } from "./extends.js";
7
7
  export { buildPolicy, findPolicy, setupTurbo, testPolicy, turboTasks, usePolicy } from "./policy.js";
8
+ export { contribute, distributionBranch, forkModule, integrate, unforkModule } from "./forks.js";
9
+ export { readPublishedModules, shippedModules, stampModules } from "./manifest.js";
10
+ export { inherit } from "./inherit.js";
8
11
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,QAAQ,EACR,gBAAgB,EAChB,UAAU,EACV,YAAY,EACZ,OAAO,EACP,eAAe,EACf,KAAK,GACN,MAAM,eAAe,CAAA;AAEtB,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAGtE,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAG5D,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAE7D,OAAO,EACL,OAAO,EACP,QAAQ,EACR,MAAM,EACN,cAAc,EACd,MAAM,EACN,UAAU,EACV,MAAM,GACP,MAAM,iBAAiB,CAAA;AAGxB,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,mBAAmB,EACnB,cAAc,EACd,gBAAgB,EAChB,UAAU,GACX,MAAM,cAAc,CAAA;AAGrB,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,QAAQ,EACR,gBAAgB,EAChB,UAAU,EACV,YAAY,EACZ,OAAO,EACP,eAAe,EACf,KAAK,GACN,MAAM,eAAe,CAAA;AAEtB,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAGtE,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAG5D,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAE7D,OAAO,EACL,OAAO,EACP,QAAQ,EACR,MAAM,EACN,cAAc,EACd,MAAM,EACN,UAAU,EACV,MAAM,GACP,MAAM,iBAAiB,CAAA;AAGxB,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,mBAAmB,EACnB,cAAc,EACd,gBAAgB,EAChB,UAAU,GACX,MAAM,cAAc,CAAA;AAGrB,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAGpG,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAIhG,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAGlF,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA"}