@teambit/objects 0.0.0-f45c102116d0fc7e7f50bf33638de7c592adb5f9 → 0.0.0-f53757d698e1bf51ca2e885c24b33195d3602e08
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.
- package/dist/models/export-metadata.js +0 -2
- package/dist/models/export-metadata.js.map +1 -1
- package/dist/models/lane.d.ts +1 -1
- package/dist/models/model-component.d.ts +1 -1
- package/dist/models/model-component.js +22 -5
- package/dist/models/model-component.js.map +1 -1
- package/dist/models/scopeMeta.js +0 -3
- package/dist/models/scopeMeta.js.map +1 -1
- package/dist/models/source.d.ts +2 -2
- package/dist/models/source.js +0 -1
- package/dist/models/source.js.map +1 -1
- package/dist/models/symlink.d.ts +1 -1
- package/dist/models/version.js +1 -13
- package/dist/models/version.js.map +1 -1
- package/dist/models/version.spec.js +4 -12
- package/dist/models/version.spec.js.map +1 -1
- package/dist/objects/object.js +0 -1
- package/dist/objects/object.js.map +1 -1
- package/dist/objects/raw-object.d.ts +1 -1
- package/dist/objects/raw-object.js +1 -11
- package/dist/objects/raw-object.js.map +1 -1
- package/dist/objects/repository.d.ts +14 -1
- package/dist/objects/repository.js +14 -10
- package/dist/objects/repository.js.map +1 -1
- package/dist/objects/scope-index.js +0 -1
- package/dist/objects/scope-index.js.map +1 -1
- package/models/export-metadata.ts +0 -1
- package/models/model-component.ts +23 -6
- package/models/scopeMeta.ts +0 -2
- package/models/source.ts +0 -1
- package/models/version.spec.ts +4 -12
- package/models/version.ts +1 -15
- package/objects/object.ts +0 -1
- package/objects/raw-object.ts +1 -11
- package/objects/repository.ts +17 -5
- package/objects/scope-index.ts +0 -1
- package/package.json +28 -29
- package/dist/objects/repository-hooks.d.ts +0 -4
- package/dist/objects/repository-hooks.js +0 -56
- package/dist/objects/repository-hooks.js.map +0 -1
- package/objects/repository-hooks.ts +0 -42
- /package/dist/{preview-1754428212310.js → preview-1763480914240.js} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_fsExtra","data","_interopRequireDefault","require","_asyncMutex","path","_interopRequireWildcard","_laneId","_legacy","_legacy2","_models","_lane","_lodash","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","_defineProperty","_toPropertyKey","value","enumerable","configurable","writable","_toPrimitive","Symbol","toPrimitive","TypeError","String","Number","COMPONENTS_INDEX_FILENAME","ComponentItem","constructor","id","isSymlink","hash","toIdentifierString","scope","name","exports","LaneItem","toLaneId","LaneId","IndexType","ScopeIndex","indexPath","index","components","lanes","writeIndexMutex","_writeIndexMutex","Mutex","load","basePath","_composePath","indexRaw","fs","readJson","getIndexWithBackwardCompatibility","Array","isArray","indexObject","map","c","l","err","message","includes","InvalidIndexJson","create","reset","logger","debug","remove","write","runExclusive","writeJson","spaces","getAll","values","flat","getHashes","indexType","indexItem","getHashesByQuery","filter","getHashesIncludeSymlinks","addMany","bitObjects","added","bitObject","addOne","some","oneAdded","ModelComponent","Symlink","Lane","toString","found","find","isEqual","laneItem","push","_exist","componentItem","removeMany","refs","removed","ref","removeOne","removedOne","entity","keys","difference","deleteFile","getPath","isFileOnBitHub","Boolean","join"],"sources":["scope-index.ts"],"sourcesContent":["/* eslint max-classes-per-file: 0 */\nimport fs from 'fs-extra';\nimport { Mutex } from 'async-mutex';\nimport * as path from 'path';\nimport { LaneId } from '@teambit/lane-id';\nimport { logger } from '@teambit/legacy.logger';\nimport { InvalidIndexJson } from '@teambit/legacy.scope';\nimport { ModelComponent, Symlink } from '../models';\nimport Lane from '../models/lane';\nimport type BitObject from './object';\nimport type Ref from './ref';\nimport { difference } from 'lodash';\n\nconst COMPONENTS_INDEX_FILENAME = 'index.json';\n\nexport interface IndexItem {\n hash: string;\n toIdentifierString(): string;\n}\n\nexport class ComponentItem implements IndexItem {\n constructor(\n public id: { scope: string | null; name: string },\n public isSymlink: boolean,\n public hash: string\n ) {}\n\n toIdentifierString(): string {\n const scope = this.id.scope ? `${this.id.scope}/` : '';\n return `component \"${scope}${this.id.name}\"`;\n }\n}\n\nexport class LaneItem implements IndexItem {\n constructor(\n public id: { scope: string; name: string },\n public hash: string\n ) {}\n\n toIdentifierString() {\n const scope = this.id.scope ? `${this.id.scope}/` : '';\n return `lane \"${scope}${this.id.name}\"`;\n }\n\n toLaneId(): LaneId {\n return new LaneId({ name: this.id.name, scope: this.id.scope });\n }\n}\n\nexport enum IndexType {\n components = 'components',\n lanes = 'lanes',\n}\n\ntype Index = { [IndexType.components]: ComponentItem[]; [IndexType.lanes]: LaneItem[] };\n\nexport class ScopeIndex {\n indexPath: string;\n index: Index;\n _writeIndexMutex?: Mutex;\n constructor(indexPath: string, index: Index = { [IndexType.components]: [], [IndexType.lanes]: [] }) {\n this.indexPath = indexPath;\n this.index = index;\n }\n get writeIndexMutex() {\n if (!this._writeIndexMutex) {\n this._writeIndexMutex = new Mutex();\n }\n return this._writeIndexMutex;\n }\n static async load(basePath: string): Promise<ScopeIndex> {\n const indexPath = this._composePath(basePath);\n try {\n const indexRaw = await fs.readJson(indexPath);\n const getIndexWithBackwardCompatibility = (): Index => {\n if (Array.isArray(indexRaw)) {\n return { [IndexType.components]: indexRaw, [IndexType.lanes]: [] };\n }\n return indexRaw;\n };\n const indexObject = getIndexWithBackwardCompatibility();\n const index = {\n [IndexType.components]: indexObject[IndexType.components].map(\n (c) => new ComponentItem(c.id, c.isSymlink, c.hash)\n ),\n [IndexType.lanes]: indexObject[IndexType.lanes].map((l) => new LaneItem(l.id, l.hash)),\n };\n return new ScopeIndex(indexPath, index);\n } catch (err: any) {\n if (err.message.includes('Unexpected token')) {\n throw new InvalidIndexJson(indexPath, err.message);\n }\n throw err;\n }\n }\n static create(basePath: string): ScopeIndex {\n const indexPath = this._composePath(basePath);\n return new ScopeIndex(indexPath);\n }\n static async reset(basePath: string) {\n const indexPath = this._composePath(basePath);\n logger.debug(`ComponentsIndex, deleting the index file at ${indexPath}`);\n await fs.remove(indexPath);\n }\n async write() {\n // write only one at a time to avoid corrupting the json file.\n await this.writeIndexMutex.runExclusive(() => fs.writeJson(this.indexPath, this.index, { spaces: 2 }));\n }\n getAll(): IndexItem[] {\n return Object.values(this.index).flat();\n }\n\n getHashes(indexType: IndexType): string[] {\n // @ts-ignore how to tell TS that all this.index.prop are array?\n return this.index[indexType].map((indexItem: IndexItem) => indexItem.hash);\n }\n getHashesByQuery(indexType: IndexType, filter: Function): string[] {\n // @ts-ignore how to tell TS that all this.index.prop are array?\n return this.index[indexType].filter(filter).map((indexItem: IndexItem) => indexItem.hash);\n }\n getHashesIncludeSymlinks(): string[] {\n return this.index.components.map((indexItem) => indexItem.hash);\n }\n addMany(bitObjects: BitObject[]): boolean {\n const added = bitObjects.map((bitObject) => this.addOne(bitObject));\n return added.some((oneAdded) => oneAdded); // return true if one of the objects was added\n }\n addOne(bitObject: BitObject): boolean {\n if (!(bitObject instanceof ModelComponent) && !(bitObject instanceof Symlink) && !(bitObject instanceof Lane))\n return false;\n const hash = bitObject.hash().toString();\n\n if (bitObject instanceof Lane) {\n const found = this.find(hash) as LaneItem | undefined;\n if (found) {\n if ((found as LaneItem).toLaneId().isEqual(bitObject.toLaneId())) return false;\n found.id = bitObject.toLaneId();\n } else {\n const laneItem = new LaneItem(bitObject.toLaneId(), hash);\n this.index.lanes.push(laneItem);\n }\n return true;\n }\n if (bitObject instanceof ModelComponent || bitObject instanceof Symlink) {\n if (this._exist(hash)) return false;\n const componentItem = new ComponentItem(\n { scope: bitObject.scope || null, name: bitObject.name },\n bitObject instanceof Symlink,\n hash\n );\n this.index.components.push(componentItem);\n }\n return true;\n }\n removeMany(refs: Ref[]): boolean {\n const removed = refs.map((ref) => this.removeOne(ref.toString()));\n return removed.some((removedOne) => removedOne); // return true if one of the objects was removed\n }\n removeOne(hash: string): boolean {\n for (const entity of Object.keys(IndexType)) {\n const found = this.index[entity].find((indexItem) => indexItem.hash === hash);\n if (found) {\n this.index[entity] = difference(this.index[entity], [found]);\n return true;\n }\n }\n return false;\n }\n async deleteFile() {\n logger.debug(`ComponentsIndex, deleting the index file at ${this.indexPath}`);\n await fs.remove(this.indexPath);\n }\n getPath() {\n return this.indexPath;\n }\n /**\n * it's obviously not accurate. a local path might include 'bithub' as part of the path as well.\n * however, it's needed only for suppressing the error message when the indexJson is outdate,\n * so if it happens on a local scope it's okay.\n * for other purposes, don't rely on this.\n */\n isFileOnBitHub() {\n return this.indexPath.includes('/bithub/') || this.indexPath.includes('/tmp/scope-fs/');\n }\n find(hash: string): IndexItem | null {\n for (const entity of Object.keys(IndexType)) {\n const found = this.index[entity].find((indexItem) => indexItem.hash === hash);\n if (found) return found;\n }\n return null;\n }\n _exist(hash: string): boolean {\n return Boolean(this.find(hash));\n }\n static _composePath(basePath: string): string {\n return path.join(basePath, COMPONENTS_INDEX_FILENAME);\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_fsExtra","data","_interopRequireDefault","require","_asyncMutex","path","_interopRequireWildcard","_laneId","_legacy","_legacy2","_models","_lane","_lodash","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","_defineProperty","_toPropertyKey","value","enumerable","configurable","writable","_toPrimitive","Symbol","toPrimitive","TypeError","String","Number","COMPONENTS_INDEX_FILENAME","ComponentItem","constructor","id","isSymlink","hash","toIdentifierString","scope","name","exports","LaneItem","toLaneId","LaneId","IndexType","ScopeIndex","indexPath","index","components","lanes","writeIndexMutex","_writeIndexMutex","Mutex","load","basePath","_composePath","indexRaw","fs","readJson","getIndexWithBackwardCompatibility","Array","isArray","indexObject","map","c","l","err","message","includes","InvalidIndexJson","create","reset","logger","debug","remove","write","runExclusive","writeJson","spaces","getAll","values","flat","getHashes","indexType","indexItem","getHashesByQuery","filter","getHashesIncludeSymlinks","addMany","bitObjects","added","bitObject","addOne","some","oneAdded","ModelComponent","Symlink","Lane","toString","found","find","isEqual","laneItem","push","_exist","componentItem","removeMany","refs","removed","ref","removeOne","removedOne","entity","keys","difference","deleteFile","getPath","isFileOnBitHub","Boolean","join"],"sources":["scope-index.ts"],"sourcesContent":["/* eslint max-classes-per-file: 0 */\nimport fs from 'fs-extra';\nimport { Mutex } from 'async-mutex';\nimport * as path from 'path';\nimport { LaneId } from '@teambit/lane-id';\nimport { logger } from '@teambit/legacy.logger';\nimport { InvalidIndexJson } from '@teambit/legacy.scope';\nimport { ModelComponent, Symlink } from '../models';\nimport Lane from '../models/lane';\nimport type BitObject from './object';\nimport type Ref from './ref';\nimport { difference } from 'lodash';\n\nconst COMPONENTS_INDEX_FILENAME = 'index.json';\n\nexport interface IndexItem {\n hash: string;\n toIdentifierString(): string;\n}\n\nexport class ComponentItem implements IndexItem {\n constructor(\n public id: { scope: string | null; name: string },\n public isSymlink: boolean,\n public hash: string\n ) {}\n\n toIdentifierString(): string {\n const scope = this.id.scope ? `${this.id.scope}/` : '';\n return `component \"${scope}${this.id.name}\"`;\n }\n}\n\nexport class LaneItem implements IndexItem {\n constructor(\n public id: { scope: string; name: string },\n public hash: string\n ) {}\n\n toIdentifierString() {\n const scope = this.id.scope ? `${this.id.scope}/` : '';\n return `lane \"${scope}${this.id.name}\"`;\n }\n\n toLaneId(): LaneId {\n return new LaneId({ name: this.id.name, scope: this.id.scope });\n }\n}\n\nexport enum IndexType {\n components = 'components',\n lanes = 'lanes',\n}\n\ntype Index = { [IndexType.components]: ComponentItem[]; [IndexType.lanes]: LaneItem[] };\n\nexport class ScopeIndex {\n indexPath: string;\n index: Index;\n _writeIndexMutex?: Mutex;\n constructor(indexPath: string, index: Index = { [IndexType.components]: [], [IndexType.lanes]: [] }) {\n this.indexPath = indexPath;\n this.index = index;\n }\n get writeIndexMutex() {\n if (!this._writeIndexMutex) {\n this._writeIndexMutex = new Mutex();\n }\n return this._writeIndexMutex;\n }\n static async load(basePath: string): Promise<ScopeIndex> {\n const indexPath = this._composePath(basePath);\n try {\n const indexRaw = await fs.readJson(indexPath);\n const getIndexWithBackwardCompatibility = (): Index => {\n if (Array.isArray(indexRaw)) {\n return { [IndexType.components]: indexRaw, [IndexType.lanes]: [] };\n }\n return indexRaw;\n };\n const indexObject = getIndexWithBackwardCompatibility();\n const index = {\n [IndexType.components]: indexObject[IndexType.components].map(\n (c) => new ComponentItem(c.id, c.isSymlink, c.hash)\n ),\n [IndexType.lanes]: indexObject[IndexType.lanes].map((l) => new LaneItem(l.id, l.hash)),\n };\n return new ScopeIndex(indexPath, index);\n } catch (err: any) {\n if (err.message.includes('Unexpected token')) {\n throw new InvalidIndexJson(indexPath, err.message);\n }\n throw err;\n }\n }\n static create(basePath: string): ScopeIndex {\n const indexPath = this._composePath(basePath);\n return new ScopeIndex(indexPath);\n }\n static async reset(basePath: string) {\n const indexPath = this._composePath(basePath);\n logger.debug(`ComponentsIndex, deleting the index file at ${indexPath}`);\n await fs.remove(indexPath);\n }\n async write() {\n // write only one at a time to avoid corrupting the json file.\n await this.writeIndexMutex.runExclusive(() => fs.writeJson(this.indexPath, this.index, { spaces: 2 }));\n }\n getAll(): IndexItem[] {\n return Object.values(this.index).flat();\n }\n\n getHashes(indexType: IndexType): string[] {\n return this.index[indexType].map((indexItem: IndexItem) => indexItem.hash);\n }\n getHashesByQuery(indexType: IndexType, filter: Function): string[] {\n // @ts-ignore how to tell TS that all this.index.prop are array?\n return this.index[indexType].filter(filter).map((indexItem: IndexItem) => indexItem.hash);\n }\n getHashesIncludeSymlinks(): string[] {\n return this.index.components.map((indexItem) => indexItem.hash);\n }\n addMany(bitObjects: BitObject[]): boolean {\n const added = bitObjects.map((bitObject) => this.addOne(bitObject));\n return added.some((oneAdded) => oneAdded); // return true if one of the objects was added\n }\n addOne(bitObject: BitObject): boolean {\n if (!(bitObject instanceof ModelComponent) && !(bitObject instanceof Symlink) && !(bitObject instanceof Lane))\n return false;\n const hash = bitObject.hash().toString();\n\n if (bitObject instanceof Lane) {\n const found = this.find(hash) as LaneItem | undefined;\n if (found) {\n if ((found as LaneItem).toLaneId().isEqual(bitObject.toLaneId())) return false;\n found.id = bitObject.toLaneId();\n } else {\n const laneItem = new LaneItem(bitObject.toLaneId(), hash);\n this.index.lanes.push(laneItem);\n }\n return true;\n }\n if (bitObject instanceof ModelComponent || bitObject instanceof Symlink) {\n if (this._exist(hash)) return false;\n const componentItem = new ComponentItem(\n { scope: bitObject.scope || null, name: bitObject.name },\n bitObject instanceof Symlink,\n hash\n );\n this.index.components.push(componentItem);\n }\n return true;\n }\n removeMany(refs: Ref[]): boolean {\n const removed = refs.map((ref) => this.removeOne(ref.toString()));\n return removed.some((removedOne) => removedOne); // return true if one of the objects was removed\n }\n removeOne(hash: string): boolean {\n for (const entity of Object.keys(IndexType)) {\n const found = this.index[entity].find((indexItem) => indexItem.hash === hash);\n if (found) {\n this.index[entity] = difference(this.index[entity], [found]);\n return true;\n }\n }\n return false;\n }\n async deleteFile() {\n logger.debug(`ComponentsIndex, deleting the index file at ${this.indexPath}`);\n await fs.remove(this.indexPath);\n }\n getPath() {\n return this.indexPath;\n }\n /**\n * it's obviously not accurate. a local path might include 'bithub' as part of the path as well.\n * however, it's needed only for suppressing the error message when the indexJson is outdate,\n * so if it happens on a local scope it's okay.\n * for other purposes, don't rely on this.\n */\n isFileOnBitHub() {\n return this.indexPath.includes('/bithub/') || this.indexPath.includes('/tmp/scope-fs/');\n }\n find(hash: string): IndexItem | null {\n for (const entity of Object.keys(IndexType)) {\n const found = this.index[entity].find((indexItem) => indexItem.hash === hash);\n if (found) return found;\n }\n return null;\n }\n _exist(hash: string): boolean {\n return Boolean(this.find(hash));\n }\n static _composePath(basePath: string): string {\n return path.join(basePath, COMPONENTS_INDEX_FILENAME);\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -52,7 +52,6 @@ import { DetachedHeads } from './detach-heads';
|
|
|
52
52
|
|
|
53
53
|
type State = {
|
|
54
54
|
versions?: {
|
|
55
|
-
// @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
|
|
56
55
|
[version: string]: {
|
|
57
56
|
local?: boolean; // whether a component was changed locally
|
|
58
57
|
};
|
|
@@ -101,7 +100,6 @@ export const VERSION_ZERO = '0.0.0';
|
|
|
101
100
|
* with 'Component' in their headers. see object-registrar.types()
|
|
102
101
|
*/
|
|
103
102
|
// TODO: FIX me .parser
|
|
104
|
-
// @ts-ignore
|
|
105
103
|
export default class Component extends BitObject {
|
|
106
104
|
scope: string;
|
|
107
105
|
name: string;
|
|
@@ -606,7 +604,6 @@ export default class Component extends BitObject {
|
|
|
606
604
|
collectVersions(repo: Repository): Promise<ConsumerComponent[]> {
|
|
607
605
|
return Promise.all(
|
|
608
606
|
this.listVersions().map((versionNum) => {
|
|
609
|
-
// @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
|
|
610
607
|
return this.toConsumerComponent(versionNum, this.scope, repo);
|
|
611
608
|
})
|
|
612
609
|
);
|
|
@@ -741,8 +738,8 @@ export default class Component extends BitObject {
|
|
|
741
738
|
else
|
|
742
739
|
throw new Error(`unable to add a new version for "${this.id()}" on main.
|
|
743
740
|
this version started from an older version (${previouslyUsedVersion}), and not from the head (${head}).
|
|
744
|
-
|
|
745
|
-
|
|
741
|
+
please run "bit checkout head" to be up to date, then snap/tag your changes.
|
|
742
|
+
if this is done intentionally, you can use --detach-head (or --override-head if available), but make sure you understand the implications as this is an experimental feature that may not be fully stable.`);
|
|
746
743
|
} else {
|
|
747
744
|
this.setHead(version.hash());
|
|
748
745
|
this.detachedHeads.clearCurrent();
|
|
@@ -1089,7 +1086,6 @@ consider using --ignore-missing-artifacts flag if you're sure the artifacts are
|
|
|
1089
1086
|
// @todo: this is weird. why the scopeMeta would be taken from the current scope and not he component scope?
|
|
1090
1087
|
const scopeMetaP = scopeName ? ScopeMeta.fromScopeName(scopeName).load(repository) : Promise.resolve();
|
|
1091
1088
|
const log = version.log || null;
|
|
1092
|
-
// @ts-ignore
|
|
1093
1089
|
const [files, scopeMeta] = await Promise.all([filesP, scopeMetaP]);
|
|
1094
1090
|
|
|
1095
1091
|
const extensions = version.extensions.clone();
|
|
@@ -1209,6 +1205,27 @@ consider using --ignore-missing-artifacts flag if you're sure the artifacts are
|
|
|
1209
1205
|
await this.setDivergeData(repo, undefined, undefined, workspaceId);
|
|
1210
1206
|
const divergeData = this.getDivergeData();
|
|
1211
1207
|
const localHashes = divergeData.snapsOnSourceOnly;
|
|
1208
|
+
|
|
1209
|
+
// When there's a detached head, divergeData only includes the detached head lineage.
|
|
1210
|
+
// We also need to include unexported versions from the main head lineage.
|
|
1211
|
+
const hasDetachedHead = this.detachedHeads && this.detachedHeads.getAllHeads().length > 0;
|
|
1212
|
+
if (hasDetachedHead && this.head) {
|
|
1213
|
+
// Calculate divergence from the main head as well
|
|
1214
|
+
const mainHeadDivergeData = await getDivergeData({
|
|
1215
|
+
repo,
|
|
1216
|
+
modelComponent: this,
|
|
1217
|
+
targetHead: (this.laneId ? this.calculatedRemoteHeadWhenOnLane : this.remoteHead) || null,
|
|
1218
|
+
sourceHead: this.head,
|
|
1219
|
+
throws: false,
|
|
1220
|
+
});
|
|
1221
|
+
// Add main head local versions that aren't already in localHashes
|
|
1222
|
+
for (const hash of mainHeadDivergeData.snapsOnSourceOnly) {
|
|
1223
|
+
if (!localHashes.find((h) => h.isEqual(hash))) {
|
|
1224
|
+
localHashes.push(hash);
|
|
1225
|
+
}
|
|
1226
|
+
}
|
|
1227
|
+
}
|
|
1228
|
+
|
|
1212
1229
|
if (!localHashes.length) return [];
|
|
1213
1230
|
return localHashes.reverse(); // reverse to get the older first
|
|
1214
1231
|
}
|
package/models/scopeMeta.ts
CHANGED
|
@@ -8,7 +8,6 @@ type ScopeMetaProps = {
|
|
|
8
8
|
};
|
|
9
9
|
|
|
10
10
|
// TODO: fix parse
|
|
11
|
-
// @ts-ignore
|
|
12
11
|
export default class ScopeMeta extends BitObject {
|
|
13
12
|
license: string | null | undefined;
|
|
14
13
|
name: string;
|
|
@@ -26,7 +25,6 @@ export default class ScopeMeta extends BitObject {
|
|
|
26
25
|
};
|
|
27
26
|
}
|
|
28
27
|
|
|
29
|
-
// @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
|
|
30
28
|
toString(pretty: boolean): string {
|
|
31
29
|
const args = getStringifyArgs(pretty);
|
|
32
30
|
return JSON.stringify(this.toObject(), ...args);
|
package/models/source.ts
CHANGED
package/models/version.spec.ts
CHANGED
|
@@ -67,21 +67,13 @@ describe('Version', () => {
|
|
|
67
67
|
it('dependencies should be an array', () => {
|
|
68
68
|
expect(dependencies).to.be.an('array').and.have.lengthOf(1);
|
|
69
69
|
});
|
|
70
|
-
it('dependencies should have
|
|
70
|
+
it('dependencies should have id property only (relativePaths removed)', () => {
|
|
71
71
|
expect(dependencies[0]).to.haveOwnProperty('id');
|
|
72
|
-
expect(dependencies[0]).to.haveOwnProperty('relativePaths');
|
|
72
|
+
expect(dependencies[0]).to.not.haveOwnProperty('relativePaths');
|
|
73
73
|
expect(dependencies[0]).to.not.haveOwnProperty('nonExistProperty');
|
|
74
|
-
expect(Object.keys(dependencies[0])).to.have.lengthOf(
|
|
75
|
-
});
|
|
76
|
-
it('relativePaths should be an array', () => {
|
|
77
|
-
expect(dependencies[0].relativePaths).to.be.an('array').and.have.lengthOf(1);
|
|
78
|
-
});
|
|
79
|
-
it('relativePaths should have properties sourceRelativePath and destinationRelativePath only', () => {
|
|
80
|
-
expect(dependencies[0].relativePaths[0]).to.haveOwnProperty('sourceRelativePath');
|
|
81
|
-
expect(dependencies[0].relativePaths[0]).to.haveOwnProperty('destinationRelativePath');
|
|
82
|
-
expect(dependencies[0].relativePaths[0]).to.not.haveOwnProperty('nonExistProperty');
|
|
83
|
-
expect(Object.keys(dependencies[0].relativePaths[0])).to.have.lengthOf(2);
|
|
74
|
+
expect(Object.keys(dependencies[0])).to.have.lengthOf(1);
|
|
84
75
|
});
|
|
76
|
+
// relativePaths tests removed - no longer included in Version.id() hash for Harmony components
|
|
85
77
|
});
|
|
86
78
|
});
|
|
87
79
|
describe('hash()', () => {
|
package/models/version.ts
CHANGED
|
@@ -70,11 +70,8 @@ export type VersionProps = {
|
|
|
70
70
|
flattenedEdges?: DepEdge[];
|
|
71
71
|
flattenedEdgesRef?: Ref;
|
|
72
72
|
dependenciesGraphRef?: Ref;
|
|
73
|
-
// @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
|
|
74
73
|
packageDependencies?: { [key: string]: string };
|
|
75
|
-
// @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
|
|
76
74
|
devPackageDependencies?: { [key: string]: string };
|
|
77
|
-
// @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
|
|
78
75
|
peerPackageDependencies?: { [key: string]: string };
|
|
79
76
|
bindingPrefix: string;
|
|
80
77
|
schema?: string;
|
|
@@ -123,7 +120,6 @@ export default class Version extends BitObject {
|
|
|
123
120
|
* (around August 2023 should be safe)
|
|
124
121
|
*/
|
|
125
122
|
private flattenedEdges: DepEdge[];
|
|
126
|
-
// @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
|
|
127
123
|
packageDependencies: { [key: string]: string };
|
|
128
124
|
devPackageDependencies: { [key: string]: string };
|
|
129
125
|
peerPackageDependencies: { [key: string]: string };
|
|
@@ -235,19 +231,11 @@ export default class Version extends BitObject {
|
|
|
235
231
|
id() {
|
|
236
232
|
const obj = this.toObject();
|
|
237
233
|
|
|
238
|
-
// @todo: remove the entire dependencies.relativePaths from the ID (it's going to be a breaking change)
|
|
239
234
|
const getDependencies = (deps: Dependencies) => {
|
|
240
235
|
const clonedDependencies = deps.cloneAsString();
|
|
241
|
-
|
|
242
|
-
return clonedDependencies.map((dependency: Dependency) => {
|
|
236
|
+
return clonedDependencies.map((dependency) => {
|
|
243
237
|
return {
|
|
244
238
|
id: dependency.id,
|
|
245
|
-
relativePaths: dependency.relativePaths.map((relativePath) => {
|
|
246
|
-
return {
|
|
247
|
-
sourceRelativePath: relativePath.sourceRelativePath,
|
|
248
|
-
destinationRelativePath: relativePath.destinationRelativePath,
|
|
249
|
-
};
|
|
250
|
-
}),
|
|
251
239
|
};
|
|
252
240
|
});
|
|
253
241
|
};
|
|
@@ -700,7 +688,6 @@ export default class Version extends BitObject {
|
|
|
700
688
|
files: files.map(parseFile),
|
|
701
689
|
bindingPrefix: component.bindingPrefix,
|
|
702
690
|
log: component.log as Log,
|
|
703
|
-
// @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
|
|
704
691
|
docs: component.docs,
|
|
705
692
|
dependencies: component.dependencies.get(),
|
|
706
693
|
devDependencies: component.devDependencies.get(),
|
|
@@ -714,7 +701,6 @@ export default class Version extends BitObject {
|
|
|
714
701
|
flattenedEdgesRef: flattenedEdges?.hash(),
|
|
715
702
|
schema: component.schema,
|
|
716
703
|
overrides: component.overrides.componentOverridesData,
|
|
717
|
-
// @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
|
|
718
704
|
packageJsonChangedProps: component.packageJsonChangedProps,
|
|
719
705
|
extensions: component.extensions,
|
|
720
706
|
buildStatus: component.buildStatus,
|
package/objects/object.ts
CHANGED
package/objects/raw-object.ts
CHANGED
|
@@ -8,7 +8,6 @@ export default class BitRawObject {
|
|
|
8
8
|
headers: string[];
|
|
9
9
|
type: string;
|
|
10
10
|
content: Buffer;
|
|
11
|
-
// @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
|
|
12
11
|
parsedContent: any;
|
|
13
12
|
_ref: string;
|
|
14
13
|
|
|
@@ -17,7 +16,6 @@ export default class BitRawObject {
|
|
|
17
16
|
ref: string | null | undefined,
|
|
18
17
|
type: string | null | undefined,
|
|
19
18
|
content: Buffer | null | undefined,
|
|
20
|
-
// @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
|
|
21
19
|
parsedContent: any | null | undefined
|
|
22
20
|
) {
|
|
23
21
|
let headers;
|
|
@@ -72,17 +70,14 @@ export default class BitRawObject {
|
|
|
72
70
|
}
|
|
73
71
|
}
|
|
74
72
|
|
|
75
|
-
// @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
|
|
76
73
|
set ref(ref: string) {
|
|
77
74
|
this._ref = ref;
|
|
78
75
|
}
|
|
79
76
|
|
|
80
|
-
// @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
|
|
81
77
|
get ref(): string {
|
|
82
78
|
return this._ref;
|
|
83
79
|
}
|
|
84
80
|
|
|
85
|
-
// @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
|
|
86
81
|
get id(): string {
|
|
87
82
|
switch (this.type) {
|
|
88
83
|
case 'Version':
|
|
@@ -114,11 +109,7 @@ export default class BitRawObject {
|
|
|
114
109
|
return [];
|
|
115
110
|
}
|
|
116
111
|
|
|
117
|
-
static async fromDeflatedBuffer(
|
|
118
|
-
fileContents: Buffer,
|
|
119
|
-
ref: string | null | undefined
|
|
120
|
-
// @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
|
|
121
|
-
): Promise<BitObject> {
|
|
112
|
+
static async fromDeflatedBuffer(fileContents: Buffer, ref: string | null | undefined): Promise<BitObject> {
|
|
122
113
|
// @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
|
|
123
114
|
return inflate(fileContents).then((buffer) => new BitRawObject(buffer, ref));
|
|
124
115
|
}
|
|
@@ -129,7 +120,6 @@ export default class BitRawObject {
|
|
|
129
120
|
* @param {Any} parsedContent
|
|
130
121
|
*/
|
|
131
122
|
toRealObject() {
|
|
132
|
-
// @ts-ignore
|
|
133
123
|
return types[this.type].from(this.parsedContent || this.getParsedContent(), this.headers[1]);
|
|
134
124
|
}
|
|
135
125
|
|
package/objects/repository.ts
CHANGED
|
@@ -22,17 +22,15 @@ import type { ObjectItem } from './object-list';
|
|
|
22
22
|
import { ObjectList } from './object-list';
|
|
23
23
|
import BitRawObject from './raw-object';
|
|
24
24
|
import Ref from './ref';
|
|
25
|
-
import type { ContentTransformer } from './repository-hooks';
|
|
26
|
-
import { onPersist, onRead } from './repository-hooks';
|
|
27
25
|
import type { InMemoryCache } from '@teambit/harmony.modules.in-memory-cache';
|
|
28
26
|
import { getMaxSizeForObjects, createInMemoryCache } from '@teambit/harmony.modules.in-memory-cache';
|
|
29
27
|
import { ScopeMeta, Lane, ModelComponent } from '../models';
|
|
30
28
|
|
|
29
|
+
type ContentTransformer = (content: Buffer) => Buffer;
|
|
31
30
|
const OBJECTS_BACKUP_DIR = `${OBJECTS_DIR}.bak`;
|
|
32
31
|
const TRASH_DIR = 'trash';
|
|
33
32
|
|
|
34
33
|
export default class Repository {
|
|
35
|
-
// @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
|
|
36
34
|
objects: { [key: string]: BitObject } = {};
|
|
37
35
|
objectsToRemove: Ref[] = [];
|
|
38
36
|
scopeJson: ScopeJson;
|
|
@@ -47,8 +45,8 @@ export default class Repository {
|
|
|
47
45
|
constructor(scopePath: string, scopeJson: ScopeJson) {
|
|
48
46
|
this.scopePath = scopePath;
|
|
49
47
|
this.scopeJson = scopeJson;
|
|
50
|
-
this.onRead =
|
|
51
|
-
this.onPersist =
|
|
48
|
+
this.onRead = (content: Buffer) => Repository.onPostObjectRead?.(content) || content;
|
|
49
|
+
this.onPersist = (content: Buffer) => Repository.onPreObjectPersist?.(content) || content;
|
|
52
50
|
this.cache = createInMemoryCache({ maxSize: getMaxSizeForObjects() });
|
|
53
51
|
}
|
|
54
52
|
|
|
@@ -91,6 +89,20 @@ export default class Repository {
|
|
|
91
89
|
|
|
92
90
|
static onPostObjectsPersist: () => Promise<void>;
|
|
93
91
|
|
|
92
|
+
/**
|
|
93
|
+
* Hook for transforming content before objects are persisted to the filesystem.
|
|
94
|
+
* Note: This function cannot be async because it's used by the synchronous `loadSync` method
|
|
95
|
+
* which needs to maintain sync behavior for compatibility with existing code.
|
|
96
|
+
*/
|
|
97
|
+
static onPreObjectPersist: (content: Buffer) => Buffer;
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* Hook for transforming content after objects are read from the filesystem.
|
|
101
|
+
* Note: This function cannot be async because it's used by the synchronous `loadSync` method
|
|
102
|
+
* which needs to maintain sync behavior for compatibility with existing code.
|
|
103
|
+
*/
|
|
104
|
+
static onPostObjectRead: (content: Buffer) => Buffer;
|
|
105
|
+
|
|
94
106
|
async reLoadScopeIndex() {
|
|
95
107
|
this.scopeIndex = await this.loadOptionallyCreateScopeIndex();
|
|
96
108
|
}
|
package/objects/scope-index.ts
CHANGED
|
@@ -111,7 +111,6 @@ export class ScopeIndex {
|
|
|
111
111
|
}
|
|
112
112
|
|
|
113
113
|
getHashes(indexType: IndexType): string[] {
|
|
114
|
-
// @ts-ignore how to tell TS that all this.index.prop are array?
|
|
115
114
|
return this.index[indexType].map((indexItem: IndexItem) => indexItem.hash);
|
|
116
115
|
}
|
|
117
116
|
getHashesByQuery(indexType: IndexType, filter: Function): string[] {
|
package/package.json
CHANGED
|
@@ -1,63 +1,62 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@teambit/objects",
|
|
3
|
-
"version": "0.0.0-
|
|
3
|
+
"version": "0.0.0-f53757d698e1bf51ca2e885c24b33195d3602e08",
|
|
4
4
|
"homepage": "https://bit.cloud/teambit/scope/objects",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"componentId": {
|
|
7
7
|
"scope": "teambit.scope",
|
|
8
8
|
"name": "objects",
|
|
9
|
-
"version": "
|
|
9
|
+
"version": "f53757d698e1bf51ca2e885c24b33195d3602e08"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
|
-
"@pnpm/dependency-path": "1001.1.
|
|
13
|
-
"@pnpm/lockfile.types": "^1002.0.
|
|
12
|
+
"@pnpm/dependency-path": "1001.1.2",
|
|
13
|
+
"@pnpm/lockfile.types": "^1002.0.1",
|
|
14
14
|
"semver": "7.7.1",
|
|
15
15
|
"lodash": "4.17.21",
|
|
16
16
|
"uuid": "8.3.2",
|
|
17
17
|
"async-mutex": "0.3.1",
|
|
18
18
|
"p-map-series": "2.1.0",
|
|
19
19
|
"tar-stream": "2.2.0",
|
|
20
|
-
"is-relative-path": "2.0.0",
|
|
21
20
|
"fs-extra": "10.0.0",
|
|
22
21
|
"uid-number": "0.0.6",
|
|
23
22
|
"@teambit/harmony": "0.4.7",
|
|
24
|
-
"@teambit/cli": "0.0.
|
|
23
|
+
"@teambit/cli": "0.0.1286",
|
|
25
24
|
"@teambit/component-id": "1.2.4",
|
|
26
|
-
"@teambit/legacy.utils": "0.0.
|
|
27
|
-
"@teambit/harmony.modules.get-basic-log": "0.0.
|
|
25
|
+
"@teambit/legacy.utils": "0.0.28",
|
|
26
|
+
"@teambit/harmony.modules.get-basic-log": "0.0.87",
|
|
28
27
|
"@teambit/bit-error": "0.0.404",
|
|
29
28
|
"@teambit/component-version": "1.0.4",
|
|
30
|
-
"@teambit/component.snap-distance": "0.0.
|
|
31
|
-
"@teambit/config-store": "0.0.
|
|
29
|
+
"@teambit/component.snap-distance": "0.0.87",
|
|
30
|
+
"@teambit/config-store": "0.0.166",
|
|
32
31
|
"@teambit/lane-id": "0.0.312",
|
|
33
|
-
"@teambit/legacy.cli.error": "0.0.
|
|
34
|
-
"@teambit/legacy.constants": "0.0.
|
|
35
|
-
"@teambit/legacy.logger": "0.0.
|
|
36
|
-
"@teambit/legacy.scope": "0.0.
|
|
37
|
-
"@teambit/toolbox.crypto.sha1": "0.0.
|
|
38
|
-
"@teambit/component.sources": "0.0.
|
|
32
|
+
"@teambit/legacy.cli.error": "0.0.30",
|
|
33
|
+
"@teambit/legacy.constants": "0.0.19",
|
|
34
|
+
"@teambit/legacy.logger": "0.0.30",
|
|
35
|
+
"@teambit/legacy.scope": "0.0.86",
|
|
36
|
+
"@teambit/toolbox.crypto.sha1": "0.0.10",
|
|
37
|
+
"@teambit/component.sources": "0.0.138",
|
|
39
38
|
"@teambit/legacy-bit-id": "1.1.3",
|
|
40
|
-
"@teambit/legacy-component-log": "0.0.
|
|
41
|
-
"@teambit/legacy.consumer-component": "0.0.
|
|
42
|
-
"@teambit/legacy.consumer-config": "0.0.
|
|
43
|
-
"@teambit/legacy.extension-data": "0.0.
|
|
44
|
-
"@teambit/pkg.modules.semver-helper": "0.0.
|
|
39
|
+
"@teambit/legacy-component-log": "0.0.412",
|
|
40
|
+
"@teambit/legacy.consumer-component": "0.0.87",
|
|
41
|
+
"@teambit/legacy.consumer-config": "0.0.86",
|
|
42
|
+
"@teambit/legacy.extension-data": "0.0.88",
|
|
43
|
+
"@teambit/pkg.modules.semver-helper": "0.0.17",
|
|
45
44
|
"@teambit/toolbox.array.duplications-finder": "0.0.3",
|
|
46
45
|
"@teambit/graph.cleargraph": "0.0.11",
|
|
47
|
-
"@teambit/bit.get-bit-version": "0.0.
|
|
48
|
-
"@teambit/semantics.doc-parser": "0.0.
|
|
49
|
-
"@teambit/harmony.modules.concurrency": "0.0.
|
|
50
|
-
"@teambit/toolbox.promise.map-pool": "0.0.
|
|
51
|
-
"@teambit/harmony.modules.in-memory-cache": "0.0.
|
|
52
|
-
"@teambit/toolbox.fs.remove-empty-dir": "0.0.
|
|
53
|
-
"@teambit/graph": "0.0.0-
|
|
46
|
+
"@teambit/bit.get-bit-version": "0.0.10",
|
|
47
|
+
"@teambit/semantics.doc-parser": "0.0.94",
|
|
48
|
+
"@teambit/harmony.modules.concurrency": "0.0.20",
|
|
49
|
+
"@teambit/toolbox.promise.map-pool": "0.0.9",
|
|
50
|
+
"@teambit/harmony.modules.in-memory-cache": "0.0.23",
|
|
51
|
+
"@teambit/toolbox.fs.remove-empty-dir": "0.0.8",
|
|
52
|
+
"@teambit/graph": "0.0.0-335695f0d3342c9ef3eaaaaeb3ab5175a9af1f2a"
|
|
54
53
|
},
|
|
55
54
|
"devDependencies": {
|
|
56
55
|
"@types/semver": "7.5.8",
|
|
57
56
|
"@types/lodash": "4.14.165",
|
|
58
57
|
"@types/uuid": "8.3.4",
|
|
59
58
|
"@types/fs-extra": "9.0.7",
|
|
60
|
-
"@teambit/harmony.envs.core-aspect-env": "0.0.
|
|
59
|
+
"@teambit/harmony.envs.core-aspect-env": "0.0.79"
|
|
61
60
|
},
|
|
62
61
|
"peerDependencies": {
|
|
63
62
|
"chai": "5.2.1",
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import type { ScopeJson } from '@teambit/legacy.scope';
|
|
2
|
-
export type ContentTransformer = (content: Buffer) => Buffer;
|
|
3
|
-
export declare function onPersist(scopePath: string, scopeJson: ScopeJson): ContentTransformer;
|
|
4
|
-
export declare function onRead(scopePath: string, scopeJson: ScopeJson): ContentTransformer;
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.onPersist = onPersist;
|
|
7
|
-
exports.onRead = onRead;
|
|
8
|
-
function _isRelativePath() {
|
|
9
|
-
const data = _interopRequireDefault(require("is-relative-path"));
|
|
10
|
-
_isRelativePath = function () {
|
|
11
|
-
return data;
|
|
12
|
-
};
|
|
13
|
-
return data;
|
|
14
|
-
}
|
|
15
|
-
function _path() {
|
|
16
|
-
const data = _interopRequireDefault(require("path"));
|
|
17
|
-
_path = function () {
|
|
18
|
-
return data;
|
|
19
|
-
};
|
|
20
|
-
return data;
|
|
21
|
-
}
|
|
22
|
-
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
23
|
-
function loadHooks(scopePath, scopeJson) {
|
|
24
|
-
const hooksPath = scopeJson.hooksPath;
|
|
25
|
-
if (hooksPath) {
|
|
26
|
-
const hooksFinalPath = (0, _isRelativePath().default)(hooksPath) ? _path().default.join(scopePath, hooksPath) : hooksPath;
|
|
27
|
-
// eslint-disable-next-line global-require, import/no-dynamic-require
|
|
28
|
-
const hooks = require(hooksFinalPath);
|
|
29
|
-
return hooks;
|
|
30
|
-
}
|
|
31
|
-
return undefined;
|
|
32
|
-
}
|
|
33
|
-
function onPersist(scopePath, scopeJson) {
|
|
34
|
-
const defaultFunc = content => content;
|
|
35
|
-
const hooks = loadHooks(scopePath, scopeJson);
|
|
36
|
-
if (hooks) {
|
|
37
|
-
const onReadFunction = hooks.onPersist;
|
|
38
|
-
if (onReadFunction) {
|
|
39
|
-
return onReadFunction;
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
return defaultFunc;
|
|
43
|
-
}
|
|
44
|
-
function onRead(scopePath, scopeJson) {
|
|
45
|
-
const defaultFunc = content => content;
|
|
46
|
-
const hooks = loadHooks(scopePath, scopeJson);
|
|
47
|
-
if (hooks) {
|
|
48
|
-
const onReadFunction = hooks.onRead;
|
|
49
|
-
if (onReadFunction) {
|
|
50
|
-
return onReadFunction;
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
return defaultFunc;
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
//# sourceMappingURL=repository-hooks.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["_isRelativePath","data","_interopRequireDefault","require","_path","e","__esModule","default","loadHooks","scopePath","scopeJson","hooksPath","hooksFinalPath","isRelative","path","join","hooks","undefined","onPersist","defaultFunc","content","onReadFunction","onRead"],"sources":["repository-hooks.ts"],"sourcesContent":["import isRelative from 'is-relative-path';\nimport path from 'path';\n\nimport type { ScopeJson } from '@teambit/legacy.scope';\n\nexport type ContentTransformer = (content: Buffer) => Buffer;\n\nfunction loadHooks(scopePath: string, scopeJson: ScopeJson): any | undefined {\n const hooksPath = scopeJson.hooksPath;\n if (hooksPath) {\n const hooksFinalPath = isRelative(hooksPath) ? path.join(scopePath, hooksPath) : hooksPath;\n // eslint-disable-next-line global-require, import/no-dynamic-require\n const hooks = require(hooksFinalPath);\n return hooks;\n }\n return undefined;\n}\n\nexport function onPersist(scopePath: string, scopeJson: ScopeJson): ContentTransformer {\n const defaultFunc = (content) => content;\n const hooks = loadHooks(scopePath, scopeJson);\n if (hooks) {\n const onReadFunction = hooks.onPersist;\n if (onReadFunction) {\n return onReadFunction;\n }\n }\n return defaultFunc;\n}\n\nexport function onRead(scopePath: string, scopeJson: ScopeJson): ContentTransformer {\n const defaultFunc = (content) => content;\n\n const hooks = loadHooks(scopePath, scopeJson);\n if (hooks) {\n const onReadFunction = hooks.onRead;\n if (onReadFunction) {\n return onReadFunction;\n }\n }\n return defaultFunc;\n}\n"],"mappings":";;;;;;;AAAA,SAAAA,gBAAA;EAAA,MAAAC,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAH,eAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAG,MAAA;EAAA,MAAAH,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAC,KAAA,YAAAA,CAAA;IAAA,OAAAH,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAAwB,SAAAC,uBAAAG,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAMxB,SAASG,SAASA,CAACC,SAAiB,EAAEC,SAAoB,EAAmB;EAC3E,MAAMC,SAAS,GAAGD,SAAS,CAACC,SAAS;EACrC,IAAIA,SAAS,EAAE;IACb,MAAMC,cAAc,GAAG,IAAAC,yBAAU,EAACF,SAAS,CAAC,GAAGG,eAAI,CAACC,IAAI,CAACN,SAAS,EAAEE,SAAS,CAAC,GAAGA,SAAS;IAC1F;IACA,MAAMK,KAAK,GAAGb,OAAO,CAACS,cAAc,CAAC;IACrC,OAAOI,KAAK;EACd;EACA,OAAOC,SAAS;AAClB;AAEO,SAASC,SAASA,CAACT,SAAiB,EAAEC,SAAoB,EAAsB;EACrF,MAAMS,WAAW,GAAIC,OAAO,IAAKA,OAAO;EACxC,MAAMJ,KAAK,GAAGR,SAAS,CAACC,SAAS,EAAEC,SAAS,CAAC;EAC7C,IAAIM,KAAK,EAAE;IACT,MAAMK,cAAc,GAAGL,KAAK,CAACE,SAAS;IACtC,IAAIG,cAAc,EAAE;MAClB,OAAOA,cAAc;IACvB;EACF;EACA,OAAOF,WAAW;AACpB;AAEO,SAASG,MAAMA,CAACb,SAAiB,EAAEC,SAAoB,EAAsB;EAClF,MAAMS,WAAW,GAAIC,OAAO,IAAKA,OAAO;EAExC,MAAMJ,KAAK,GAAGR,SAAS,CAACC,SAAS,EAAEC,SAAS,CAAC;EAC7C,IAAIM,KAAK,EAAE;IACT,MAAMK,cAAc,GAAGL,KAAK,CAACM,MAAM;IACnC,IAAID,cAAc,EAAE;MAClB,OAAOA,cAAc;IACvB;EACF;EACA,OAAOF,WAAW;AACpB","ignoreList":[]}
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import isRelative from 'is-relative-path';
|
|
2
|
-
import path from 'path';
|
|
3
|
-
|
|
4
|
-
import type { ScopeJson } from '@teambit/legacy.scope';
|
|
5
|
-
|
|
6
|
-
export type ContentTransformer = (content: Buffer) => Buffer;
|
|
7
|
-
|
|
8
|
-
function loadHooks(scopePath: string, scopeJson: ScopeJson): any | undefined {
|
|
9
|
-
const hooksPath = scopeJson.hooksPath;
|
|
10
|
-
if (hooksPath) {
|
|
11
|
-
const hooksFinalPath = isRelative(hooksPath) ? path.join(scopePath, hooksPath) : hooksPath;
|
|
12
|
-
// eslint-disable-next-line global-require, import/no-dynamic-require
|
|
13
|
-
const hooks = require(hooksFinalPath);
|
|
14
|
-
return hooks;
|
|
15
|
-
}
|
|
16
|
-
return undefined;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
export function onPersist(scopePath: string, scopeJson: ScopeJson): ContentTransformer {
|
|
20
|
-
const defaultFunc = (content) => content;
|
|
21
|
-
const hooks = loadHooks(scopePath, scopeJson);
|
|
22
|
-
if (hooks) {
|
|
23
|
-
const onReadFunction = hooks.onPersist;
|
|
24
|
-
if (onReadFunction) {
|
|
25
|
-
return onReadFunction;
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
return defaultFunc;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
export function onRead(scopePath: string, scopeJson: ScopeJson): ContentTransformer {
|
|
32
|
-
const defaultFunc = (content) => content;
|
|
33
|
-
|
|
34
|
-
const hooks = loadHooks(scopePath, scopeJson);
|
|
35
|
-
if (hooks) {
|
|
36
|
-
const onReadFunction = hooks.onRead;
|
|
37
|
-
if (onReadFunction) {
|
|
38
|
-
return onReadFunction;
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
return defaultFunc;
|
|
42
|
-
}
|
|
File without changes
|