export async function downloadFiddle()

in source-control-sample/src/fiddleRepository.ts [68:100]


export async function downloadFiddle(slug: string, version: number | undefined): Promise<Fiddle> {

	if (slug === "demo") {
		// use mock fiddle
		if (demoVersionOffset === undefined && version === undefined) { version = 0; }
		if (demoVersionOffset === undefined) { demoVersionOffset = version; }
		const maxDemoVersion = DEMO.length - 1 + demoVersionOffset;
		if (version === undefined) { version = maxDemoVersion; }

		if (version >= 0 && version <= maxDemoVersion) {
			// mock all versions committed in previous sessions by the first version
			const index = Math.max(0, version - demoVersionOffset);
			const fiddleData = DEMO[index];
			return new Fiddle(slug, version, fiddleData);
		}
		else {
			throw new Error("Invalid demo fiddle version.");
		}
	}

	const id = toFiddleId(slug, version);

	return new Promise<Fiddle>((resolve, reject) => {
		JSFiddle.getFiddle(id, (err: any, fiddleData: any) => {
			// handle error
			if (err) { reject(err); }

			const fiddle = new Fiddle(slug, version, fiddleData);

			resolve(fiddle);
		});
	});
}