@remotion/studio-server 4.0.91

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 (108) hide show
  1. package/.eslintrc +13 -0
  2. package/.turbo/turbo-build.log +4 -0
  3. package/LICENSE.md +45 -0
  4. package/README.md +3 -0
  5. package/dist/ansi-diff.d.ts +41 -0
  6. package/dist/ansi-diff.js +220 -0
  7. package/dist/better-opn/index.d.ts +6 -0
  8. package/dist/better-opn/index.js +202 -0
  9. package/dist/codemods/update-default-props.d.ts +7 -0
  10. package/dist/codemods/update-default-props.js +137 -0
  11. package/dist/file-watcher.d.ts +9 -0
  12. package/dist/file-watcher.js +35 -0
  13. package/dist/get-latest-remotion-version.d.ts +1 -0
  14. package/dist/get-latest-remotion-version.js +31 -0
  15. package/dist/get-network-address.d.ts +1 -0
  16. package/dist/get-network-address.js +16 -0
  17. package/dist/helpers/get-file-source.d.ts +1 -0
  18. package/dist/helpers/get-file-source.js +22 -0
  19. package/dist/helpers/open-in-editor.d.ts +16 -0
  20. package/dist/helpers/open-in-editor.js +503 -0
  21. package/dist/index.d.ts +58 -0
  22. package/dist/index.js +27 -0
  23. package/dist/max-timeline-tracks.d.ts +2 -0
  24. package/dist/max-timeline-tracks.js +25 -0
  25. package/dist/open-directory-in-finder.d.ts +1 -0
  26. package/dist/open-directory-in-finder.js +49 -0
  27. package/dist/preview-server/api-routes.d.ts +5 -0
  28. package/dist/preview-server/api-routes.js +25 -0
  29. package/dist/preview-server/api-types.d.ts +23 -0
  30. package/dist/preview-server/api-types.js +2 -0
  31. package/dist/preview-server/dev-middleware/compatible-api.d.ts +7 -0
  32. package/dist/preview-server/dev-middleware/compatible-api.js +20 -0
  33. package/dist/preview-server/dev-middleware/get-paths.d.ts +7 -0
  34. package/dist/preview-server/dev-middleware/get-paths.js +19 -0
  35. package/dist/preview-server/dev-middleware/index.d.ts +3 -0
  36. package/dist/preview-server/dev-middleware/index.js +27 -0
  37. package/dist/preview-server/dev-middleware/middleware.d.ts +9 -0
  38. package/dist/preview-server/dev-middleware/middleware.js +222 -0
  39. package/dist/preview-server/dev-middleware/range-parser.d.ts +15 -0
  40. package/dist/preview-server/dev-middleware/range-parser.js +96 -0
  41. package/dist/preview-server/dev-middleware/ready.d.ts +3 -0
  42. package/dist/preview-server/dev-middleware/ready.js +11 -0
  43. package/dist/preview-server/dev-middleware/setup-hooks.d.ts +2 -0
  44. package/dist/preview-server/dev-middleware/setup-hooks.js +52 -0
  45. package/dist/preview-server/dev-middleware/setup-output-filesystem.d.ts +2 -0
  46. package/dist/preview-server/dev-middleware/setup-output-filesystem.js +13 -0
  47. package/dist/preview-server/dev-middleware/types.d.ts +10 -0
  48. package/dist/preview-server/dev-middleware/types.js +2 -0
  49. package/dist/preview-server/env-supports-fs-recursive.d.ts +1 -0
  50. package/dist/preview-server/env-supports-fs-recursive.js +18 -0
  51. package/dist/preview-server/file-existence-watchers.d.ts +13 -0
  52. package/dist/preview-server/file-existence-watchers.js +62 -0
  53. package/dist/preview-server/get-absolute-public-dir.d.ts +4 -0
  54. package/dist/preview-server/get-absolute-public-dir.js +14 -0
  55. package/dist/preview-server/get-package-manager.d.ts +10 -0
  56. package/dist/preview-server/get-package-manager.js +62 -0
  57. package/dist/preview-server/handler.d.ts +12 -0
  58. package/dist/preview-server/handler.js +36 -0
  59. package/dist/preview-server/hot-middleware/index.d.ts +102 -0
  60. package/dist/preview-server/hot-middleware/index.js +149 -0
  61. package/dist/preview-server/hot-middleware/types.d.ts +2 -0
  62. package/dist/preview-server/hot-middleware/types.js +2 -0
  63. package/dist/preview-server/live-events.d.ts +10 -0
  64. package/dist/preview-server/live-events.js +76 -0
  65. package/dist/preview-server/parse-body.d.ts +2 -0
  66. package/dist/preview-server/parse-body.js +16 -0
  67. package/dist/preview-server/project-info.d.ts +2 -0
  68. package/dist/preview-server/project-info.js +32 -0
  69. package/dist/preview-server/public-folder.d.ts +12 -0
  70. package/dist/preview-server/public-folder.js +58 -0
  71. package/dist/preview-server/routes/add-render.d.ts +3 -0
  72. package/dist/preview-server/routes/add-render.js +122 -0
  73. package/dist/preview-server/routes/can-update-default-props.d.ts +4 -0
  74. package/dist/preview-server/routes/can-update-default-props.js +40 -0
  75. package/dist/preview-server/routes/cancel-render.d.ts +3 -0
  76. package/dist/preview-server/routes/cancel-render.js +8 -0
  77. package/dist/preview-server/routes/copy-still-to-clipboard-handler.d.ts +3 -0
  78. package/dist/preview-server/routes/copy-still-to-clipboard-handler.js +17 -0
  79. package/dist/preview-server/routes/open-in-file-explorer.d.ts +3 -0
  80. package/dist/preview-server/routes/open-in-file-explorer.js +8 -0
  81. package/dist/preview-server/routes/remove-render.d.ts +3 -0
  82. package/dist/preview-server/routes/remove-render.js +8 -0
  83. package/dist/preview-server/routes/subscribe-to-file-existence.d.ts +3 -0
  84. package/dist/preview-server/routes/subscribe-to-file-existence.js +13 -0
  85. package/dist/preview-server/routes/unsubscribe-from-file-existence.d.ts +3 -0
  86. package/dist/preview-server/routes/unsubscribe-from-file-existence.js +13 -0
  87. package/dist/preview-server/routes/update-available.d.ts +3 -0
  88. package/dist/preview-server/routes/update-available.js +9 -0
  89. package/dist/preview-server/routes/update-default-props.d.ts +3 -0
  90. package/dist/preview-server/routes/update-default-props.js +34 -0
  91. package/dist/preview-server/serve-static.d.ts +14 -0
  92. package/dist/preview-server/serve-static.js +75 -0
  93. package/dist/preview-server/start-server.d.ts +31 -0
  94. package/dist/preview-server/start-server.js +123 -0
  95. package/dist/preview-server/update-available.d.ts +3 -0
  96. package/dist/preview-server/update-available.js +47 -0
  97. package/dist/routes.d.ts +24 -0
  98. package/dist/routes.js +242 -0
  99. package/dist/server-ready.d.ts +2 -0
  100. package/dist/server-ready.js +13 -0
  101. package/dist/start-studio.d.ts +26 -0
  102. package/dist/start-studio.js +117 -0
  103. package/dist/watch-root-file.d.ts +1 -0
  104. package/dist/watch-root-file.js +22 -0
  105. package/package.json +54 -0
  106. package/tsconfig.tsbuildinfo +1 -0
  107. package/web/beep.wav +0 -0
  108. package/web/favicon.png +0 -0
@@ -0,0 +1,96 @@
1
+ "use strict";
2
+ /*!
3
+ * range-parser
4
+ * Copyright(c) 2012-2014 TJ Holowaychuk
5
+ * Copyright(c) 2015-2016 Douglas Christopher Wilson
6
+ * MIT Licensed
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.parseRange = void 0;
10
+ function parseRange(size, str) {
11
+ if (typeof str !== 'string') {
12
+ throw new TypeError('argument str must be a string');
13
+ }
14
+ const index = str.indexOf('=');
15
+ if (index === -1) {
16
+ return -2;
17
+ }
18
+ // split the range string
19
+ const arr = str.slice(index + 1).split(',');
20
+ const ranges = [];
21
+ // add ranges type
22
+ ranges.type = str.slice(0, index);
23
+ // parse all ranges
24
+ for (let i = 0; i < arr.length; i++) {
25
+ const range = arr[i].split('-');
26
+ let start = parseInt(range[0], 10);
27
+ let end = parseInt(range[1], 10);
28
+ // -nnn
29
+ if (isNaN(start)) {
30
+ start = size - end;
31
+ end = size - 1;
32
+ // nnn-
33
+ }
34
+ else if (isNaN(end)) {
35
+ end = size - 1;
36
+ }
37
+ // limit last-byte-pos to current length
38
+ if (end > size - 1) {
39
+ end = size - 1;
40
+ }
41
+ // invalid or unsatisifiable
42
+ if (isNaN(start) || isNaN(end) || start > end || start < 0) {
43
+ continue;
44
+ }
45
+ // add range
46
+ ranges.push({
47
+ start,
48
+ end,
49
+ });
50
+ }
51
+ if (ranges.length < 1) {
52
+ return -1;
53
+ }
54
+ return combineRanges(ranges);
55
+ }
56
+ exports.parseRange = parseRange;
57
+ function combineRanges(ranges) {
58
+ const ordered = ranges.map(mapWithIndex).sort(sortByRangeStart);
59
+ let j = 0;
60
+ for (let i = 1; i < ordered.length; i++) {
61
+ const range = ordered[i];
62
+ const current = ordered[j];
63
+ if (range.start > current.end + 1) {
64
+ // next range
65
+ ordered[++j] = range;
66
+ }
67
+ else if (range.end > current.end) {
68
+ // extend range
69
+ current.end = range.end;
70
+ current.index = Math.min(current.index, range.index);
71
+ }
72
+ }
73
+ ordered.length = j + 1;
74
+ const combined = ordered.sort(sortByRangeIndex).map(mapWithoutIndex);
75
+ combined.type = ranges.type;
76
+ return combined;
77
+ }
78
+ function mapWithIndex(range, index) {
79
+ return {
80
+ start: range.start,
81
+ end: range.end,
82
+ index,
83
+ };
84
+ }
85
+ function mapWithoutIndex(range) {
86
+ return {
87
+ start: range.start,
88
+ end: range.end,
89
+ };
90
+ }
91
+ function sortByRangeIndex(a, b) {
92
+ return a.index - b.index;
93
+ }
94
+ function sortByRangeStart(a, b) {
95
+ return a.start - b.start;
96
+ }
@@ -0,0 +1,3 @@
1
+ import type { webpack } from '@remotion/bundler';
2
+ import type { DevMiddlewareContext } from './types';
3
+ export declare function ready(context: DevMiddlewareContext, callback: (stats: webpack.Stats | undefined) => undefined | Promise<void>): void;
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ready = void 0;
4
+ function ready(context, callback) {
5
+ if (context.state) {
6
+ callback(context.stats);
7
+ return;
8
+ }
9
+ context.callbacks.push(callback);
10
+ }
11
+ exports.ready = ready;
@@ -0,0 +1,2 @@
1
+ import type { DevMiddlewareContext } from './types';
2
+ export declare function setupHooks(context: DevMiddlewareContext): void;
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.setupHooks = void 0;
4
+ const renderer_1 = require("@remotion/renderer");
5
+ const no_react_1 = require("remotion/no-react");
6
+ function setupHooks(context) {
7
+ function invalid() {
8
+ // We are now in invalid state
9
+ context.state = false;
10
+ context.stats = undefined;
11
+ }
12
+ function done(stats) {
13
+ context.state = true;
14
+ context.stats = stats;
15
+ // Do the stuff in nextTick, because bundle may be invalidated if a change happened while compiling
16
+ process.nextTick(() => {
17
+ const { logger, state, callbacks } = context;
18
+ // Check if still in valid state
19
+ if (!state || !stats) {
20
+ return;
21
+ }
22
+ logger.log('Compilation finished');
23
+ const statsOptions = {
24
+ preset: 'errors-warnings',
25
+ colors: renderer_1.RenderInternals.isColorSupported(),
26
+ };
27
+ const printedStats = stats.toString(statsOptions);
28
+ const lines = printedStats
29
+ .split('\n')
30
+ .map((a) => a.trimEnd())
31
+ .filter(no_react_1.NoReactInternals.truthy)
32
+ .map((a) => {
33
+ if (a.startsWith('webpack compiled')) {
34
+ return `Built in ${stats.endTime - stats.startTime}ms`;
35
+ }
36
+ return a;
37
+ })
38
+ .join('\n');
39
+ if (lines) {
40
+ renderer_1.RenderInternals.Log.info(lines);
41
+ }
42
+ context.callbacks = [];
43
+ callbacks.forEach((callback) => {
44
+ callback(stats);
45
+ });
46
+ });
47
+ }
48
+ context.compiler.hooks.watchRun.tap('remotion', invalid);
49
+ context.compiler.hooks.invalid.tap('remotion', invalid);
50
+ context.compiler.hooks.done.tap('remotion', done);
51
+ }
52
+ exports.setupHooks = setupHooks;
@@ -0,0 +1,2 @@
1
+ import type { DevMiddlewareContext } from './types';
2
+ export declare function setupOutputFileSystem(context: DevMiddlewareContext): void;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.setupOutputFileSystem = void 0;
7
+ const memfs_1 = __importDefault(require("memfs"));
8
+ function setupOutputFileSystem(context) {
9
+ const outputFileSystem = memfs_1.default.createFsFromVolume(new memfs_1.default.Volume());
10
+ context.compiler.outputFileSystem = outputFileSystem;
11
+ context.outputFileSystem = outputFileSystem;
12
+ }
13
+ exports.setupOutputFileSystem = setupOutputFileSystem;
@@ -0,0 +1,10 @@
1
+ import type { webpack } from '@remotion/bundler';
2
+ import type memfs from 'memfs';
3
+ export type DevMiddlewareContext = {
4
+ state: boolean;
5
+ stats: webpack.Stats | undefined;
6
+ callbacks: ((stats: webpack.Stats) => undefined | Promise<void>)[];
7
+ compiler: webpack.Compiler;
8
+ logger: ReturnType<webpack.Compiler['getInfrastructureLogger']>;
9
+ outputFileSystem: memfs.IFs | undefined;
10
+ };
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1 @@
1
+ export declare const envSupportsFsRecursive: () => boolean;
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.envSupportsFsRecursive = void 0;
4
+ const envSupportsFsRecursive = () => {
5
+ const nodeVersion = process.version.replace('v', '').split('.');
6
+ if (process.platform === 'darwin' || process.platform === 'win32') {
7
+ return true;
8
+ }
9
+ if (parseInt(nodeVersion[0], 10) > 19) {
10
+ return true;
11
+ }
12
+ if (parseInt(nodeVersion[0], 10) === 19 &&
13
+ parseInt(nodeVersion[1], 10) >= 1) {
14
+ return true;
15
+ }
16
+ return false;
17
+ };
18
+ exports.envSupportsFsRecursive = envSupportsFsRecursive;
@@ -0,0 +1,13 @@
1
+ export declare const subscribeToFileExistenceWatchers: ({ file: relativeFile, remotionRoot, clientId, }: {
2
+ file: string;
3
+ remotionRoot: string;
4
+ clientId: string;
5
+ }) => {
6
+ exists: boolean;
7
+ };
8
+ export declare const unsubscribeFromFileExistenceWatchers: ({ file, remotionRoot, clientId, }: {
9
+ file: string;
10
+ remotionRoot: string;
11
+ clientId: string;
12
+ }) => void;
13
+ export declare const unsubscribeClientFileExistenceWatchers: (clientId: string) => void;
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.unsubscribeClientFileExistenceWatchers = exports.unsubscribeFromFileExistenceWatchers = exports.subscribeToFileExistenceWatchers = void 0;
7
+ const node_path_1 = __importDefault(require("node:path"));
8
+ const file_watcher_1 = require("../file-watcher");
9
+ const live_events_1 = require("./live-events");
10
+ const fileExistenceWatchers = {};
11
+ const subscribeToFileExistenceWatchers = ({ file: relativeFile, remotionRoot, clientId, }) => {
12
+ const file = node_path_1.default.resolve(remotionRoot, relativeFile);
13
+ const { unwatch, exists } = (0, file_watcher_1.installFileWatcher)({
14
+ file,
15
+ onChange: (type) => {
16
+ if (type === 'created') {
17
+ (0, live_events_1.waitForLiveEventsListener)().then((listener) => {
18
+ listener.sendEventToClient({
19
+ type: 'watched-file-undeleted',
20
+ // Must be relative file because that's what the client expects
21
+ file: relativeFile,
22
+ });
23
+ });
24
+ }
25
+ if (type === 'deleted') {
26
+ (0, live_events_1.waitForLiveEventsListener)().then((listener) => {
27
+ listener.sendEventToClient({
28
+ type: 'watched-file-deleted',
29
+ // Must be relative file because that's what the client expects
30
+ file: relativeFile,
31
+ });
32
+ });
33
+ }
34
+ },
35
+ });
36
+ if (!fileExistenceWatchers[clientId]) {
37
+ fileExistenceWatchers[clientId] = {};
38
+ }
39
+ fileExistenceWatchers[clientId][file] = unwatch;
40
+ return { exists };
41
+ };
42
+ exports.subscribeToFileExistenceWatchers = subscribeToFileExistenceWatchers;
43
+ const unsubscribeFromFileExistenceWatchers = ({ file, remotionRoot, clientId, }) => {
44
+ var _a, _b;
45
+ const actualPath = node_path_1.default.resolve(remotionRoot, file);
46
+ if (!fileExistenceWatchers[clientId]) {
47
+ return;
48
+ }
49
+ (_b = (_a = fileExistenceWatchers[clientId])[actualPath]) === null || _b === void 0 ? void 0 : _b.call(_a);
50
+ delete fileExistenceWatchers[clientId][actualPath];
51
+ };
52
+ exports.unsubscribeFromFileExistenceWatchers = unsubscribeFromFileExistenceWatchers;
53
+ const unsubscribeClientFileExistenceWatchers = (clientId) => {
54
+ if (!fileExistenceWatchers[clientId]) {
55
+ return;
56
+ }
57
+ Object.values(fileExistenceWatchers[clientId]).forEach((unwatch) => {
58
+ unwatch();
59
+ });
60
+ delete fileExistenceWatchers[clientId];
61
+ };
62
+ exports.unsubscribeClientFileExistenceWatchers = unsubscribeClientFileExistenceWatchers;
@@ -0,0 +1,4 @@
1
+ export declare const getAbsolutePublicDir: ({ userPassedPublicDir, remotionRoot, }: {
2
+ userPassedPublicDir: string | null;
3
+ remotionRoot: string;
4
+ }) => string;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.getAbsolutePublicDir = void 0;
7
+ const node_path_1 = __importDefault(require("node:path"));
8
+ const getAbsolutePublicDir = ({ userPassedPublicDir, remotionRoot, }) => {
9
+ const publicDir = userPassedPublicDir
10
+ ? node_path_1.default.resolve(remotionRoot, userPassedPublicDir)
11
+ : node_path_1.default.join(remotionRoot, 'public');
12
+ return publicDir;
13
+ };
14
+ exports.getAbsolutePublicDir = getAbsolutePublicDir;
@@ -0,0 +1,10 @@
1
+ import type { PackageManager } from '@remotion/studio-shared';
2
+ type LockfilePath = {
3
+ manager: PackageManager;
4
+ path: string;
5
+ installCommand: string;
6
+ startCommand: string;
7
+ };
8
+ export declare const lockFilePaths: LockfilePath[];
9
+ export declare const getPackageManager: (remotionRoot: string, packageManager: string | undefined) => LockfilePath | 'unknown';
10
+ export {};
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.getPackageManager = exports.lockFilePaths = void 0;
7
+ const node_fs_1 = __importDefault(require("node:fs"));
8
+ const node_path_1 = __importDefault(require("node:path"));
9
+ exports.lockFilePaths = [
10
+ {
11
+ path: 'package-lock.json',
12
+ manager: 'npm',
13
+ installCommand: 'npm i',
14
+ startCommand: 'npm start',
15
+ },
16
+ {
17
+ path: 'yarn.lock',
18
+ manager: 'yarn',
19
+ installCommand: 'yarn add',
20
+ startCommand: 'yarn start',
21
+ },
22
+ {
23
+ path: 'pnpm-lock.yaml',
24
+ manager: 'pnpm',
25
+ installCommand: 'pnpm i',
26
+ startCommand: 'pnpm start',
27
+ },
28
+ {
29
+ path: 'bun.lockb',
30
+ manager: 'bun',
31
+ installCommand: 'bun i',
32
+ startCommand: 'bun start',
33
+ },
34
+ ];
35
+ const getPackageManager = (remotionRoot, packageManager) => {
36
+ if (packageManager) {
37
+ const manager = exports.lockFilePaths.find((p) => p.manager === packageManager);
38
+ if (!manager) {
39
+ throw new Error(`The package manager ${packageManager} is not supported. Supported package managers are ${exports.lockFilePaths
40
+ .map((p) => p.manager)
41
+ .join(', ')}`);
42
+ }
43
+ return manager;
44
+ }
45
+ const existingPkgManagers = exports.lockFilePaths.filter((p) => node_fs_1.default.existsSync(node_path_1.default.join(remotionRoot, p.path)));
46
+ if (existingPkgManagers.length === 0) {
47
+ return 'unknown';
48
+ }
49
+ if (existingPkgManagers.length > 1) {
50
+ const error = [
51
+ `Found multiple lockfiles:`,
52
+ ...existingPkgManagers.map((m) => {
53
+ return `- ${m.path}`;
54
+ }),
55
+ '',
56
+ 'This can lead to bugs, delete all but one of these files and run this command again.',
57
+ ].join('\n');
58
+ throw new Error(error);
59
+ }
60
+ return existingPkgManagers[0];
61
+ };
62
+ exports.getPackageManager = getPackageManager;
@@ -0,0 +1,12 @@
1
+ import type { LogLevel } from '@remotion/renderer';
2
+ import type { IncomingMessage, ServerResponse } from 'node:http';
3
+ import type { ApiHandler, QueueMethods } from './api-types';
4
+ export declare const handleRequest: <Req, Res>({ remotionRoot, request, response, entryPoint, handler, logLevel, methods, }: {
5
+ remotionRoot: string;
6
+ request: IncomingMessage;
7
+ response: ServerResponse;
8
+ entryPoint: string;
9
+ handler: ApiHandler<Req, Res>;
10
+ logLevel: LogLevel;
11
+ methods: QueueMethods;
12
+ }) => Promise<void>;
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.handleRequest = void 0;
4
+ const parse_body_1 = require("./parse-body");
5
+ const handleRequest = async ({ remotionRoot, request, response, entryPoint, handler, logLevel, methods, }) => {
6
+ if (request.method === 'OPTIONS') {
7
+ response.statusCode = 200;
8
+ response.end();
9
+ return;
10
+ }
11
+ response.setHeader('content-type', 'application/json');
12
+ response.writeHead(200);
13
+ try {
14
+ const body = (await (0, parse_body_1.parseRequestBody)(request));
15
+ const outputData = await handler({
16
+ entryPoint,
17
+ remotionRoot,
18
+ request,
19
+ response,
20
+ input: body,
21
+ logLevel,
22
+ methods,
23
+ });
24
+ response.end(JSON.stringify({
25
+ success: true,
26
+ data: outputData,
27
+ }));
28
+ }
29
+ catch (err) {
30
+ response.end(JSON.stringify({
31
+ success: false,
32
+ error: err.message,
33
+ }));
34
+ }
35
+ };
36
+ exports.handleRequest = handleRequest;
@@ -0,0 +1,102 @@
1
+ /**
2
+ * Source code is adapted from
3
+ * https://github.com/webpack-contrib/webpack-hot-middleware#readme
4
+ * and rewritten in TypeScript. This file is MIT licensed
5
+ */
6
+ import type { webpack } from '@remotion/bundler';
7
+ import type { IncomingMessage, ServerResponse } from 'node:http';
8
+ declare global {
9
+ const __webpack_hash__: unknown;
10
+ interface HotNotifierInfo {
11
+ type: 'self-declined' | 'declined' | 'unaccepted' | 'accepted' | 'disposed' | 'accept-errored' | 'self-accept-errored' | 'self-accept-error-handler-errored';
12
+ /**
13
+ * The module in question.
14
+ */
15
+ moduleId: number;
16
+ /**
17
+ * For errors: the module id owning the accept handler.
18
+ */
19
+ dependencyId?: number | undefined;
20
+ /**
21
+ * For declined/accepted/unaccepted: the chain from where the update was propagated.
22
+ */
23
+ chain?: number[] | undefined;
24
+ /**
25
+ * For declined: the module id of the declining parent
26
+ */
27
+ parentId?: number | undefined;
28
+ /**
29
+ * For accepted: the modules that are outdated and will be disposed
30
+ */
31
+ outdatedModules?: number[] | undefined;
32
+ /**
33
+ * For accepted: The location of accept handlers that will handle the update
34
+ */
35
+ outdatedDependencies?: {
36
+ [dependencyId: number]: number[];
37
+ } | undefined;
38
+ /**
39
+ * For errors: the thrown error
40
+ */
41
+ error?: Error | undefined;
42
+ /**
43
+ * For self-accept-error-handler-errored: the error thrown by the module
44
+ * before the error handler tried to handle it.
45
+ */
46
+ originalError?: Error | undefined;
47
+ }
48
+ interface AcceptOptions {
49
+ /**
50
+ * If true the update process continues even if some modules are not accepted (and would bubble to the entry point).
51
+ */
52
+ ignoreUnaccepted?: boolean | undefined;
53
+ /**
54
+ * Ignore changes made to declined modules.
55
+ */
56
+ ignoreDeclined?: boolean | undefined;
57
+ /**
58
+ * Ignore errors throw in accept handlers, error handlers and while reevaluating module.
59
+ */
60
+ ignoreErrored?: boolean | undefined;
61
+ /**
62
+ * Notifier for declined modules.
63
+ */
64
+ onDeclined?: ((info: HotNotifierInfo) => void) | undefined;
65
+ /**
66
+ * Notifier for unaccepted modules.
67
+ */
68
+ onUnaccepted?: ((info: HotNotifierInfo) => void) | undefined;
69
+ /**
70
+ * Notifier for accepted modules.
71
+ */
72
+ onAccepted?: ((info: HotNotifierInfo) => void) | undefined;
73
+ /**
74
+ * Notifier for disposed modules.
75
+ */
76
+ onDisposed?: ((info: HotNotifierInfo) => void) | undefined;
77
+ /**
78
+ * Notifier for errors.
79
+ */
80
+ onErrored?: ((info: HotNotifierInfo) => void) | undefined;
81
+ /**
82
+ * Indicates that apply() is automatically called by check function
83
+ */
84
+ autoApply?: boolean | undefined;
85
+ }
86
+ const __webpack_module__: {
87
+ id: string;
88
+ exports: unknown;
89
+ hot: {
90
+ accept: () => void;
91
+ dispose: (onDispose: (data: Record<string, unknown>) => void) => void;
92
+ invalidate: () => void;
93
+ data?: Record<string, unknown>;
94
+ addStatusHandler(callback: (status: string) => void): void;
95
+ status(): string;
96
+ apply(options?: AcceptOptions): Promise<ModuleId[]>;
97
+ check(autoApply?: boolean): Promise<null | ModuleId[]>;
98
+ };
99
+ };
100
+ type ModuleId = string | number;
101
+ }
102
+ export declare const webpackHotMiddleware: (compiler: webpack.Compiler) => (req: IncomingMessage, res: ServerResponse, next: () => void) => void;