@skillsmith/core 0.6.1 → 0.6.2
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/CHANGELOG.md +4 -0
- package/dist/.tsbuildinfo +1 -1
- package/dist/src/db/migrations/v17-curated-trust-tier.d.ts +14 -6
- package/dist/src/db/migrations/v17-curated-trust-tier.d.ts.map +1 -1
- package/dist/src/db/migrations/v17-curated-trust-tier.js +9 -0
- package/dist/src/db/migrations/v17-curated-trust-tier.js.map +1 -1
- package/dist/src/index.d.ts +1 -1
- package/dist/src/index.js +1 -1
- package/dist/tests/unit/migrations/migration-v17.test.d.ts +3 -2
- package/dist/tests/unit/migrations/migration-v17.test.d.ts.map +1 -1
- package/dist/tests/unit/migrations/migration-v17.test.js +35 -21
- package/dist/tests/unit/migrations/migration-v17.test.js.map +1 -1
- package/package.json +1 -1
|
@@ -16,12 +16,20 @@
|
|
|
16
16
|
* set, indexes, and FTS5 triggers are copied verbatim from v16 (v17 changes only
|
|
17
17
|
* the `trust_tier` CHECK list — no column added, no column dropped).
|
|
18
18
|
*
|
|
19
|
-
* R1 (FK inbound refs): `
|
|
20
|
-
* `
|
|
21
|
-
*
|
|
22
|
-
* `
|
|
23
|
-
*
|
|
24
|
-
*
|
|
19
|
+
* R1 (FK inbound refs): with `foreign_keys=ON` (the driver default), `DROP TABLE
|
|
20
|
+
* skills` fires every inbound `ON DELETE CASCADE` action *immediately* — SQLite
|
|
21
|
+
* does NOT defer cascade actions to the end of the transaction. Today
|
|
22
|
+
* `skill_categories` (`schema-sql.ts:96-100`) is the only child with a hard FK
|
|
23
|
+
* `skill_id ... REFERENCES skills(id) ON DELETE CASCADE`; its rows would be
|
|
24
|
+
* silently cascade-deleted by the recreate (SMI-4919). The recreate therefore
|
|
25
|
+
* backs `skill_categories` up into a TEMP table before `DROP TABLE skills` and
|
|
26
|
+
* restores it verbatim after the RENAME, all inside the one `BEGIN; ... COMMIT;`.
|
|
27
|
+
* (`skill_versions`, `skill_advisories`, `skill_co_installs`,
|
|
28
|
+
* `skill_dependencies`, `risk_score_history` use soft `skill_id TEXT` columns
|
|
29
|
+
* with no FK — they are unaffected.) RULE: any future `skills` table-recreate
|
|
30
|
+
* MUST back up every `ON DELETE CASCADE` child of `skills` the same way (today
|
|
31
|
+
* `skill_categories` is the only one — re-check `schema-sql.ts` before changing
|
|
32
|
+
* this dance).
|
|
25
33
|
*
|
|
26
34
|
* Idempotent: v17 adds no column, so the probe inspects the CHECK text itself —
|
|
27
35
|
* if the `skills` DDL already contains `'curated'`, the migration is a no-op.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"v17-curated-trust-tier.d.ts","sourceRoot":"","sources":["../../../../src/db/migrations/v17-curated-trust-tier.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"v17-curated-trust-tier.d.ts","sourceRoot":"","sources":["../../../../src/db/migrations/v17-curated-trust-tier.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AAiFxD;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,QAAQ,GAAG,IAAI,CAWpD"}
|
|
@@ -36,9 +36,18 @@ SELECT
|
|
|
36
36
|
created_at, updated_at
|
|
37
37
|
FROM skills;
|
|
38
38
|
|
|
39
|
+
-- Back up the only ON DELETE CASCADE child of skills so DROP TABLE skills
|
|
40
|
+
-- (which fires cascades immediately under foreign_keys=ON) cannot silently
|
|
41
|
+
-- delete its rows. Restored verbatim after the RENAME below (SMI-4919).
|
|
42
|
+
DROP TABLE IF EXISTS _skill_categories_backup;
|
|
43
|
+
CREATE TEMP TABLE _skill_categories_backup AS SELECT * FROM skill_categories;
|
|
44
|
+
|
|
39
45
|
DROP TABLE skills;
|
|
40
46
|
ALTER TABLE skills_v17 RENAME TO skills;
|
|
41
47
|
|
|
48
|
+
INSERT INTO skill_categories SELECT * FROM _skill_categories_backup;
|
|
49
|
+
DROP TABLE _skill_categories_backup;
|
|
50
|
+
|
|
42
51
|
CREATE INDEX IF NOT EXISTS idx_skills_author ON skills(author);
|
|
43
52
|
CREATE INDEX IF NOT EXISTS idx_skills_trust_tier ON skills(trust_tier);
|
|
44
53
|
CREATE INDEX IF NOT EXISTS idx_skills_quality_score ON skills(quality_score);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"v17-curated-trust-tier.js","sourceRoot":"","sources":["../../../../src/db/migrations/v17-curated-trust-tier.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"v17-curated-trust-tier.js","sourceRoot":"","sources":["../../../../src/db/migrations/v17-curated-trust-tier.ts"],"names":[],"mappings":"AA0CA,MAAM,kBAAkB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6E1B,CAAA;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,iBAAiB,CAAC,EAAY;IAC5C,MAAM,GAAG,GAAG,EAAE;SACX,OAAO,CAAC,oEAAoE,CAAC;SAC7E,GAAG,EAAiC,CAAA;IAEvC,IAAI,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QACzC,kEAAkE;QAClE,OAAM;IACR,CAAC;IAED,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAA;AAC7B,CAAC"}
|
package/dist/src/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @skillsmith/core - Core functionality for skill discovery
|
|
3
3
|
*/
|
|
4
|
-
export declare const VERSION = "0.6.
|
|
4
|
+
export declare const VERSION = "0.6.2";
|
|
5
5
|
export * from './exports/services.js';
|
|
6
6
|
export * from './exports/repositories.js';
|
|
7
7
|
export { createDatabaseSync, createDatabaseAsync } from './db/createDatabase.js';
|
package/dist/src/index.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* @skillsmith/core - Core functionality for skill discovery
|
|
3
3
|
*/
|
|
4
4
|
// Version
|
|
5
|
-
export const VERSION = '0.6.
|
|
5
|
+
export const VERSION = '0.6.2';
|
|
6
6
|
// ============================================================================
|
|
7
7
|
// Grouped Exports from Barrel Files
|
|
8
8
|
// ============================================================================
|
|
@@ -8,8 +8,9 @@
|
|
|
8
8
|
* - A `'curated'` row inserts successfully after v17.
|
|
9
9
|
* - Idempotent re-run of v17 is a no-op.
|
|
10
10
|
* - H1: the `skills` column set is byte-identical pre/post-v17.
|
|
11
|
-
* - H3: a fixture DB carrying inbound-FK rows (skill_categories)
|
|
12
|
-
*
|
|
11
|
+
* - H3: a fixture DB carrying inbound-FK rows (skill_categories) keeps those
|
|
12
|
+
* rows, with intact skill_id links, across the v17 skills-table recreate
|
|
13
|
+
* (SMI-4919 — DROP TABLE fires ON DELETE CASCADE; backup/restore preserves).
|
|
13
14
|
* - H2: fresh-install convergence — v1 base → migrations → v17, no double-apply.
|
|
14
15
|
*/
|
|
15
16
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migration-v17.test.d.ts","sourceRoot":"","sources":["../../../../tests/unit/migrations/migration-v17.test.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"migration-v17.test.d.ts","sourceRoot":"","sources":["../../../../tests/unit/migrations/migration-v17.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG"}
|
|
@@ -8,8 +8,9 @@
|
|
|
8
8
|
* - A `'curated'` row inserts successfully after v17.
|
|
9
9
|
* - Idempotent re-run of v17 is a no-op.
|
|
10
10
|
* - H1: the `skills` column set is byte-identical pre/post-v17.
|
|
11
|
-
* - H3: a fixture DB carrying inbound-FK rows (skill_categories)
|
|
12
|
-
*
|
|
11
|
+
* - H3: a fixture DB carrying inbound-FK rows (skill_categories) keeps those
|
|
12
|
+
* rows, with intact skill_id links, across the v17 skills-table recreate
|
|
13
|
+
* (SMI-4919 — DROP TABLE fires ON DELETE CASCADE; backup/restore preserves).
|
|
13
14
|
* - H2: fresh-install convergence — v1 base → migrations → v17, no double-apply.
|
|
14
15
|
*/
|
|
15
16
|
import { describe, it, expect, beforeEach, afterEach } from 'vitest';
|
|
@@ -208,28 +209,41 @@ describe('Migration v17: widen trust_tier CHECK to allow curated', () => {
|
|
|
208
209
|
expect(colsAfter).toEqual(colsBefore);
|
|
209
210
|
closeDatabase(v16);
|
|
210
211
|
});
|
|
211
|
-
it('H3:
|
|
212
|
+
it('H3: v17 preserves skill_categories rows across the skills-table recreate', async () => {
|
|
212
213
|
const v16 = await fixtureAtVersion(16);
|
|
213
|
-
//
|
|
214
|
-
v16
|
|
215
|
-
|
|
216
|
-
|
|
214
|
+
// Skill rows referenced by skill_categories (FK skill_categories.skill_id → skills.id).
|
|
215
|
+
const insertSkill = v16.prepare('INSERT INTO skills (id, name, trust_tier, source) VALUES (?, ?, ?, ?)');
|
|
216
|
+
insertSkill.run('fk-skill', 'fk', 'community', 'registry');
|
|
217
|
+
insertSkill.run('fk-skill-2', 'fk2', 'verified', 'registry');
|
|
217
218
|
v16.prepare("INSERT INTO categories (id, name) VALUES ('cat-1', 'testing')").run();
|
|
218
|
-
v16
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
//
|
|
219
|
+
v16.prepare("INSERT INTO categories (id, name) VALUES ('cat-2', 'devops')").run();
|
|
220
|
+
const insertLink = v16.prepare('INSERT INTO skill_categories (skill_id, category_id) VALUES (?, ?)');
|
|
221
|
+
insertLink.run('fk-skill', 'cat-1');
|
|
222
|
+
insertLink.run('fk-skill', 'cat-2');
|
|
223
|
+
insertLink.run('fk-skill-2', 'cat-1');
|
|
224
|
+
// The v17 recreate drops & renames `skills` inside one transaction. Under
|
|
225
|
+
// foreign_keys=ON (driver default), `DROP TABLE skills` fires the
|
|
226
|
+
// `ON DELETE CASCADE` on skill_categories immediately — the recreate must
|
|
227
|
+
// back up & restore skill_categories so its rows survive (SMI-4919).
|
|
224
228
|
expect(() => applyMigrationV17(v16)).not.toThrow();
|
|
225
|
-
// The skill
|
|
226
|
-
const
|
|
227
|
-
expect(
|
|
228
|
-
//
|
|
229
|
-
//
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
229
|
+
// The skill rows themselves survive the recreate in the new (widened) table.
|
|
230
|
+
const skills = v16.prepare('SELECT id FROM skills ORDER BY id').all();
|
|
231
|
+
expect(skills.map((s) => s.id)).toEqual(['fk-skill', 'fk-skill-2']);
|
|
232
|
+
// The skill_categories rows survive with intact skill_id links — they are
|
|
233
|
+
// NOT cascade-deleted. This is the SMI-4919 regression guard.
|
|
234
|
+
const links = v16
|
|
235
|
+
.prepare('SELECT skill_id, category_id FROM skill_categories ORDER BY skill_id, category_id')
|
|
236
|
+
.all();
|
|
237
|
+
expect(links).toEqual([
|
|
238
|
+
{ skill_id: 'fk-skill', category_id: 'cat-1' },
|
|
239
|
+
{ skill_id: 'fk-skill', category_id: 'cat-2' },
|
|
240
|
+
{ skill_id: 'fk-skill-2', category_id: 'cat-1' },
|
|
241
|
+
]);
|
|
242
|
+
// The TEMP backup table is dropped — no leftover artifact.
|
|
243
|
+
const backup = v16
|
|
244
|
+
.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='_skill_categories_backup'")
|
|
245
|
+
.get();
|
|
246
|
+
expect(backup).toBeUndefined();
|
|
233
247
|
closeDatabase(v16);
|
|
234
248
|
});
|
|
235
249
|
it('H2: fresh-install convergence — base schema → migrations → v17, no double-apply', async () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migration-v17.test.js","sourceRoot":"","sources":["../../../../tests/unit/migrations/migration-v17.test.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"migration-v17.test.js","sourceRoot":"","sources":["../../../../tests/unit/migrations/migration-v17.test.ts"],"names":[],"mappings":"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"}
|