diff --git a/src/Asset.ts b/src/Asset.ts index 610c522c..81e56862 100644 --- a/src/Asset.ts +++ b/src/Asset.ts @@ -18,6 +18,7 @@ export default class Asset { public dataFormat?: DataFormat; public dependencies: Asset[]; public clean?: boolean; + public provenance?: AssetId; /** * Construct an Asset. @@ -46,6 +47,10 @@ export default class Asset { this.dependencies = []; } + setProvenance(id: AssetId | undefined) { + this.provenance = id; + } + setData (data: AssetData | undefined, dataFormat: DataFormat | undefined, generateId?: boolean) { if (data && !dataFormat) { throw new Error('Data provided without specifying its format'); diff --git a/src/ScratchStorage.ts b/src/ScratchStorage.ts index 4d51ffbd..03780db8 100644 --- a/src/ScratchStorage.ts +++ b/src/ScratchStorage.ts @@ -14,6 +14,13 @@ interface HelperWithPriority { priority: number } +export interface StoreMetadata { + /** + * The assetId of the asset that the currently uploaded one is based on. + */ + provenance?: AssetId; +} + export class ScratchStorage { public defaultAssetId: Record; public builtinHelper: BuiltinHelper; @@ -246,10 +253,11 @@ export class ScratchStorage { * @param {AssetType} assetType - The type of asset to fetch. This also determines which asset store to use. * @param {?DataFormat} [dataFormat] - Optional: load this format instead of the AssetType's default. * @param {Buffer} data - Data to store for the asset - * @param {?string} [assetId] - The ID of the asset to fetch: a project ID, MD5, etc. + * @param {?string} [assetId] - The ID of the asset to store: a project ID, MD5, etc. + * @param {?object} [_storeMetadata] - Optional: metadata for the save operation * @return {Promise.} A promise for asset metadata */ - store (assetType: AssetType, dataFormat: DataFormat | null | undefined, data: AssetData, assetId?: AssetId) { + store (assetType: AssetType, dataFormat: DataFormat | null | undefined, data: AssetData, assetId?: AssetId, _storeMetadata?: StoreMetadata) { dataFormat = dataFormat || assetType.runtimeFormat; return this.webHelper.store(assetType, dataFormat, data, assetId) diff --git a/src/index.ts b/src/index.ts index 37a8830b..f6892e73 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,4 +1,4 @@ -import {ScratchStorage} from './ScratchStorage'; +import {ScratchStorage, StoreMetadata} from './ScratchStorage'; import Asset, {AssetId} from './Asset'; import {AssetType} from './AssetType'; import {DataFormat} from './DataFormat'; @@ -15,5 +15,6 @@ export { AssetId, AssetType, DataFormat, - Helper + Helper, + StoreMetadata };