@mintlify/previewing 4.0.1492 → 4.0.1493

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.
@@ -226,7 +226,7 @@ describe('collectPackageIslands', () => {
226
226
  { prefix: `mi-${island.id}-`, html: '<svg></svg>' },
227
227
  ]));
228
228
  const compiled = await compileLikeMintDev('charts.mdx', {
229
- baseUrl: '/_mintlify/pkg/abc',
229
+ buildId: 'abc',
230
230
  islands,
231
231
  packageNames: [...(setup?.packageNames ?? [])],
232
232
  packageSnippets: [...collected.packageSnippets],
@@ -256,7 +256,7 @@ describe('collectPackageIslands', () => {
256
256
  { prefix: `mi-${island.id}-`, html: '<svg></svg>' },
257
257
  ]));
258
258
  const packageBuild = {
259
- baseUrl: '/_mintlify/pkg/abc',
259
+ buildId: 'abc',
260
260
  islands,
261
261
  packageNames: [...(setup?.packageNames ?? [])],
262
262
  packageSnippets: [...collected.packageSnippets],
@@ -294,7 +294,7 @@ describe('collectPackageIslands', () => {
294
294
  packageSnippets: collected.packageSnippets,
295
295
  });
296
296
  const packageBuild = {
297
- baseUrl: '/_mintlify/pkg/abc',
297
+ buildId: 'abc',
298
298
  islands: Object.fromEntries(collected.islands.map((island) => [
299
299
  island.id,
300
300
  { prefix: `mi-${island.id}-`, html: '<svg></svg>' },
@@ -165,7 +165,7 @@ describe('package snippet membership in the mint dev watcher', () => {
165
165
  })));
166
166
  };
167
167
  const render = async (page) => {
168
- const { baseUrl, islands, packageNames, packageSnippets } = await fse.readJson(join(testPaths.props, PACKAGE_BUILD_PROPS_FILE));
168
+ const { buildId, islands, packageNames, packageSnippets } = await fse.readJson(join(testPaths.props, PACKAGE_BUILD_PROPS_FILE));
169
169
  const compiled = await getMdx({
170
170
  path: page.replace(/\.mdx$/, ''),
171
171
  content: parseFrontmatter(await output(page)).body,
@@ -174,7 +174,7 @@ describe('package snippet membership in the mint dev watcher', () => {
174
174
  subdomain: 'local',
175
175
  codeStyling: undefined,
176
176
  tailwindSelectors: [],
177
- packageBuild: { baseUrl, islands, packageNames, packageSnippets },
177
+ packageBuild: { buildId, islands, packageNames, packageSnippets },
178
178
  });
179
179
  expect(compiled.parseFailed).toBeUndefined();
180
180
  return compiled.mdxExtracts.islands ?? {};
@@ -200,7 +200,7 @@ describe('PackagesDev', () => {
200
200
  expect(await fse.pathExists(join(propsPath, 'charts.mdx'))).toBe(true);
201
201
  const written = await props();
202
202
  const [id] = Object.keys(written.islands);
203
- expect(written.baseUrl).toMatch(/^\/_mintlify\/pkg\/bi[0-9a-f]+-1$/);
203
+ expect(written.buildId).toMatch(/^bi[0-9a-f]+-1$/);
204
204
  expect(written.islands[id ?? '']).toEqual({
205
205
  prefix: `mi-${id}-`,
206
206
  html: `<svg data-id="${id}"></svg>`,
@@ -209,7 +209,7 @@ describe('PackagesDev', () => {
209
209
  expect(written.css.map((css) => css.path)).toEqual(['client/styles.css']);
210
210
  expect(dev.getStatus()).toEqual({ state: 'ready' });
211
211
  expect(getPackageImportOptions()?.packageNames).toEqual(new Set(['recharts']));
212
- expect(await fse.readdir(buildsDir)).toEqual([written.baseUrl.split('/').pop()]);
212
+ expect(await fse.readdir(buildsDir)).toEqual([written.buildId]);
213
213
  expect(dev.routeState().enabled).toBe(true);
214
214
  });
215
215
  it('preserves global and island CSS references in local compile props', async () => {
@@ -221,7 +221,7 @@ describe('PackagesDev', () => {
221
221
  expect(written.islands[id ?? '']?.css).toEqual([
222
222
  { path: `client/islands/${id}.css`, integrity: 'sha384-css', bytes: 3 },
223
223
  ]);
224
- expect(written.baseUrl).not.toContain('/pages/');
224
+ expect(written.buildId).not.toContain('/');
225
225
  });
226
226
  it('adds a changed island right away and swaps in the rebuild', async () => {
227
227
  await dev.init();
@@ -233,14 +233,14 @@ describe('PackagesDev', () => {
233
233
  const pending = await props();
234
234
  const [newId] = Object.keys(pending.islands);
235
235
  expect(Object.keys(before.islands)).not.toContain(newId);
236
- expect(pending.baseUrl).toBe(before.baseUrl);
236
+ expect(pending.buildId).toBe(before.buildId);
237
237
  expect(pending.islands[newId ?? '']?.html).toBeUndefined();
238
238
  expect(dev.getStatus()).toEqual({ state: 'building' });
239
- await until(async () => (await props()).baseUrl !== before.baseUrl);
239
+ await until(async () => (await props()).buildId !== before.buildId);
240
240
  const after = await props();
241
241
  expect(after.islands[newId ?? '']?.html).toContain(newId);
242
242
  expect(rebuilt).toBe(1);
243
- expect((await fse.readdir(buildsDir)).sort()).toEqual([before.baseUrl, after.baseUrl].map((url) => url.split('/').pop()).sort());
243
+ expect((await fse.readdir(buildsDir)).sort()).toEqual([before.buildId, after.buildId].sort());
244
244
  });
245
245
  it('keeps listing the islands edits drop until the next build finishes', async () => {
246
246
  await dev.init();
@@ -342,7 +342,7 @@ describe('PackagesDev', () => {
342
342
  await Promise.all([slow, dev.onFileChange('charts.mdx', 'page')]);
343
343
  await until(() => rebuilt === 1);
344
344
  const after = await props();
345
- expect(after.baseUrl).not.toBe(before.baseUrl);
345
+ expect(after.buildId).not.toBe(before.buildId);
346
346
  expect(Object.keys(after.islands)).not.toEqual(Object.keys(before.islands));
347
347
  expect(Object.values(after.islands).every((island) => island.html !== undefined)).toBe(true);
348
348
  }
@@ -464,13 +464,13 @@ describe('PackagesDev', () => {
464
464
  mode.missingNodeModules = true;
465
465
  await dev.init();
466
466
  const written = await props();
467
- expect(written.baseUrl).toBe('/_mintlify/pkg/pending');
467
+ expect(written.buildId).toBe('pending');
468
468
  expect(Object.values(written.islands).every((island) => island.html === undefined)).toBe(true);
469
469
  expect(dev.getStatus()).toEqual({ state: 'missing-node-modules' });
470
470
  expect(report.calls).toContain('missing');
471
471
  mode.missingNodeModules = false;
472
472
  await fse.outputFile(join(docsRoot, 'node_modules/.package-lock.json'), '{}');
473
- await until(async () => (await props()).baseUrl !== '/_mintlify/pkg/pending');
473
+ await until(async () => (await props()).buildId !== 'pending');
474
474
  expect(dev.getStatus()).toEqual({ state: 'ready' });
475
475
  });
476
476
  it('rebuilds once an install without a known marker settles node_modules', async () => {
@@ -486,7 +486,7 @@ describe('PackagesDev', () => {
486
486
  version: '2.15.4',
487
487
  });
488
488
  await until(() => dev.getStatus().state === 'ready');
489
- expect((await props()).baseUrl).not.toBe('/_mintlify/pkg/pending');
489
+ expect((await props()).buildId).not.toBe('pending');
490
490
  });
491
491
  it('waits for the installer marker instead of a half-written node_modules when a lockfile exists', async () => {
492
492
  await fse.outputJson(join(docsRoot, 'package-lock.json'), { lockfileVersion: 3, packages: {} });
@@ -693,12 +693,12 @@ describe('PackagesDev', () => {
693
693
  'writing package-build.json',
694
694
  'ENOSPC: no space left on device',
695
695
  'outputFile',
696
- (target, data, before) => target.includes(PACKAGE_BUILD_PROPS_FILE) && !String(data).includes(before.baseUrl),
696
+ (target, data, before) => target.includes(PACKAGE_BUILD_PROPS_FILE) && !String(data).includes(before.buildId),
697
697
  ],
698
698
  ])('keeps the last build when %s fails, cleans up and retries on the next save', async (_, message, name, fails) => {
699
699
  await dev.init();
700
700
  const before = await props();
701
- const builtId = before.baseUrl.split('/').pop();
701
+ const builtId = before.buildId;
702
702
  await fse.ensureDir(join(buildsDir, 'stale'));
703
703
  const spy = failOnce(name, fails, message, before);
704
704
  try {
@@ -721,8 +721,8 @@ describe('PackagesDev', () => {
721
721
  await dev.onFileChange('charts.mdx', 'page');
722
722
  await until(() => dev.getStatus().state === 'ready');
723
723
  const after = await props();
724
- expect(after.baseUrl).not.toBe(before.baseUrl);
725
- expect((await fse.readdir(buildsDir)).sort()).toEqual([builtId, after.baseUrl.split('/').pop()].sort());
724
+ expect(after.buildId).not.toBe(before.buildId);
725
+ expect((await fse.readdir(buildsDir)).sort()).toEqual([builtId, after.buildId].sort());
726
726
  });
727
727
  });
728
728
  it('stays off without a packages key and turns on when docs.json adds one', async () => {
@@ -744,7 +744,7 @@ describe('PackagesDev', () => {
744
744
  expect(await mtime('generated.mdx')).toBeGreaterThan(0);
745
745
  await until(() => rebuilt === 1);
746
746
  expect(dev.enabled).toBe(true);
747
- expect((await props()).baseUrl).toMatch(/^\/_mintlify\/pkg\/b/);
747
+ expect((await props()).buildId).toMatch(/^b/);
748
748
  await fse.outputFile(join(propsPath, 'charts.mdx'), 'stale compile');
749
749
  await fse.outputJson(join(docsRoot, 'package.json'), {
750
750
  dependencies: { recharts: '2.15.4', '@acme/ui': '1.0.0' },
@@ -758,7 +758,7 @@ describe('PackagesDev', () => {
758
758
  const settle = () => new Promise((resolve) => setTimeout(resolve, 50));
759
759
  it('starts with packages off, shows the schema errors and turns on once it is valid', async () => {
760
760
  await fse.outputJson(join(docsRoot, 'docs.json'), { name: 'Docs', packages: 'nope' });
761
- await fse.outputJson(join(propsPath, PACKAGE_BUILD_PROPS_FILE), { baseUrl: '/stale' });
761
+ await fse.outputJson(join(propsPath, PACKAGE_BUILD_PROPS_FILE), { buildId: 'stale' });
762
762
  await dev.init();
763
763
  expect(dev.enabled).toBe(false);
764
764
  expect(dev.getStatus()).toEqual({ state: 'disabled' });
@@ -788,7 +788,7 @@ describe('PackagesDev', () => {
788
788
  await until(() => rebuilt === 1);
789
789
  expect(dev.enabled).toBe(true);
790
790
  expect(dev.getStatus()).toEqual({ state: 'ready' });
791
- expect((await props()).baseUrl).toMatch(/^\/_mintlify\/pkg\/b/);
791
+ expect((await props()).buildId).toMatch(/^b/);
792
792
  expect(report.calls).toEqual(['building', 'built']);
793
793
  });
794
794
  it('keeps the last packages setup and shows the schema errors until it is valid again', async () => {
@@ -982,7 +982,7 @@ describe('PackagesDev', () => {
982
982
  });
983
983
  it('starts with packages off and turns them on once it parses', async () => {
984
984
  await fse.outputFile(join(docsRoot, 'docs.json'), INVALID);
985
- await fse.outputJson(join(propsPath, PACKAGE_BUILD_PROPS_FILE), { baseUrl: '/stale' });
985
+ await fse.outputJson(join(propsPath, PACKAGE_BUILD_PROPS_FILE), { buildId: 'stale' });
986
986
  await dev.init();
987
987
  expect(dev.enabled).toBe(false);
988
988
  expect(dev.getStatus()).toEqual({ state: 'disabled' });
@@ -995,7 +995,7 @@ describe('PackagesDev', () => {
995
995
  await until(() => rebuilt === 1);
996
996
  expect(dev.enabled).toBe(true);
997
997
  expect(dev.getStatus()).toEqual({ state: 'ready' });
998
- expect((await props()).baseUrl).toMatch(/^\/_mintlify\/pkg\/b/);
998
+ expect((await props()).buildId).toMatch(/^b/);
999
999
  });
1000
1000
  });
1001
1001
  it('keeps the packages setup while package.json does not parse, and drops the names once it is deleted', async () => {
@@ -42,7 +42,7 @@ describe('package setup config references', () => {
42
42
  tailwindSelectors: [],
43
43
  variables,
44
44
  packageBuild: {
45
- baseUrl: '/_mintlify/pkg/synthetic',
45
+ buildId: 'synthetic',
46
46
  islands: Object.fromEntries(collected.islands.map(({ id }) => [id, { prefix: `mi-${id}-`, html: '<button />' }])),
47
47
  packageNames: [...packageNames],
48
48
  packageSnippets: [...collected.packageSnippets],
@@ -1,5 +1,5 @@
1
1
  import type { BuildResult } from '@mintlify/package-builder';
2
- import { type PackageRouteState } from './serve.js';
2
+ import type { PackageRouteState } from './serve.js';
3
3
  export declare const PACKAGE_BUILD_PROPS_FILE = "package-build.json";
4
4
  export type PackagesDevStatus = {
5
5
  state: 'disabled';
@@ -7,7 +7,6 @@ import { formatDiagnostic, loadPackageBuilder } from '../../packages/builder.js'
7
7
  import { formatProblem, PackageIslandCollector, } from '../../packages/collect.js';
8
8
  import { errnoCode } from '../../packages/errno.js';
9
9
  import { DocsJsonError, InvalidPackagesError, readPackagesSetup, } from '../../packages/setup.js';
10
- import { PACKAGE_ROUTE_PREFIX } from './serve.js';
11
10
  import { setPackageImportOptions } from './state.js';
12
11
  export const PACKAGE_BUILD_PROPS_FILE = 'package-build.json';
13
12
  const PENDING_BUILD_ID = 'pending';
@@ -153,7 +152,6 @@ export class PackagesDev {
153
152
  return;
154
153
  }
155
154
  const buildId = this.adopted?.buildId ?? PENDING_BUILD_ID;
156
- const baseUrl = `${PACKAGE_ROUTE_PREFIX}/${buildId}`;
157
155
  const built = this.adopted?.manifest.islands ?? {};
158
156
  const collectedIds = this.collected.islands.map((island) => island.id);
159
157
  const islands = {};
@@ -172,7 +170,7 @@ export class PackagesDev {
172
170
  this.listedIds.add(id);
173
171
  const tmp = `${target}.${process.pid}.tmp`;
174
172
  const props = {
175
- baseUrl,
173
+ buildId,
176
174
  islands,
177
175
  packageNames: [...this.setup.packageNames].sort(),
178
176
  packageSnippets: [...this.collected.packageSnippets].sort(),