joist-codegen 2.3.0-next.42 → 2.3.0-next.43
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/build/EntityDbMetadata.cjs +608 -0
- package/build/EntityDbMetadata.cjs.map +1 -0
- package/build/EntityDbMetadata.d.cts +274 -0
- package/build/EntityDbMetadata.d.cts.map +1 -0
- package/build/EntityDbMetadata.d.mts +274 -0
- package/build/EntityDbMetadata.d.mts.map +1 -0
- package/build/EntityDbMetadata.js +485 -664
- package/build/EntityDbMetadata.js.map +1 -1
- package/build/_virtual/_rolldown/runtime.cjs +23 -0
- package/build/_virtual/_rolldown/runtime.js +5 -0
- package/build/assignTags.cjs +45 -0
- package/build/assignTags.cjs.map +1 -0
- package/build/{assignTags.d.ts → assignTags.d.cts} +8 -3
- package/build/assignTags.d.cts.map +1 -0
- package/build/assignTags.d.mts +16 -0
- package/build/assignTags.d.mts.map +1 -0
- package/build/assignTags.js +37 -59
- package/build/assignTags.js.map +1 -1
- package/build/codemods/Codemod.cjs +2 -0
- package/build/codemods/Codemod.d.cts +17 -0
- package/build/codemods/Codemod.d.cts.map +1 -0
- package/build/codemods/Codemod.d.mts +17 -0
- package/build/codemods/Codemod.d.mts.map +1 -0
- package/build/codemods/Codemod.js +2 -3
- package/build/codemods/JscodeshiftMod.cjs +42 -0
- package/build/codemods/JscodeshiftMod.cjs.map +1 -0
- package/build/codemods/JscodeshiftMod.d.cts +14 -0
- package/build/codemods/JscodeshiftMod.d.cts.map +1 -0
- package/build/codemods/JscodeshiftMod.d.mts +14 -0
- package/build/codemods/JscodeshiftMod.d.mts.map +1 -0
- package/build/codemods/JscodeshiftMod.js +33 -33
- package/build/codemods/JscodeshiftMod.js.map +1 -1
- package/build/codemods/codemod_0001-rename_has_async_property.cjs +30 -0
- package/build/codemods/codemod_0001-rename_has_async_property.cjs.map +1 -0
- package/build/codemods/codemod_0001-rename_has_async_property.d.cts +9 -0
- package/build/codemods/codemod_0001-rename_has_async_property.d.cts.map +1 -0
- package/build/codemods/codemod_0001-rename_has_async_property.d.mts +9 -0
- package/build/codemods/codemod_0001-rename_has_async_property.d.mts.map +1 -0
- package/build/codemods/codemod_0001-rename_has_async_property.js +21 -25
- package/build/codemods/codemod_0001-rename_has_async_property.js.map +1 -1
- package/build/codemods/codemod_0002-rename_async_query_fields.cjs +50 -0
- package/build/codemods/codemod_0002-rename_async_query_fields.cjs.map +1 -0
- package/build/codemods/codemod_0002-rename_async_query_fields.d.cts +9 -0
- package/build/codemods/codemod_0002-rename_async_query_fields.d.cts.map +1 -0
- package/build/codemods/codemod_0002-rename_async_query_fields.d.mts +9 -0
- package/build/codemods/codemod_0002-rename_async_query_fields.d.mts.map +1 -0
- package/build/codemods/codemod_0002-rename_async_query_fields.js +38 -46
- package/build/codemods/codemod_0002-rename_async_query_fields.js.map +1 -1
- package/build/codemods/codemod_0003-rename_find_paginated.cjs +25 -0
- package/build/codemods/codemod_0003-rename_find_paginated.cjs.map +1 -0
- package/build/codemods/codemod_0003-rename_find_paginated.d.cts +9 -0
- package/build/codemods/codemod_0003-rename_find_paginated.d.cts.map +1 -0
- package/build/codemods/codemod_0003-rename_find_paginated.d.mts +9 -0
- package/build/codemods/codemod_0003-rename_find_paginated.d.mts.map +1 -0
- package/build/codemods/codemod_0003-rename_find_paginated.js +17 -26
- package/build/codemods/codemod_0003-rename_find_paginated.js.map +1 -1
- package/build/codemods/index.cjs +49 -0
- package/build/codemods/index.cjs.map +1 -0
- package/build/codemods/index.d.cts +12 -0
- package/build/codemods/index.d.cts.map +1 -0
- package/build/codemods/index.d.mts +12 -0
- package/build/codemods/index.d.mts.map +1 -0
- package/build/codemods/index.js +34 -42
- package/build/codemods/index.js.map +1 -1
- package/build/config.cjs +377 -0
- package/build/config.cjs.map +1 -0
- package/build/config.d.cts +181 -0
- package/build/config.d.cts.map +1 -0
- package/build/config.d.mts +181 -0
- package/build/config.d.mts.map +1 -0
- package/build/config.js +300 -382
- package/build/config.js.map +1 -1
- package/build/docs/cache.cjs +62 -0
- package/build/docs/cache.cjs.map +1 -0
- package/build/docs/cache.d.cts +17 -0
- package/build/docs/cache.d.cts.map +1 -0
- package/build/docs/cache.d.mts +17 -0
- package/build/docs/cache.d.mts.map +1 -0
- package/build/docs/cache.js +52 -53
- package/build/docs/cache.js.map +1 -1
- package/build/docs/generate-metadata-docs.cjs +32 -0
- package/build/docs/generate-metadata-docs.cjs.map +1 -0
- package/build/docs/generate-metadata-docs.d.cts +9 -0
- package/build/docs/generate-metadata-docs.d.cts.map +1 -0
- package/build/docs/generate-metadata-docs.d.mts +9 -0
- package/build/docs/generate-metadata-docs.d.mts.map +1 -0
- package/build/docs/generate-metadata-docs.js +18 -20
- package/build/docs/generate-metadata-docs.js.map +1 -1
- package/build/docs/index.cjs +90 -0
- package/build/docs/index.cjs.map +1 -0
- package/build/docs/index.d.cts +16 -0
- package/build/docs/index.d.cts.map +1 -0
- package/build/docs/index.d.mts +16 -0
- package/build/docs/index.d.mts.map +1 -0
- package/build/docs/index.js +72 -91
- package/build/docs/index.js.map +1 -1
- package/build/docs/markdown.cjs +181 -0
- package/build/docs/markdown.cjs.map +1 -0
- package/build/docs/{markdown.d.ts → markdown.d.cts} +14 -11
- package/build/docs/markdown.d.cts.map +1 -0
- package/build/docs/markdown.d.mts +32 -0
- package/build/docs/markdown.d.mts.map +1 -0
- package/build/docs/markdown.js +152 -220
- package/build/docs/markdown.js.map +1 -1
- package/build/docs/parsing.cjs +117 -0
- package/build/docs/parsing.cjs.map +1 -0
- package/build/docs/parsing.d.cts +48 -0
- package/build/docs/parsing.d.cts.map +1 -0
- package/build/docs/parsing.d.mts +48 -0
- package/build/docs/parsing.d.mts.map +1 -0
- package/build/docs/parsing.js +86 -91
- package/build/docs/parsing.js.map +1 -1
- package/build/findEntityScopes.cjs +119 -0
- package/build/findEntityScopes.cjs.map +1 -0
- package/build/findEntityScopes.d.cts +14 -0
- package/build/findEntityScopes.d.cts.map +1 -0
- package/build/findEntityScopes.d.mts +14 -0
- package/build/findEntityScopes.d.mts.map +1 -0
- package/build/findEntityScopes.js +79 -121
- package/build/findEntityScopes.js.map +1 -1
- package/build/foreignKeyOrdering.cjs +52 -0
- package/build/foreignKeyOrdering.cjs.map +1 -0
- package/build/foreignKeyOrdering.d.cts +8 -0
- package/build/foreignKeyOrdering.d.cts.map +1 -0
- package/build/foreignKeyOrdering.d.mts +8 -0
- package/build/foreignKeyOrdering.d.mts.map +1 -0
- package/build/foreignKeyOrdering.js +46 -55
- package/build/foreignKeyOrdering.js.map +1 -1
- package/build/generate.cjs +127 -0
- package/build/generate.cjs.map +1 -0
- package/build/generate.d.cts +17 -0
- package/build/generate.d.cts.map +1 -0
- package/build/generate.d.mts +17 -0
- package/build/generate.d.mts.map +1 -0
- package/build/generate.js +109 -129
- package/build/generate.js.map +1 -1
- package/build/generateEntitiesFile.cjs +46 -0
- package/build/generateEntitiesFile.cjs.map +1 -0
- package/build/generateEntitiesFile.d.cts +11 -0
- package/build/generateEntitiesFile.d.cts.map +1 -0
- package/build/generateEntitiesFile.d.mts +11 -0
- package/build/generateEntitiesFile.d.mts.map +1 -0
- package/build/generateEntitiesFile.js +28 -25
- package/build/generateEntitiesFile.js.map +1 -1
- package/build/generateEntityCodegenFile.cjs +936 -0
- package/build/generateEntityCodegenFile.cjs.map +1 -0
- package/build/generateEntityCodegenFile.d.cts +16 -0
- package/build/generateEntityCodegenFile.d.cts.map +1 -0
- package/build/generateEntityCodegenFile.d.mts +16 -0
- package/build/generateEntityCodegenFile.d.mts.map +1 -0
- package/build/generateEntityCodegenFile.js +707 -852
- package/build/generateEntityCodegenFile.js.map +1 -1
- package/build/generateEntityFile.cjs +23 -0
- package/build/generateEntityFile.cjs.map +1 -0
- package/build/generateEntityFile.d.cts +9 -0
- package/build/generateEntityFile.d.cts.map +1 -0
- package/build/generateEntityFile.d.mts +9 -0
- package/build/generateEntityFile.d.mts.map +1 -0
- package/build/generateEntityFile.js +11 -8
- package/build/generateEntityFile.js.map +1 -1
- package/build/generateEntityTestFile.cjs +25 -0
- package/build/generateEntityTestFile.cjs.map +1 -0
- package/build/generateEntityTestFile.d.cts +9 -0
- package/build/generateEntityTestFile.d.cts.map +1 -0
- package/build/generateEntityTestFile.d.mts +9 -0
- package/build/generateEntityTestFile.d.mts.map +1 -0
- package/build/generateEntityTestFile.js +10 -7
- package/build/generateEntityTestFile.js.map +1 -1
- package/build/generateEnumFile.cjs +73 -0
- package/build/generateEnumFile.cjs.map +1 -0
- package/build/generateEnumFile.d.cts +9 -0
- package/build/generateEnumFile.d.cts.map +1 -0
- package/build/generateEnumFile.d.mts +9 -0
- package/build/generateEnumFile.d.mts.map +1 -0
- package/build/generateEnumFile.js +33 -43
- package/build/generateEnumFile.js.map +1 -1
- package/build/generateFactoriesFiles.cjs +28 -0
- package/build/generateFactoriesFiles.cjs.map +1 -0
- package/build/generateFactoriesFiles.d.cts +7 -0
- package/build/generateFactoriesFiles.d.cts.map +1 -0
- package/build/generateFactoriesFiles.d.mts +7 -0
- package/build/generateFactoriesFiles.d.mts.map +1 -0
- package/build/generateFactoriesFiles.js +21 -16
- package/build/generateFactoriesFiles.js.map +1 -1
- package/build/generateFlushFunction.cjs +61 -0
- package/build/generateFlushFunction.cjs.map +1 -0
- package/build/{generateFlushFunction.d.ts → generateFlushFunction.d.cts} +8 -4
- package/build/generateFlushFunction.d.cts.map +1 -0
- package/build/generateFlushFunction.d.mts +23 -0
- package/build/generateFlushFunction.d.mts.map +1 -0
- package/build/generateFlushFunction.js +32 -73
- package/build/generateFlushFunction.js.map +1 -1
- package/build/generateMetadataFile.cjs +290 -0
- package/build/generateMetadataFile.cjs.map +1 -0
- package/build/generateMetadataFile.d.cts +8 -0
- package/build/generateMetadataFile.d.cts.map +1 -0
- package/build/generateMetadataFile.d.mts +8 -0
- package/build/generateMetadataFile.d.mts.map +1 -0
- package/build/generateMetadataFile.js +111 -142
- package/build/generateMetadataFile.js.map +1 -1
- package/build/generatePgEnumFile.cjs +21 -0
- package/build/generatePgEnumFile.cjs.map +1 -0
- package/build/generatePgEnumFile.d.cts +9 -0
- package/build/generatePgEnumFile.d.cts.map +1 -0
- package/build/generatePgEnumFile.d.mts +9 -0
- package/build/generatePgEnumFile.d.mts.map +1 -0
- package/build/generatePgEnumFile.js +12 -9
- package/build/generatePgEnumFile.js.map +1 -1
- package/build/index.cjs +135 -0
- package/build/index.cjs.map +1 -0
- package/build/index.d.cts +12 -0
- package/build/index.d.cts.map +1 -0
- package/build/index.d.mts +12 -0
- package/build/index.d.mts.map +1 -0
- package/build/index.js +105 -147
- package/build/index.js.map +1 -1
- package/build/inheritance.cjs +213 -0
- package/build/inheritance.cjs.map +1 -0
- package/build/inheritance.d.cts +12 -0
- package/build/inheritance.d.cts.map +1 -0
- package/build/inheritance.d.mts +12 -0
- package/build/inheritance.d.mts.map +1 -0
- package/build/inheritance.js +193 -247
- package/build/inheritance.js.map +1 -1
- package/build/installSkills.cjs +68 -0
- package/build/installSkills.cjs.map +1 -0
- package/build/{installSkills.d.ts → installSkills.d.cts} +5 -1
- package/build/installSkills.d.cts.map +1 -0
- package/build/installSkills.d.mts +16 -0
- package/build/installSkills.d.mts.map +1 -0
- package/build/installSkills.js +55 -57
- package/build/installSkills.js.map +1 -1
- package/build/keywords.cjs +7 -0
- package/build/keywords.cjs.map +1 -0
- package/build/keywords.d.cts +5 -0
- package/build/keywords.d.cts.map +1 -0
- package/build/keywords.d.mts +5 -0
- package/build/keywords.d.mts.map +1 -0
- package/build/keywords.js +5 -4
- package/build/keywords.js.map +1 -1
- package/build/loadMetadata.cjs +39 -0
- package/build/loadMetadata.cjs.map +1 -0
- package/build/loadMetadata.d.cts +31 -0
- package/build/loadMetadata.d.cts.map +1 -0
- package/build/loadMetadata.d.mts +31 -0
- package/build/loadMetadata.d.mts.map +1 -0
- package/build/loadMetadata.js +32 -39
- package/build/loadMetadata.js.map +1 -1
- package/build/logger.cjs +28 -0
- package/build/logger.cjs.map +1 -0
- package/build/logger.d.cts +13 -0
- package/build/logger.d.cts.map +1 -0
- package/build/logger.d.mts +13 -0
- package/build/logger.d.mts.map +1 -0
- package/build/logger.js +17 -16
- package/build/logger.js.map +1 -1
- package/build/scanEntityFiles.cjs +46 -0
- package/build/scanEntityFiles.cjs.map +1 -0
- package/build/scanEntityFiles.d.cts +8 -0
- package/build/scanEntityFiles.d.cts.map +1 -0
- package/build/scanEntityFiles.d.mts +8 -0
- package/build/scanEntityFiles.d.mts.map +1 -0
- package/build/scanEntityFiles.js +37 -42
- package/build/scanEntityFiles.js.map +1 -1
- package/build/sortForeignKeys.cjs +99 -0
- package/build/sortForeignKeys.cjs.map +1 -0
- package/build/{sortForeignKeys.d.ts → sortForeignKeys.d.cts} +8 -4
- package/build/sortForeignKeys.d.cts.map +1 -0
- package/build/sortForeignKeys.d.mts +35 -0
- package/build/sortForeignKeys.d.mts.map +1 -0
- package/build/sortForeignKeys.js +88 -117
- package/build/sortForeignKeys.js.map +1 -1
- package/build/symbols.cjs +226 -0
- package/build/symbols.cjs.map +1 -0
- package/build/symbols.d.cts +114 -0
- package/build/symbols.d.cts.map +1 -0
- package/build/symbols.d.mts +114 -0
- package/build/symbols.d.mts.map +1 -0
- package/build/symbols.js +115 -116
- package/build/symbols.js.map +1 -1
- package/build/tsdoc.cjs +22 -0
- package/build/tsdoc.cjs.map +1 -0
- package/build/tsdoc.d.cts +15 -0
- package/build/tsdoc.d.cts.map +1 -0
- package/build/tsdoc.d.mts +15 -0
- package/build/tsdoc.d.mts.map +1 -0
- package/build/tsdoc.js +18 -15
- package/build/tsdoc.js.map +1 -1
- package/build/utils.cjs +173 -0
- package/build/utils.cjs.map +1 -0
- package/build/utils.d.cts +34 -0
- package/build/utils.d.cts.map +1 -0
- package/build/utils.d.mts +34 -0
- package/build/utils.d.mts.map +1 -0
- package/build/utils.js +112 -166
- package/build/utils.js.map +1 -1
- package/build/write-json-schema.cjs +23 -0
- package/build/write-json-schema.cjs.map +1 -0
- package/build/write-json-schema.d.cts +1 -0
- package/build/write-json-schema.d.mts +1 -0
- package/build/write-json-schema.js +19 -13
- package/build/write-json-schema.js.map +1 -1
- package/package.json +28 -5
- package/build/EntityDbMetadata.d.ts +0 -271
- package/build/codemods/Codemod.d.ts +0 -13
- package/build/codemods/Codemod.js.map +0 -1
- package/build/codemods/JscodeshiftMod.d.ts +0 -10
- package/build/codemods/codemod_0001-rename_has_async_property.d.ts +0 -6
- package/build/codemods/codemod_0002-rename_async_query_fields.d.ts +0 -6
- package/build/codemods/codemod_0003-rename_find_paginated.d.ts +0 -6
- package/build/codemods/index.d.ts +0 -8
- package/build/config.d.ts +0 -178
- package/build/docs/cache.d.ts +0 -13
- package/build/docs/generate-metadata-docs.d.ts +0 -5
- package/build/docs/index.d.ts +0 -13
- package/build/docs/parsing.d.ts +0 -45
- package/build/findEntityScopes.d.ts +0 -10
- package/build/foreignKeyOrdering.d.ts +0 -2
- package/build/generate.d.ts +0 -11
- package/build/generateEntitiesFile.d.ts +0 -6
- package/build/generateEntityCodegenFile.d.ts +0 -11
- package/build/generateEntityFile.d.ts +0 -5
- package/build/generateEntityTestFile.d.ts +0 -5
- package/build/generateEnumFile.d.ts +0 -4
- package/build/generateFactoriesFiles.d.ts +0 -3
- package/build/generateMetadataFile.d.ts +0 -4
- package/build/generatePgEnumFile.d.ts +0 -4
- package/build/index.d.ts +0 -11
- package/build/inheritance.d.ts +0 -9
- package/build/keywords.d.ts +0 -1
- package/build/loadMetadata.d.ts +0 -25
- package/build/logger.d.ts +0 -9
- package/build/scanEntityFiles.d.ts +0 -4
- package/build/symbols.d.ts +0 -110
- package/build/tsdoc.d.ts +0 -11
- package/build/utils.d.ts +0 -30
- package/build/write-json-schema.d.ts +0 -1
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
let fs = require("fs");
|
|
3
|
+
let path = require("path");
|
|
4
|
+
//#region src/installSkills.ts
|
|
5
|
+
/** The bundled skills live at the package root, alongside `build`/`src`. */
|
|
6
|
+
const bundledSkillsDir = (0, path.resolve)(__dirname, "../skills");
|
|
7
|
+
/**
|
|
8
|
+
* Targets that each get a full copy of every skill directory.
|
|
9
|
+
*
|
|
10
|
+
* `.claude/skills` is read by Claude Code (and opencode); `.agents/skills` is read
|
|
11
|
+
* by Codex (and opencode), so writing both gives native coverage across all three.
|
|
12
|
+
*/
|
|
13
|
+
const skillTargets = [".claude/skills", ".agents/skills"];
|
|
14
|
+
/** Joist owns the `joist-` skill namespace, so stale ones there are ours to prune. */
|
|
15
|
+
const skillPrefix = "joist-";
|
|
16
|
+
/**
|
|
17
|
+
* Copies Joist's bundled Agent Skills into the project so coding agents can
|
|
18
|
+
* discover them, then prunes any previously-installed Joist skills that no
|
|
19
|
+
* longer ship with this version.
|
|
20
|
+
*
|
|
21
|
+
* The skills are framework-owned and rewritten on every codegen run, so users
|
|
22
|
+
* should not hand-edit them (re-run codegen to pick up new Joist versions).
|
|
23
|
+
*
|
|
24
|
+
* Logs only what actually changed: the added and removed skill names, staying
|
|
25
|
+
* quiet when nothing changed.
|
|
26
|
+
*/
|
|
27
|
+
async function installSkills(rootDir = ".") {
|
|
28
|
+
const bundled = await readSkillNames(bundledSkillsDir);
|
|
29
|
+
if (bundled.length === 0) return;
|
|
30
|
+
const bundledSet = new Set(bundled);
|
|
31
|
+
const existingPerTarget = await Promise.all(skillTargets.map((target) => readSkillNames((0, path.join)(rootDir, target))));
|
|
32
|
+
await Promise.all(skillTargets.flatMap((target) => bundled.map((name) => fs.promises.cp((0, path.join)(bundledSkillsDir, name), (0, path.join)(rootDir, target, name), {
|
|
33
|
+
recursive: true,
|
|
34
|
+
force: true
|
|
35
|
+
}))));
|
|
36
|
+
const removed = /* @__PURE__ */ new Set();
|
|
37
|
+
await Promise.all(skillTargets.map(async (target, i) => {
|
|
38
|
+
const stale = existingPerTarget[i].filter((name) => name.startsWith(skillPrefix) && !bundledSet.has(name));
|
|
39
|
+
await Promise.all(stale.map(async (name) => {
|
|
40
|
+
removed.add(name);
|
|
41
|
+
await fs.promises.rm((0, path.join)(rootDir, target, name), {
|
|
42
|
+
recursive: true,
|
|
43
|
+
force: true
|
|
44
|
+
});
|
|
45
|
+
}));
|
|
46
|
+
}));
|
|
47
|
+
const added = bundled.filter((name) => existingPerTarget.some((names) => !names.includes(name)));
|
|
48
|
+
if (added.length > 0) {
|
|
49
|
+
console.log(`Added ${added.length} Joist skill(s) to ${skillTargets.join(" and ")}:`);
|
|
50
|
+
for (const name of added) console.log(` + ${name}`);
|
|
51
|
+
}
|
|
52
|
+
if (removed.size > 0) {
|
|
53
|
+
console.log(`Removed ${removed.size} stale Joist skill(s) from ${skillTargets.join(" and ")}:`);
|
|
54
|
+
for (const name of removed) console.log(` - ${name}`);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
/** Lists the skill directory names in a dir, or `[]` if it's missing. I.e. ["joist-upsert", ...]. */
|
|
58
|
+
async function readSkillNames(dir) {
|
|
59
|
+
try {
|
|
60
|
+
return (await fs.promises.readdir(dir, { withFileTypes: true })).filter((e) => e.isDirectory()).map((e) => e.name);
|
|
61
|
+
} catch {
|
|
62
|
+
return [];
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
//#endregion
|
|
66
|
+
exports.installSkills = installSkills;
|
|
67
|
+
|
|
68
|
+
//# sourceMappingURL=installSkills.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"installSkills.cjs","names":["resolve","join"],"sources":["../src/installSkills.ts"],"sourcesContent":["import { promises as fs } from \"fs\";\nimport { join, resolve } from \"path\";\n\n/** The bundled skills live at the package root, alongside `build`/`src`. */\nconst bundledSkillsDir = resolve(import.meta.dirname, \"../skills\");\n\n/**\n * Targets that each get a full copy of every skill directory.\n *\n * `.claude/skills` is read by Claude Code (and opencode); `.agents/skills` is read\n * by Codex (and opencode), so writing both gives native coverage across all three.\n */\nconst skillTargets = [\".claude/skills\", \".agents/skills\"];\n\n/** Joist owns the `joist-` skill namespace, so stale ones there are ours to prune. */\nconst skillPrefix = \"joist-\";\n\n/**\n * Copies Joist's bundled Agent Skills into the project so coding agents can\n * discover them, then prunes any previously-installed Joist skills that no\n * longer ship with this version.\n *\n * The skills are framework-owned and rewritten on every codegen run, so users\n * should not hand-edit them (re-run codegen to pick up new Joist versions).\n *\n * Logs only what actually changed: the added and removed skill names, staying\n * quiet when nothing changed.\n */\nexport async function installSkills(rootDir: string = \".\"): Promise<void> {\n const bundled = await readSkillNames(bundledSkillsDir);\n if (bundled.length === 0) return;\n const bundledSet = new Set(bundled);\n\n // Snapshot what each target already has before we copy/remove, so we can diff.\n const existingPerTarget = await Promise.all(skillTargets.map((target) => readSkillNames(join(rootDir, target))));\n\n // Always `cp` the bundled skills into each target, overwriting any existing ones\n await Promise.all(\n skillTargets.flatMap((target) =>\n bundled.map((name) =>\n fs.cp(join(bundledSkillsDir, name), join(rootDir, target, name), { recursive: true, force: true }),\n ),\n ),\n );\n\n // Prune stale Joist skills (previously installed here, but no longer bundled).\n const removed = new Set<string>();\n await Promise.all(\n skillTargets.map(async (target, i) => {\n const stale = existingPerTarget[i].filter((name) => name.startsWith(skillPrefix) && !bundledSet.has(name));\n await Promise.all(\n stale.map(async (name) => {\n removed.add(name);\n await fs.rm(join(rootDir, target, name), { recursive: true, force: true });\n }),\n );\n }),\n );\n\n // A skill is \"new\" if it was missing from at least one target before this run.\n const added = bundled.filter((name) => existingPerTarget.some((names) => !names.includes(name)));\n\n if (added.length > 0) {\n console.log(`Added ${added.length} Joist skill(s) to ${skillTargets.join(\" and \")}:`);\n for (const name of added) console.log(` + ${name}`);\n }\n if (removed.size > 0) {\n console.log(`Removed ${removed.size} stale Joist skill(s) from ${skillTargets.join(\" and \")}:`);\n for (const name of removed) console.log(` - ${name}`);\n }\n}\n\n/** Lists the skill directory names in a dir, or `[]` if it's missing. I.e. [\"joist-upsert\", ...]. */\nasync function readSkillNames(dir: string): Promise<string[]> {\n try {\n const entries = await fs.readdir(dir, { withFileTypes: true });\n return entries.filter((e) => e.isDirectory()).map((e) => e.name);\n } catch {\n return [];\n }\n}\n"],"mappings":";;;;;AAIA,MAAM,oBAAA,GAAmBA,KAAAA,QAAAA,CAAAA,WAA6B,WAAW;;;;;;;AAQjE,MAAM,eAAe,CAAC,kBAAkB,gBAAgB;;AAGxD,MAAM,cAAc;;;;;;;;;;;;AAapB,eAAsB,cAAc,UAAkB,KAAoB;CACxE,MAAM,UAAU,MAAM,eAAe,gBAAgB;CACrD,IAAI,QAAQ,WAAW,GAAG;CAC1B,MAAM,aAAa,IAAI,IAAI,OAAO;CAGlC,MAAM,oBAAoB,MAAM,QAAQ,IAAI,aAAa,KAAK,WAAW,gBAAA,GAAeC,KAAAA,KAAAA,CAAK,SAAS,MAAM,CAAC,CAAC,CAAC;CAG/G,MAAM,QAAQ,IACZ,aAAa,SAAS,WACpB,QAAQ,KAAK,SACX,GAAA,SAAG,IAAA,GAAGA,KAAAA,KAAAA,CAAK,kBAAkB,IAAI,IAAA,GAAGA,KAAAA,KAAAA,CAAK,SAAS,QAAQ,IAAI,GAAG;EAAE,WAAW;EAAM,OAAO;CAAK,CAAC,CACnG,CACF,CACF;CAGA,MAAM,0BAAU,IAAI,IAAY;CAChC,MAAM,QAAQ,IACZ,aAAa,IAAI,OAAO,QAAQ,MAAM;EACpC,MAAM,QAAQ,kBAAkB,EAAE,CAAC,QAAQ,SAAS,KAAK,WAAW,WAAW,KAAK,CAAC,WAAW,IAAI,IAAI,CAAC;EACzG,MAAM,QAAQ,IACZ,MAAM,IAAI,OAAO,SAAS;GACxB,QAAQ,IAAI,IAAI;GAChB,MAAM,GAAA,SAAG,IAAA,GAAGA,KAAAA,KAAAA,CAAK,SAAS,QAAQ,IAAI,GAAG;IAAE,WAAW;IAAM,OAAO;GAAK,CAAC;EAC3E,CAAC,CACH;CACF,CAAC,CACH;CAGA,MAAM,QAAQ,QAAQ,QAAQ,SAAS,kBAAkB,MAAM,UAAU,CAAC,MAAM,SAAS,IAAI,CAAC,CAAC;CAE/F,IAAI,MAAM,SAAS,GAAG;EACpB,QAAQ,IAAI,SAAS,MAAM,OAAO,qBAAqB,aAAa,KAAK,OAAO,EAAE,EAAE;EACpF,KAAK,MAAM,QAAQ,OAAO,QAAQ,IAAI,OAAO,MAAM;CACrD;CACA,IAAI,QAAQ,OAAO,GAAG;EACpB,QAAQ,IAAI,WAAW,QAAQ,KAAK,6BAA6B,aAAa,KAAK,OAAO,EAAE,EAAE;EAC9F,KAAK,MAAM,QAAQ,SAAS,QAAQ,IAAI,OAAO,MAAM;CACvD;AACF;;AAGA,eAAe,eAAe,KAAgC;CAC5D,IAAI;EAEF,QAAO,MADe,GAAA,SAAG,QAAQ,KAAK,EAAE,eAAe,KAAK,CAAC,EAAA,CAC9C,QAAQ,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,IAAI;CACjE,QAAQ;EACN,OAAO,CAAC;CACV;AACF"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
//#region src/installSkills.d.ts
|
|
1
2
|
/**
|
|
2
3
|
* Copies Joist's bundled Agent Skills into the project so coding agents can
|
|
3
4
|
* discover them, then prunes any previously-installed Joist skills that no
|
|
@@ -9,4 +10,7 @@
|
|
|
9
10
|
* Logs only what actually changed: the added and removed skill names, staying
|
|
10
11
|
* quiet when nothing changed.
|
|
11
12
|
*/
|
|
12
|
-
|
|
13
|
+
declare function installSkills(rootDir?: string): Promise<void>;
|
|
14
|
+
//#endregion
|
|
15
|
+
export { installSkills };
|
|
16
|
+
//# sourceMappingURL=installSkills.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"installSkills.d.cts","names":[],"sources":["../src/installSkills.ts"],"mappings":";;;;;;;;;;;;iBA4BsB,cAAc,mBAAwB"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
//#region src/installSkills.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* Copies Joist's bundled Agent Skills into the project so coding agents can
|
|
4
|
+
* discover them, then prunes any previously-installed Joist skills that no
|
|
5
|
+
* longer ship with this version.
|
|
6
|
+
*
|
|
7
|
+
* The skills are framework-owned and rewritten on every codegen run, so users
|
|
8
|
+
* should not hand-edit them (re-run codegen to pick up new Joist versions).
|
|
9
|
+
*
|
|
10
|
+
* Logs only what actually changed: the added and removed skill names, staying
|
|
11
|
+
* quiet when nothing changed.
|
|
12
|
+
*/
|
|
13
|
+
declare function installSkills(rootDir?: string): Promise<void>;
|
|
14
|
+
//#endregion
|
|
15
|
+
export { installSkills };
|
|
16
|
+
//# sourceMappingURL=installSkills.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"installSkills.d.mts","names":[],"sources":["../src/installSkills.ts"],"mappings":";;;;;;;;;;;;iBA4BsB,cAAc,mBAAwB"}
|
package/build/installSkills.js
CHANGED
|
@@ -1,69 +1,67 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const fs_1 = require("fs");
|
|
5
|
-
const path_1 = require("path");
|
|
1
|
+
import { promises } from "fs";
|
|
2
|
+
import { join, resolve } from "path";
|
|
3
|
+
//#region src/installSkills.ts
|
|
6
4
|
/** The bundled skills live at the package root, alongside `build`/`src`. */
|
|
7
|
-
const bundledSkillsDir = (
|
|
5
|
+
const bundledSkillsDir = resolve(import.meta.dirname, "../skills");
|
|
8
6
|
/**
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
7
|
+
* Targets that each get a full copy of every skill directory.
|
|
8
|
+
*
|
|
9
|
+
* `.claude/skills` is read by Claude Code (and opencode); `.agents/skills` is read
|
|
10
|
+
* by Codex (and opencode), so writing both gives native coverage across all three.
|
|
11
|
+
*/
|
|
14
12
|
const skillTargets = [".claude/skills", ".agents/skills"];
|
|
15
13
|
/** Joist owns the `joist-` skill namespace, so stale ones there are ours to prune. */
|
|
16
14
|
const skillPrefix = "joist-";
|
|
17
15
|
/**
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
16
|
+
* Copies Joist's bundled Agent Skills into the project so coding agents can
|
|
17
|
+
* discover them, then prunes any previously-installed Joist skills that no
|
|
18
|
+
* longer ship with this version.
|
|
19
|
+
*
|
|
20
|
+
* The skills are framework-owned and rewritten on every codegen run, so users
|
|
21
|
+
* should not hand-edit them (re-run codegen to pick up new Joist versions).
|
|
22
|
+
*
|
|
23
|
+
* Logs only what actually changed: the added and removed skill names, staying
|
|
24
|
+
* quiet when nothing changed.
|
|
25
|
+
*/
|
|
28
26
|
async function installSkills(rootDir = ".") {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
}
|
|
27
|
+
const bundled = await readSkillNames(bundledSkillsDir);
|
|
28
|
+
if (bundled.length === 0) return;
|
|
29
|
+
const bundledSet = new Set(bundled);
|
|
30
|
+
const existingPerTarget = await Promise.all(skillTargets.map((target) => readSkillNames(join(rootDir, target))));
|
|
31
|
+
await Promise.all(skillTargets.flatMap((target) => bundled.map((name) => promises.cp(join(bundledSkillsDir, name), join(rootDir, target, name), {
|
|
32
|
+
recursive: true,
|
|
33
|
+
force: true
|
|
34
|
+
}))));
|
|
35
|
+
const removed = /* @__PURE__ */ new Set();
|
|
36
|
+
await Promise.all(skillTargets.map(async (target, i) => {
|
|
37
|
+
const stale = existingPerTarget[i].filter((name) => name.startsWith(skillPrefix) && !bundledSet.has(name));
|
|
38
|
+
await Promise.all(stale.map(async (name) => {
|
|
39
|
+
removed.add(name);
|
|
40
|
+
await promises.rm(join(rootDir, target, name), {
|
|
41
|
+
recursive: true,
|
|
42
|
+
force: true
|
|
43
|
+
});
|
|
44
|
+
}));
|
|
45
|
+
}));
|
|
46
|
+
const added = bundled.filter((name) => existingPerTarget.some((names) => !names.includes(name)));
|
|
47
|
+
if (added.length > 0) {
|
|
48
|
+
console.log(`Added ${added.length} Joist skill(s) to ${skillTargets.join(" and ")}:`);
|
|
49
|
+
for (const name of added) console.log(` + ${name}`);
|
|
50
|
+
}
|
|
51
|
+
if (removed.size > 0) {
|
|
52
|
+
console.log(`Removed ${removed.size} stale Joist skill(s) from ${skillTargets.join(" and ")}:`);
|
|
53
|
+
for (const name of removed) console.log(` - ${name}`);
|
|
54
|
+
}
|
|
58
55
|
}
|
|
59
56
|
/** Lists the skill directory names in a dir, or `[]` if it's missing. I.e. ["joist-upsert", ...]. */
|
|
60
57
|
async function readSkillNames(dir) {
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
return [];
|
|
67
|
-
}
|
|
58
|
+
try {
|
|
59
|
+
return (await promises.readdir(dir, { withFileTypes: true })).filter((e) => e.isDirectory()).map((e) => e.name);
|
|
60
|
+
} catch {
|
|
61
|
+
return [];
|
|
62
|
+
}
|
|
68
63
|
}
|
|
64
|
+
//#endregion
|
|
65
|
+
export { installSkills };
|
|
66
|
+
|
|
69
67
|
//# sourceMappingURL=installSkills.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"installSkills.js","
|
|
1
|
+
{"version":3,"file":"installSkills.js","names":["fs"],"sources":["../src/installSkills.ts"],"sourcesContent":["import { promises as fs } from \"fs\";\nimport { join, resolve } from \"path\";\n\n/** The bundled skills live at the package root, alongside `build`/`src`. */\nconst bundledSkillsDir = resolve(import.meta.dirname, \"../skills\");\n\n/**\n * Targets that each get a full copy of every skill directory.\n *\n * `.claude/skills` is read by Claude Code (and opencode); `.agents/skills` is read\n * by Codex (and opencode), so writing both gives native coverage across all three.\n */\nconst skillTargets = [\".claude/skills\", \".agents/skills\"];\n\n/** Joist owns the `joist-` skill namespace, so stale ones there are ours to prune. */\nconst skillPrefix = \"joist-\";\n\n/**\n * Copies Joist's bundled Agent Skills into the project so coding agents can\n * discover them, then prunes any previously-installed Joist skills that no\n * longer ship with this version.\n *\n * The skills are framework-owned and rewritten on every codegen run, so users\n * should not hand-edit them (re-run codegen to pick up new Joist versions).\n *\n * Logs only what actually changed: the added and removed skill names, staying\n * quiet when nothing changed.\n */\nexport async function installSkills(rootDir: string = \".\"): Promise<void> {\n const bundled = await readSkillNames(bundledSkillsDir);\n if (bundled.length === 0) return;\n const bundledSet = new Set(bundled);\n\n // Snapshot what each target already has before we copy/remove, so we can diff.\n const existingPerTarget = await Promise.all(skillTargets.map((target) => readSkillNames(join(rootDir, target))));\n\n // Always `cp` the bundled skills into each target, overwriting any existing ones\n await Promise.all(\n skillTargets.flatMap((target) =>\n bundled.map((name) =>\n fs.cp(join(bundledSkillsDir, name), join(rootDir, target, name), { recursive: true, force: true }),\n ),\n ),\n );\n\n // Prune stale Joist skills (previously installed here, but no longer bundled).\n const removed = new Set<string>();\n await Promise.all(\n skillTargets.map(async (target, i) => {\n const stale = existingPerTarget[i].filter((name) => name.startsWith(skillPrefix) && !bundledSet.has(name));\n await Promise.all(\n stale.map(async (name) => {\n removed.add(name);\n await fs.rm(join(rootDir, target, name), { recursive: true, force: true });\n }),\n );\n }),\n );\n\n // A skill is \"new\" if it was missing from at least one target before this run.\n const added = bundled.filter((name) => existingPerTarget.some((names) => !names.includes(name)));\n\n if (added.length > 0) {\n console.log(`Added ${added.length} Joist skill(s) to ${skillTargets.join(\" and \")}:`);\n for (const name of added) console.log(` + ${name}`);\n }\n if (removed.size > 0) {\n console.log(`Removed ${removed.size} stale Joist skill(s) from ${skillTargets.join(\" and \")}:`);\n for (const name of removed) console.log(` - ${name}`);\n }\n}\n\n/** Lists the skill directory names in a dir, or `[]` if it's missing. I.e. [\"joist-upsert\", ...]. */\nasync function readSkillNames(dir: string): Promise<string[]> {\n try {\n const entries = await fs.readdir(dir, { withFileTypes: true });\n return entries.filter((e) => e.isDirectory()).map((e) => e.name);\n } catch {\n return [];\n }\n}\n"],"mappings":";;;;AAIA,MAAM,mBAAmB,QAAQ,YAAY,SAAS,WAAW;;;;;;;AAQjE,MAAM,eAAe,CAAC,kBAAkB,gBAAgB;;AAGxD,MAAM,cAAc;;;;;;;;;;;;AAapB,eAAsB,cAAc,UAAkB,KAAoB;CACxE,MAAM,UAAU,MAAM,eAAe,gBAAgB;CACrD,IAAI,QAAQ,WAAW,GAAG;CAC1B,MAAM,aAAa,IAAI,IAAI,OAAO;CAGlC,MAAM,oBAAoB,MAAM,QAAQ,IAAI,aAAa,KAAK,WAAW,eAAe,KAAK,SAAS,MAAM,CAAC,CAAC,CAAC;CAG/G,MAAM,QAAQ,IACZ,aAAa,SAAS,WACpB,QAAQ,KAAK,SACXA,SAAG,GAAG,KAAK,kBAAkB,IAAI,GAAG,KAAK,SAAS,QAAQ,IAAI,GAAG;EAAE,WAAW;EAAM,OAAO;CAAK,CAAC,CACnG,CACF,CACF;CAGA,MAAM,0BAAU,IAAI,IAAY;CAChC,MAAM,QAAQ,IACZ,aAAa,IAAI,OAAO,QAAQ,MAAM;EACpC,MAAM,QAAQ,kBAAkB,EAAE,CAAC,QAAQ,SAAS,KAAK,WAAW,WAAW,KAAK,CAAC,WAAW,IAAI,IAAI,CAAC;EACzG,MAAM,QAAQ,IACZ,MAAM,IAAI,OAAO,SAAS;GACxB,QAAQ,IAAI,IAAI;GAChB,MAAMA,SAAG,GAAG,KAAK,SAAS,QAAQ,IAAI,GAAG;IAAE,WAAW;IAAM,OAAO;GAAK,CAAC;EAC3E,CAAC,CACH;CACF,CAAC,CACH;CAGA,MAAM,QAAQ,QAAQ,QAAQ,SAAS,kBAAkB,MAAM,UAAU,CAAC,MAAM,SAAS,IAAI,CAAC,CAAC;CAE/F,IAAI,MAAM,SAAS,GAAG;EACpB,QAAQ,IAAI,SAAS,MAAM,OAAO,qBAAqB,aAAa,KAAK,OAAO,EAAE,EAAE;EACpF,KAAK,MAAM,QAAQ,OAAO,QAAQ,IAAI,OAAO,MAAM;CACrD;CACA,IAAI,QAAQ,OAAO,GAAG;EACpB,QAAQ,IAAI,WAAW,QAAQ,KAAK,6BAA6B,aAAa,KAAK,OAAO,EAAE,EAAE;EAC9F,KAAK,MAAM,QAAQ,SAAS,QAAQ,IAAI,OAAO,MAAM;CACvD;AACF;;AAGA,eAAe,eAAe,KAAgC;CAC5D,IAAI;EAEF,QAAO,MADeA,SAAG,QAAQ,KAAK,EAAE,eAAe,KAAK,CAAC,EAAA,CAC9C,QAAQ,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,IAAI;CACjE,QAAQ;EACN,OAAO,CAAC;CACV;AACF"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
//#region src/keywords.ts
|
|
3
|
+
const keywords = `abstract arguments await boolean break byte case catch char class const continue debugger default delete do double else enum eval export extends false final finally float for function goto if implements import in instanceof int interface let long native new null package private protected public return short static super switch synchronized this throw throws transient true try typeof var void volatile while with yield`.split(" ");
|
|
4
|
+
//#endregion
|
|
5
|
+
exports.keywords = keywords;
|
|
6
|
+
|
|
7
|
+
//# sourceMappingURL=keywords.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keywords.cjs","names":[],"sources":["../src/keywords.ts"],"sourcesContent":["export const keywords =\n `abstract arguments await boolean break byte case catch char class const continue debugger default delete do double else enum eval export extends false final finally float for function goto if implements import in instanceof int interface let long native new null package private protected public return short static super switch synchronized this throw throws transient true try typeof var void volatile while with yield`.split(\n \" \",\n );\n"],"mappings":";;AAAA,MAAa,WACX,uaAAua,MACra,GACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keywords.d.cts","names":[],"sources":["../src/keywords.ts"],"mappings":";cAAa"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keywords.d.mts","names":[],"sources":["../src/keywords.ts"],"mappings":";cAAa"}
|
package/build/keywords.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
//#region src/keywords.ts
|
|
2
|
+
const keywords = `abstract arguments await boolean break byte case catch char class const continue debugger default delete do double else enum eval export extends false final finally float for function goto if implements import in instanceof int interface let long native new null package private protected public return short static super switch synchronized this throw throws transient true try typeof var void volatile while with yield`.split(" ");
|
|
3
|
+
//#endregion
|
|
4
|
+
export { keywords };
|
|
5
|
+
|
|
5
6
|
//# sourceMappingURL=keywords.js.map
|
package/build/keywords.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keywords.js","
|
|
1
|
+
{"version":3,"file":"keywords.js","names":[],"sources":["../src/keywords.ts"],"sourcesContent":["export const keywords =\n `abstract arguments await boolean break byte case catch char class const continue debugger default delete do double else enum eval export extends false final finally float for function goto if implements import in instanceof int interface let long native new null package private protected public return short static super switch synchronized this throw throws transient true try typeof var void volatile while with yield`.split(\n \" \",\n );\n"],"mappings":";AAAA,MAAa,WACX,uaAAua,MACra,GACF"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
const require_utils = require("./utils.cjs");
|
|
3
|
+
require("./index.cjs");
|
|
4
|
+
const require_EntityDbMetadata = require("./EntityDbMetadata.cjs");
|
|
5
|
+
let change_case = require("change-case");
|
|
6
|
+
let pg_structure = require("pg-structure");
|
|
7
|
+
require("pg");
|
|
8
|
+
//#region src/loadMetadata.ts
|
|
9
|
+
async function loadEnumMetadata(db, client, config) {
|
|
10
|
+
const promises = db.tables.filter((t) => require_utils.isEnumTable(config, t)).mapToArray(async (table) => {
|
|
11
|
+
const rows = (await client.query(`SELECT * FROM ${table.name} ORDER BY id`)).rows.map((row) => row);
|
|
12
|
+
const extraPrimitives = new require_EntityDbMetadata.EntityDbMetadata(config, table).primitives.filter((p) => !["code", "name"].includes(p.fieldName));
|
|
13
|
+
return [table.name, {
|
|
14
|
+
table,
|
|
15
|
+
idType: table.columns.get("id").type.name === "uuid" ? "uuid" : "integer",
|
|
16
|
+
name: (0, change_case.pascalCase)(table.name),
|
|
17
|
+
rows,
|
|
18
|
+
extraPrimitives
|
|
19
|
+
}];
|
|
20
|
+
});
|
|
21
|
+
return Object.fromEntries(await Promise.all(promises));
|
|
22
|
+
}
|
|
23
|
+
async function loadPgEnumMetadata(db, client, config) {
|
|
24
|
+
return db.types.reduce((all, type) => {
|
|
25
|
+
if (type instanceof pg_structure.EnumType) return {
|
|
26
|
+
...all,
|
|
27
|
+
[type.name]: {
|
|
28
|
+
name: (0, change_case.pascalCase)(type.name),
|
|
29
|
+
values: type.values
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
return all;
|
|
33
|
+
}, {});
|
|
34
|
+
}
|
|
35
|
+
//#endregion
|
|
36
|
+
exports.loadEnumMetadata = loadEnumMetadata;
|
|
37
|
+
exports.loadPgEnumMetadata = loadPgEnumMetadata;
|
|
38
|
+
|
|
39
|
+
//# sourceMappingURL=loadMetadata.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loadMetadata.cjs","names":["isEnumTable","EntityDbMetadata","pascalCase","EnumType"],"sources":["../src/loadMetadata.ts"],"sourcesContent":["import { pascalCase } from \"change-case\";\nimport { type Client } from \"pg\";\nimport { type Db, EnumType, type Table } from \"pg-structure\";\n\nimport { type Config, EntityDbMetadata, type PrimitiveField } from \"./index.ts\";\nimport { isEnumTable } from \"./utils.ts\";\n\n/** A map from Enum table name to the rows currently in the table. */\nexport type EnumTableData = {\n table: Table;\n idType: \"integer\" | \"uuid\";\n // Pascal case version of table name\n name: string;\n rows: EnumRow[];\n extraPrimitives: PrimitiveField[];\n};\n\nexport type PgEnumData = {\n name: string;\n values: string[];\n};\n\nexport type EnumMetadata = Record<string, EnumTableData>;\nexport type PgEnumMetadata = Record<string, PgEnumData>;\n\nexport type EnumRow = { id: number; code: string; name: string; [key: string]: any };\n\nexport async function loadEnumMetadata(db: Db, client: Client, config: Config): Promise<EnumMetadata> {\n const promises = db.tables\n .filter((t) => isEnumTable(config, t))\n .mapToArray(async (table) => {\n const result = await client.query(`SELECT * FROM ${table.name} ORDER BY id`);\n const rows = result.rows.map((row) => row as EnumRow);\n // We're not really an entity, but appropriate EntityDbMetadata's `primitives` filtering\n const extraPrimitives = new EntityDbMetadata(config, table).primitives.filter(\n (p) => ![\"code\", \"name\"].includes(p.fieldName),\n );\n return [\n table.name,\n {\n table,\n idType: table.columns.get(\"id\")!.type.name === \"uuid\" ? \"uuid\" : \"integer\",\n name: pascalCase(table.name), // use tableToEntityName?\n rows,\n extraPrimitives,\n },\n ] satisfies [string, EnumTableData];\n });\n return Object.fromEntries(await Promise.all(promises));\n}\n\nexport async function loadPgEnumMetadata(db: Db, client: Client, config: Config): Promise<PgEnumMetadata> {\n return db.types.reduce((all, type) => {\n if (type instanceof EnumType) {\n return {\n ...all,\n [type.name]: {\n name: pascalCase(type.name),\n values: type.values,\n },\n };\n }\n return all;\n }, {});\n}\n"],"mappings":";;;;;;;;AA2BA,eAAsB,iBAAiB,IAAQ,QAAgB,QAAuC;CACpG,MAAM,WAAW,GAAG,OACjB,QAAQ,MAAMA,cAAAA,YAAY,QAAQ,CAAC,CAAC,CAAC,CACrC,WAAW,OAAO,UAAU;EAE3B,MAAM,QAAO,MADQ,OAAO,MAAM,iBAAiB,MAAM,KAAK,aAAa,EAAA,CACvD,KAAK,KAAK,QAAQ,GAAc;EAEpD,MAAM,kBAAkB,IAAIC,yBAAAA,iBAAiB,QAAQ,KAAK,CAAC,CAAC,WAAW,QACpE,MAAM,CAAC,CAAC,QAAQ,MAAM,CAAC,CAAC,SAAS,EAAE,SAAS,CAC/C;EACA,OAAO,CACL,MAAM,MACN;GACE;GACA,QAAQ,MAAM,QAAQ,IAAI,IAAI,CAAC,CAAE,KAAK,SAAS,SAAS,SAAS;GACjE,OAAA,GAAMC,YAAAA,WAAAA,CAAW,MAAM,IAAI;GAC3B;GACA;EACF,CACF;CACF,CAAC;CACH,OAAO,OAAO,YAAY,MAAM,QAAQ,IAAI,QAAQ,CAAC;AACvD;AAEA,eAAsB,mBAAmB,IAAQ,QAAgB,QAAyC;CACxG,OAAO,GAAG,MAAM,QAAQ,KAAK,SAAS;EACpC,IAAI,gBAAgBC,aAAAA,UAClB,OAAO;GACL,GAAG;IACF,KAAK,OAAO;IACX,OAAA,GAAMD,YAAAA,WAAAA,CAAW,KAAK,IAAI;IAC1B,QAAQ,KAAK;GACf;EACF;EAEF,OAAO;CACT,GAAG,CAAC,CAAC;AACP"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { Config } from "./config.cjs";
|
|
2
|
+
import "./index.cjs";
|
|
3
|
+
import { PrimitiveField } from "./EntityDbMetadata.cjs";
|
|
4
|
+
import { Db, Table } from "pg-structure";
|
|
5
|
+
import { Client } from "pg";
|
|
6
|
+
//#region src/loadMetadata.d.ts
|
|
7
|
+
/** A map from Enum table name to the rows currently in the table. */
|
|
8
|
+
type EnumTableData = {
|
|
9
|
+
table: Table;
|
|
10
|
+
idType: "integer" | "uuid";
|
|
11
|
+
name: string;
|
|
12
|
+
rows: EnumRow[];
|
|
13
|
+
extraPrimitives: PrimitiveField[];
|
|
14
|
+
};
|
|
15
|
+
type PgEnumData = {
|
|
16
|
+
name: string;
|
|
17
|
+
values: string[];
|
|
18
|
+
};
|
|
19
|
+
type EnumMetadata = Record<string, EnumTableData>;
|
|
20
|
+
type PgEnumMetadata = Record<string, PgEnumData>;
|
|
21
|
+
type EnumRow = {
|
|
22
|
+
id: number;
|
|
23
|
+
code: string;
|
|
24
|
+
name: string;
|
|
25
|
+
[key: string]: any;
|
|
26
|
+
};
|
|
27
|
+
declare function loadEnumMetadata(db: Db, client: Client, config: Config): Promise<EnumMetadata>;
|
|
28
|
+
declare function loadPgEnumMetadata(db: Db, client: Client, config: Config): Promise<PgEnumMetadata>;
|
|
29
|
+
//#endregion
|
|
30
|
+
export { EnumMetadata, EnumRow, EnumTableData, PgEnumData, PgEnumMetadata, loadEnumMetadata, loadPgEnumMetadata };
|
|
31
|
+
//# sourceMappingURL=loadMetadata.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loadMetadata.d.cts","names":[],"sources":["../src/loadMetadata.ts"],"mappings":";;;;;;;KAQY;EACV,OAAO;EACP;EAEA;EACA,MAAM;EACN,iBAAiB;;KAGP;EACV;EACA;;KAGU,eAAe,eAAe;KAC9B,iBAAiB,eAAe;KAEhC;EAAY;EAAY;EAAc;GAAe;;iBAE3C,iBAAiB,IAAI,IAAI,QAAQ,QAAQ,QAAQ,SAAS,QAAQ;iBAwBlE,mBAAmB,IAAI,IAAI,QAAQ,QAAQ,QAAQ,SAAS,QAAQ"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { Config } from "./config.mjs";
|
|
2
|
+
import "./index.mjs";
|
|
3
|
+
import { PrimitiveField } from "./EntityDbMetadata.mjs";
|
|
4
|
+
import { Db, Table } from "pg-structure";
|
|
5
|
+
import { Client } from "pg";
|
|
6
|
+
//#region src/loadMetadata.d.ts
|
|
7
|
+
/** A map from Enum table name to the rows currently in the table. */
|
|
8
|
+
type EnumTableData = {
|
|
9
|
+
table: Table;
|
|
10
|
+
idType: "integer" | "uuid";
|
|
11
|
+
name: string;
|
|
12
|
+
rows: EnumRow[];
|
|
13
|
+
extraPrimitives: PrimitiveField[];
|
|
14
|
+
};
|
|
15
|
+
type PgEnumData = {
|
|
16
|
+
name: string;
|
|
17
|
+
values: string[];
|
|
18
|
+
};
|
|
19
|
+
type EnumMetadata = Record<string, EnumTableData>;
|
|
20
|
+
type PgEnumMetadata = Record<string, PgEnumData>;
|
|
21
|
+
type EnumRow = {
|
|
22
|
+
id: number;
|
|
23
|
+
code: string;
|
|
24
|
+
name: string;
|
|
25
|
+
[key: string]: any;
|
|
26
|
+
};
|
|
27
|
+
declare function loadEnumMetadata(db: Db, client: Client, config: Config): Promise<EnumMetadata>;
|
|
28
|
+
declare function loadPgEnumMetadata(db: Db, client: Client, config: Config): Promise<PgEnumMetadata>;
|
|
29
|
+
//#endregion
|
|
30
|
+
export { EnumMetadata, EnumRow, EnumTableData, PgEnumData, PgEnumMetadata, loadEnumMetadata, loadPgEnumMetadata };
|
|
31
|
+
//# sourceMappingURL=loadMetadata.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loadMetadata.d.mts","names":[],"sources":["../src/loadMetadata.ts"],"mappings":";;;;;;;KAQY;EACV,OAAO;EACP;EAEA;EACA,MAAM;EACN,iBAAiB;;KAGP;EACV;EACA;;KAGU,eAAe,eAAe;KAC9B,iBAAiB,eAAe;KAEhC;EAAY;EAAY;EAAc;GAAe;;iBAE3C,iBAAiB,IAAI,IAAI,QAAQ,QAAQ,QAAQ,SAAS,QAAQ;iBAwBlE,mBAAmB,IAAI,IAAI,QAAQ,QAAQ,QAAQ,SAAS,QAAQ"}
|
package/build/loadMetadata.js
CHANGED
|
@@ -1,44 +1,37 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
const utils_1 = require("./utils");
|
|
1
|
+
import { isEnumTable } from "./utils.js";
|
|
2
|
+
import "./index.js";
|
|
3
|
+
import { EntityDbMetadata } from "./EntityDbMetadata.js";
|
|
4
|
+
import { pascalCase } from "change-case";
|
|
5
|
+
import { EnumType } from "pg-structure";
|
|
6
|
+
import "pg";
|
|
7
|
+
//#region src/loadMetadata.ts
|
|
9
8
|
async function loadEnumMetadata(db, client, config) {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
name: (0, change_case_1.pascalCase)(table.name), // use tableToEntityName?
|
|
23
|
-
rows,
|
|
24
|
-
extraPrimitives,
|
|
25
|
-
},
|
|
26
|
-
];
|
|
27
|
-
});
|
|
28
|
-
return Object.fromEntries(await Promise.all(promises));
|
|
9
|
+
const promises = db.tables.filter((t) => isEnumTable(config, t)).mapToArray(async (table) => {
|
|
10
|
+
const rows = (await client.query(`SELECT * FROM ${table.name} ORDER BY id`)).rows.map((row) => row);
|
|
11
|
+
const extraPrimitives = new EntityDbMetadata(config, table).primitives.filter((p) => !["code", "name"].includes(p.fieldName));
|
|
12
|
+
return [table.name, {
|
|
13
|
+
table,
|
|
14
|
+
idType: table.columns.get("id").type.name === "uuid" ? "uuid" : "integer",
|
|
15
|
+
name: pascalCase(table.name),
|
|
16
|
+
rows,
|
|
17
|
+
extraPrimitives
|
|
18
|
+
}];
|
|
19
|
+
});
|
|
20
|
+
return Object.fromEntries(await Promise.all(promises));
|
|
29
21
|
}
|
|
30
22
|
async function loadPgEnumMetadata(db, client, config) {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
return all;
|
|
42
|
-
}, {});
|
|
23
|
+
return db.types.reduce((all, type) => {
|
|
24
|
+
if (type instanceof EnumType) return {
|
|
25
|
+
...all,
|
|
26
|
+
[type.name]: {
|
|
27
|
+
name: pascalCase(type.name),
|
|
28
|
+
values: type.values
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
return all;
|
|
32
|
+
}, {});
|
|
43
33
|
}
|
|
34
|
+
//#endregion
|
|
35
|
+
export { loadEnumMetadata, loadPgEnumMetadata };
|
|
36
|
+
|
|
44
37
|
//# sourceMappingURL=loadMetadata.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loadMetadata.js","
|
|
1
|
+
{"version":3,"file":"loadMetadata.js","names":[],"sources":["../src/loadMetadata.ts"],"sourcesContent":["import { pascalCase } from \"change-case\";\nimport { type Client } from \"pg\";\nimport { type Db, EnumType, type Table } from \"pg-structure\";\n\nimport { type Config, EntityDbMetadata, type PrimitiveField } from \"./index.ts\";\nimport { isEnumTable } from \"./utils.ts\";\n\n/** A map from Enum table name to the rows currently in the table. */\nexport type EnumTableData = {\n table: Table;\n idType: \"integer\" | \"uuid\";\n // Pascal case version of table name\n name: string;\n rows: EnumRow[];\n extraPrimitives: PrimitiveField[];\n};\n\nexport type PgEnumData = {\n name: string;\n values: string[];\n};\n\nexport type EnumMetadata = Record<string, EnumTableData>;\nexport type PgEnumMetadata = Record<string, PgEnumData>;\n\nexport type EnumRow = { id: number; code: string; name: string; [key: string]: any };\n\nexport async function loadEnumMetadata(db: Db, client: Client, config: Config): Promise<EnumMetadata> {\n const promises = db.tables\n .filter((t) => isEnumTable(config, t))\n .mapToArray(async (table) => {\n const result = await client.query(`SELECT * FROM ${table.name} ORDER BY id`);\n const rows = result.rows.map((row) => row as EnumRow);\n // We're not really an entity, but appropriate EntityDbMetadata's `primitives` filtering\n const extraPrimitives = new EntityDbMetadata(config, table).primitives.filter(\n (p) => ![\"code\", \"name\"].includes(p.fieldName),\n );\n return [\n table.name,\n {\n table,\n idType: table.columns.get(\"id\")!.type.name === \"uuid\" ? \"uuid\" : \"integer\",\n name: pascalCase(table.name), // use tableToEntityName?\n rows,\n extraPrimitives,\n },\n ] satisfies [string, EnumTableData];\n });\n return Object.fromEntries(await Promise.all(promises));\n}\n\nexport async function loadPgEnumMetadata(db: Db, client: Client, config: Config): Promise<PgEnumMetadata> {\n return db.types.reduce((all, type) => {\n if (type instanceof EnumType) {\n return {\n ...all,\n [type.name]: {\n name: pascalCase(type.name),\n values: type.values,\n },\n };\n }\n return all;\n }, {});\n}\n"],"mappings":";;;;;;;AA2BA,eAAsB,iBAAiB,IAAQ,QAAgB,QAAuC;CACpG,MAAM,WAAW,GAAG,OACjB,QAAQ,MAAM,YAAY,QAAQ,CAAC,CAAC,CAAC,CACrC,WAAW,OAAO,UAAU;EAE3B,MAAM,QAAO,MADQ,OAAO,MAAM,iBAAiB,MAAM,KAAK,aAAa,EAAA,CACvD,KAAK,KAAK,QAAQ,GAAc;EAEpD,MAAM,kBAAkB,IAAI,iBAAiB,QAAQ,KAAK,CAAC,CAAC,WAAW,QACpE,MAAM,CAAC,CAAC,QAAQ,MAAM,CAAC,CAAC,SAAS,EAAE,SAAS,CAC/C;EACA,OAAO,CACL,MAAM,MACN;GACE;GACA,QAAQ,MAAM,QAAQ,IAAI,IAAI,CAAC,CAAE,KAAK,SAAS,SAAS,SAAS;GACjE,MAAM,WAAW,MAAM,IAAI;GAC3B;GACA;EACF,CACF;CACF,CAAC;CACH,OAAO,OAAO,YAAY,MAAM,QAAQ,IAAI,QAAQ,CAAC;AACvD;AAEA,eAAsB,mBAAmB,IAAQ,QAAgB,QAAyC;CACxG,OAAO,GAAG,MAAM,QAAQ,KAAK,SAAS;EACpC,IAAI,gBAAgB,UAClB,OAAO;GACL,GAAG;IACF,KAAK,OAAO;IACX,MAAM,WAAW,KAAK,IAAI;IAC1B,QAAQ,KAAK;GACf;EACF;EAEF,OAAO;CACT,GAAG,CAAC,CAAC;AACP"}
|
package/build/logger.cjs
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
//#region src/logger.ts
|
|
3
|
+
const LOG_LEVELS = {
|
|
4
|
+
warn: 4,
|
|
5
|
+
error: 5
|
|
6
|
+
};
|
|
7
|
+
let loggerMaxWarningLevelHit = 0;
|
|
8
|
+
const logger = {
|
|
9
|
+
warn(...args) {
|
|
10
|
+
loggerMaxWarningLevelHit = Math.max(loggerMaxWarningLevelHit, LOG_LEVELS.warn);
|
|
11
|
+
console.warn("WARNING:", ...args);
|
|
12
|
+
},
|
|
13
|
+
error(...args) {
|
|
14
|
+
loggerMaxWarningLevelHit = Math.max(loggerMaxWarningLevelHit, LOG_LEVELS.error);
|
|
15
|
+
console.error("ERROR:", ...args);
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
//#endregion
|
|
19
|
+
exports.LOG_LEVELS = LOG_LEVELS;
|
|
20
|
+
exports.logger = logger;
|
|
21
|
+
Object.defineProperty(exports, "loggerMaxWarningLevelHit", {
|
|
22
|
+
enumerable: true,
|
|
23
|
+
get: function() {
|
|
24
|
+
return loggerMaxWarningLevelHit;
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
//# sourceMappingURL=logger.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.cjs","names":[],"sources":["../src/logger.ts"],"sourcesContent":["export const LOG_LEVELS = {\n warn: 4,\n error: 5,\n};\n\nexport let loggerMaxWarningLevelHit = 0;\n\nexport const logger = {\n warn(...args: Parameters<(typeof console)[\"warn\"]>) {\n loggerMaxWarningLevelHit = Math.max(loggerMaxWarningLevelHit, LOG_LEVELS.warn);\n console.warn(\"WARNING:\", ...args);\n },\n error(...args: Parameters<(typeof console)[\"error\"]>) {\n loggerMaxWarningLevelHit = Math.max(loggerMaxWarningLevelHit, LOG_LEVELS.error);\n console.error(\"ERROR:\", ...args);\n },\n};\n"],"mappings":";;AAAA,MAAa,aAAa;CACxB,MAAM;CACN,OAAO;AACT;AAEA,IAAW,2BAA2B;AAEtC,MAAa,SAAS;CACpB,KAAK,GAAG,MAA4C;EAClD,2BAA2B,KAAK,IAAI,0BAA0B,WAAW,IAAI;EAC7E,QAAQ,KAAK,YAAY,GAAG,IAAI;CAClC;CACA,MAAM,GAAG,MAA6C;EACpD,2BAA2B,KAAK,IAAI,0BAA0B,WAAW,KAAK;EAC9E,QAAQ,MAAM,UAAU,GAAG,IAAI;CACjC;AACF"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
//#region src/logger.d.ts
|
|
2
|
+
declare const LOG_LEVELS: {
|
|
3
|
+
warn: number;
|
|
4
|
+
error: number;
|
|
5
|
+
};
|
|
6
|
+
declare let loggerMaxWarningLevelHit: number;
|
|
7
|
+
declare const logger: {
|
|
8
|
+
warn(...args: Parameters<(typeof console)["warn"]>): void;
|
|
9
|
+
error(...args: Parameters<(typeof console)["error"]>): void;
|
|
10
|
+
};
|
|
11
|
+
//#endregion
|
|
12
|
+
export { LOG_LEVELS, logger, loggerMaxWarningLevelHit };
|
|
13
|
+
//# sourceMappingURL=logger.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.cts","names":[],"sources":["../src/logger.ts"],"mappings":";cAAa;EACX;EACA;;YAGS;cAEE;EACX,QAAI,MAAU,mBAAmB;EAIjC,SAAK,MAAU,mBAAmB"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
//#region src/logger.d.ts
|
|
2
|
+
declare const LOG_LEVELS: {
|
|
3
|
+
warn: number;
|
|
4
|
+
error: number;
|
|
5
|
+
};
|
|
6
|
+
declare let loggerMaxWarningLevelHit: number;
|
|
7
|
+
declare const logger: {
|
|
8
|
+
warn(...args: Parameters<(typeof console)["warn"]>): void;
|
|
9
|
+
error(...args: Parameters<(typeof console)["error"]>): void;
|
|
10
|
+
};
|
|
11
|
+
//#endregion
|
|
12
|
+
export { LOG_LEVELS, logger, loggerMaxWarningLevelHit };
|
|
13
|
+
//# sourceMappingURL=logger.d.mts.map
|