@amaster.ai/pi-shared 0.1.2-beta.0 → 0.1.2-beta.1
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/__tests__/settings.test.d.ts +2 -0
- package/dist/__tests__/settings.test.d.ts.map +1 -0
- package/dist/__tests__/settings.test.js +115 -0
- package/dist/__tests__/settings.test.js.map +1 -0
- package/dist/settings.d.ts.map +1 -1
- package/dist/settings.js +24 -1
- package/dist/settings.js.map +1 -1
- package/package.json +6 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/settings.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { mkdirSync, rmSync, writeFileSync } from 'node:fs';
|
|
2
|
+
import { tmpdir } from 'node:os';
|
|
3
|
+
import { join } from 'node:path';
|
|
4
|
+
import { afterEach, beforeEach, describe, expect, it } from 'vitest';
|
|
5
|
+
// Helper to build env-var placeholder strings without triggering biome's noTemplateCurlyInString
|
|
6
|
+
function envRef(expr) {
|
|
7
|
+
// biome-ignore lint/style/useTemplate: intentional concatenation to avoid noTemplateCurlyInString
|
|
8
|
+
return '$' + `{${expr}}`;
|
|
9
|
+
}
|
|
10
|
+
describe('loadPiSettings env var resolution', () => {
|
|
11
|
+
let tempDir;
|
|
12
|
+
let settingsPath;
|
|
13
|
+
let originalCwd;
|
|
14
|
+
let originalEnv;
|
|
15
|
+
beforeEach(() => {
|
|
16
|
+
tempDir = join(tmpdir(), `pi-settings-test-${Date.now()}`);
|
|
17
|
+
mkdirSync(join(tempDir, '.pi'), { recursive: true });
|
|
18
|
+
settingsPath = join(tempDir, '.pi', 'settings.json');
|
|
19
|
+
originalCwd = process.cwd();
|
|
20
|
+
originalEnv = { ...process.env };
|
|
21
|
+
process.chdir(tempDir);
|
|
22
|
+
});
|
|
23
|
+
afterEach(() => {
|
|
24
|
+
process.chdir(originalCwd);
|
|
25
|
+
process.env = originalEnv;
|
|
26
|
+
rmSync(tempDir, { recursive: true, force: true });
|
|
27
|
+
});
|
|
28
|
+
async function loadSettings(key) {
|
|
29
|
+
const mod = await import('../../src/settings.js');
|
|
30
|
+
return mod.loadPiSettings(key);
|
|
31
|
+
}
|
|
32
|
+
it('resolves env ref to env value', async () => {
|
|
33
|
+
process.env.TEST_MODEL = 'claude-opus';
|
|
34
|
+
writeFileSync(settingsPath, JSON.stringify({
|
|
35
|
+
myExt: { name: envRef('TEST_MODEL') },
|
|
36
|
+
}));
|
|
37
|
+
const result = await loadSettings('myExt');
|
|
38
|
+
expect(result.name).toBe('claude-opus');
|
|
39
|
+
});
|
|
40
|
+
it('resolves env ref with default to default when env is unset', async () => {
|
|
41
|
+
delete process.env.UNSET_VAR;
|
|
42
|
+
writeFileSync(settingsPath, JSON.stringify({
|
|
43
|
+
myExt: { name: envRef('UNSET_VAR:-fallback-model') },
|
|
44
|
+
}));
|
|
45
|
+
const result = await loadSettings('myExt');
|
|
46
|
+
expect(result.name).toBe('fallback-model');
|
|
47
|
+
});
|
|
48
|
+
it('resolves env ref with default to env value when set', async () => {
|
|
49
|
+
process.env.SET_VAR = 'actual-value';
|
|
50
|
+
writeFileSync(settingsPath, JSON.stringify({
|
|
51
|
+
myExt: { name: envRef('SET_VAR:-fallback') },
|
|
52
|
+
}));
|
|
53
|
+
const result = await loadSettings('myExt');
|
|
54
|
+
expect(result.name).toBe('actual-value');
|
|
55
|
+
});
|
|
56
|
+
it('resolves env ref with empty default when env is unset', async () => {
|
|
57
|
+
delete process.env.EMPTY_VAR;
|
|
58
|
+
writeFileSync(settingsPath, JSON.stringify({
|
|
59
|
+
myExt: { name: envRef('EMPTY_VAR:-') },
|
|
60
|
+
}));
|
|
61
|
+
const result = await loadSettings('myExt');
|
|
62
|
+
expect(result.name).toBe('');
|
|
63
|
+
});
|
|
64
|
+
it('resolves env ref with empty default when env is empty', async () => {
|
|
65
|
+
process.env.EMPTY_VAR = '';
|
|
66
|
+
writeFileSync(settingsPath, JSON.stringify({
|
|
67
|
+
myExt: { name: envRef('EMPTY_VAR:-') },
|
|
68
|
+
}));
|
|
69
|
+
const result = await loadSettings('myExt');
|
|
70
|
+
expect(result.name).toBe('');
|
|
71
|
+
});
|
|
72
|
+
it('resolves env vars in nested objects', async () => {
|
|
73
|
+
process.env.NESTED_VAL = 'deep';
|
|
74
|
+
writeFileSync(settingsPath, JSON.stringify({
|
|
75
|
+
myExt: { outer: { inner: envRef('NESTED_VAL') } },
|
|
76
|
+
}));
|
|
77
|
+
const result = await loadSettings('myExt');
|
|
78
|
+
expect(result.outer.inner).toBe('deep');
|
|
79
|
+
});
|
|
80
|
+
it('resolves env vars in arrays', async () => {
|
|
81
|
+
process.env.ARR_VAL = 'item1';
|
|
82
|
+
writeFileSync(settingsPath, JSON.stringify({
|
|
83
|
+
myExt: { items: [envRef('ARR_VAL'), 'literal'] },
|
|
84
|
+
}));
|
|
85
|
+
const result = await loadSettings('myExt');
|
|
86
|
+
expect(result.items).toEqual(['item1', 'literal']);
|
|
87
|
+
});
|
|
88
|
+
it('resolves multiple env vars in one string', async () => {
|
|
89
|
+
process.env.HOST = 'localhost';
|
|
90
|
+
process.env.PORT = '8080';
|
|
91
|
+
writeFileSync(settingsPath, JSON.stringify({
|
|
92
|
+
myExt: { url: `http://${envRef('HOST')}:${envRef('PORT')}/api` },
|
|
93
|
+
}));
|
|
94
|
+
const result = await loadSettings('myExt');
|
|
95
|
+
expect(result.url).toBe('http://localhost:8080/api');
|
|
96
|
+
});
|
|
97
|
+
it('leaves non-string values untouched', async () => {
|
|
98
|
+
writeFileSync(settingsPath, JSON.stringify({
|
|
99
|
+
myExt: { count: 42, enabled: true, empty: null },
|
|
100
|
+
}));
|
|
101
|
+
const result = await loadSettings('myExt');
|
|
102
|
+
expect(result.count).toBe(42);
|
|
103
|
+
expect(result.enabled).toBe(true);
|
|
104
|
+
expect(result.empty).toBeNull();
|
|
105
|
+
});
|
|
106
|
+
it('handles default value containing :-', async () => {
|
|
107
|
+
delete process.env.TRICKY_VAR;
|
|
108
|
+
writeFileSync(settingsPath, JSON.stringify({
|
|
109
|
+
myExt: { val: envRef('TRICKY_VAR:-a:-b') },
|
|
110
|
+
}));
|
|
111
|
+
const result = await loadSettings('myExt');
|
|
112
|
+
expect(result.val).toBe('a:-b');
|
|
113
|
+
});
|
|
114
|
+
});
|
|
115
|
+
//# sourceMappingURL=settings.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings.test.js","sourceRoot":"","sources":["../../src/__tests__/settings.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC3D,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAErE,iGAAiG;AACjG,SAAS,MAAM,CAAC,IAAY;IAC1B,kGAAkG;IAClG,OAAO,GAAG,GAAG,IAAI,IAAI,GAAG,CAAC;AAC3B,CAAC;AAED,QAAQ,CAAC,mCAAmC,EAAE,GAAG,EAAE;IACjD,IAAI,OAAe,CAAC;IACpB,IAAI,YAAoB,CAAC;IACzB,IAAI,WAAmB,CAAC;IACxB,IAAI,WAA8B,CAAC;IAEnC,UAAU,CAAC,GAAG,EAAE;QACd,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,oBAAoB,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAC3D,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACrD,YAAY,GAAG,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,eAAe,CAAC,CAAC;QACrD,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAC5B,WAAW,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QACjC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACzB,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAC3B,OAAO,CAAC,GAAG,GAAG,WAAW,CAAC;QAC1B,MAAM,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,KAAK,UAAU,YAAY,CAAI,GAAW;QACxC,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC;QAClD,OAAO,GAAG,CAAC,cAAc,CAAI,GAAG,CAAC,CAAC;IACpC,CAAC;IAED,EAAE,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;QAC7C,OAAO,CAAC,GAAG,CAAC,UAAU,GAAG,aAAa,CAAC;QACvC,aAAa,CACX,YAAY,EACZ,IAAI,CAAC,SAAS,CAAC;YACb,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,YAAY,CAAC,EAAE;SACtC,CAAC,CACH,CAAC;QACF,MAAM,MAAM,GAAG,MAAM,YAAY,CAAmB,OAAO,CAAC,CAAC;QAC7D,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4DAA4D,EAAE,KAAK,IAAI,EAAE;QAC1E,OAAO,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;QAC7B,aAAa,CACX,YAAY,EACZ,IAAI,CAAC,SAAS,CAAC;YACb,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,2BAA2B,CAAC,EAAE;SACrD,CAAC,CACH,CAAC;QACF,MAAM,MAAM,GAAG,MAAM,YAAY,CAAmB,OAAO,CAAC,CAAC;QAC7D,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;QACnE,OAAO,CAAC,GAAG,CAAC,OAAO,GAAG,cAAc,CAAC;QACrC,aAAa,CACX,YAAY,EACZ,IAAI,CAAC,SAAS,CAAC;YACb,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,mBAAmB,CAAC,EAAE;SAC7C,CAAC,CACH,CAAC;QACF,MAAM,MAAM,GAAG,MAAM,YAAY,CAAmB,OAAO,CAAC,CAAC;QAC7D,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;QACrE,OAAO,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;QAC7B,aAAa,CACX,YAAY,EACZ,IAAI,CAAC,SAAS,CAAC;YACb,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,aAAa,CAAC,EAAE;SACvC,CAAC,CACH,CAAC;QACF,MAAM,MAAM,GAAG,MAAM,YAAY,CAAmB,OAAO,CAAC,CAAC;QAC7D,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;QACrE,OAAO,CAAC,GAAG,CAAC,SAAS,GAAG,EAAE,CAAC;QAC3B,aAAa,CACX,YAAY,EACZ,IAAI,CAAC,SAAS,CAAC;YACb,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,aAAa,CAAC,EAAE;SACvC,CAAC,CACH,CAAC;QACF,MAAM,MAAM,GAAG,MAAM,YAAY,CAAmB,OAAO,CAAC,CAAC;QAC7D,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;QACnD,OAAO,CAAC,GAAG,CAAC,UAAU,GAAG,MAAM,CAAC;QAChC,aAAa,CACX,YAAY,EACZ,IAAI,CAAC,SAAS,CAAC;YACb,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,YAAY,CAAC,EAAE,EAAE;SAClD,CAAC,CACH,CAAC;QACF,MAAM,MAAM,GAAG,MAAM,YAAY,CAA+B,OAAO,CAAC,CAAC;QACzE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6BAA6B,EAAE,KAAK,IAAI,EAAE;QAC3C,OAAO,CAAC,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC;QAC9B,aAAa,CACX,YAAY,EACZ,IAAI,CAAC,SAAS,CAAC;YACb,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE;SACjD,CAAC,CACH,CAAC;QACF,MAAM,MAAM,GAAG,MAAM,YAAY,CAAsB,OAAO,CAAC,CAAC;QAChE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;QACxD,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,WAAW,CAAC;QAC/B,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,MAAM,CAAC;QAC1B,aAAa,CACX,YAAY,EACZ,IAAI,CAAC,SAAS,CAAC;YACb,KAAK,EAAE,EAAE,GAAG,EAAE,UAAU,MAAM,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE;SACjE,CAAC,CACH,CAAC;QACF,MAAM,MAAM,GAAG,MAAM,YAAY,CAAkB,OAAO,CAAC,CAAC;QAC5D,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;QAClD,aAAa,CACX,YAAY,EACZ,IAAI,CAAC,SAAS,CAAC;YACb,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;SACjD,CAAC,CACH,CAAC;QACF,MAAM,MAAM,GAAG,MAAM,YAAY,CAAmD,OAAO,CAAC,CAAC;QAC7F,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC9B,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;QACnD,OAAO,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;QAC9B,aAAa,CACX,YAAY,EACZ,IAAI,CAAC,SAAS,CAAC;YACb,KAAK,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,kBAAkB,CAAC,EAAE;SAC3C,CAAC,CACH,CAAC;QACF,MAAM,MAAM,GAAG,MAAM,YAAY,CAAkB,OAAO,CAAC,CAAC;QAC5D,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
package/dist/settings.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":"AAwCA;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,CAUhD"}
|
package/dist/settings.js
CHANGED
|
@@ -1,12 +1,35 @@
|
|
|
1
1
|
import { readFileSync } from 'node:fs';
|
|
2
2
|
import { homedir } from 'node:os';
|
|
3
3
|
import { join, resolve } from 'node:path';
|
|
4
|
+
function resolveEnvVars(value) {
|
|
5
|
+
if (typeof value === 'string') {
|
|
6
|
+
return value.replace(/\$\{([^}]+)\}/g, (_match, expr) => {
|
|
7
|
+
const [name, ...rest] = expr.split(':-');
|
|
8
|
+
const fallback = rest.join(':-');
|
|
9
|
+
const envVal = process.env[name];
|
|
10
|
+
if (envVal !== undefined && envVal !== '')
|
|
11
|
+
return envVal;
|
|
12
|
+
return fallback;
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
if (Array.isArray(value)) {
|
|
16
|
+
return value.map(resolveEnvVars);
|
|
17
|
+
}
|
|
18
|
+
if (value && typeof value === 'object') {
|
|
19
|
+
const result = {};
|
|
20
|
+
for (const [k, v] of Object.entries(value)) {
|
|
21
|
+
result[k] = resolveEnvVars(v);
|
|
22
|
+
}
|
|
23
|
+
return result;
|
|
24
|
+
}
|
|
25
|
+
return value;
|
|
26
|
+
}
|
|
4
27
|
function readSettingsSection(filePath, key) {
|
|
5
28
|
try {
|
|
6
29
|
const raw = readFileSync(filePath, 'utf-8');
|
|
7
30
|
const parsed = JSON.parse(raw);
|
|
8
31
|
if (parsed && typeof parsed === 'object' && !Array.isArray(parsed)) {
|
|
9
|
-
return (parsed[key] ?? {});
|
|
32
|
+
return resolveEnvVars(parsed[key] ?? {});
|
|
10
33
|
}
|
|
11
34
|
return {};
|
|
12
35
|
}
|
package/dist/settings.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAE1C,SAAS,mBAAmB,CAAI,QAAgB,EAAE,GAAW;IAC3D,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACnE,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,CAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAE1C,SAAS,cAAc,CAAC,KAAc;IACpC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC,MAAM,EAAE,IAAY,EAAE,EAAE;YAC9D,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,IAAK,CAAC,CAAC;YAClC,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,EAAE;gBAAE,OAAO,MAAM,CAAC;YACzD,OAAO,QAAQ,CAAC;QAClB,CAAC,CAAC,CAAC;IACL,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IACnC,CAAC;IACD,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvC,MAAM,MAAM,GAA4B,EAAE,CAAC;QAC3C,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3C,MAAM,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;QAChC,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,mBAAmB,CAAI,QAAgB,EAAE,GAAW;IAC3D,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACnE,OAAO,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,CAAe,CAAC;QACzD,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAI,GAAW;IAC3C,MAAM,YAAY,GAAG,mBAAmB,CACtC,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,eAAe,CAAC,EAChD,GAAG,CACJ,CAAC;IACF,MAAM,eAAe,GAAG,mBAAmB,CACzC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,eAAe,CAAC,EAC9C,GAAG,CACJ,CAAC;IACF,OAAO,EAAE,GAAG,YAAY,EAAE,GAAG,eAAe,EAAO,CAAC;AACtD,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@amaster.ai/pi-shared",
|
|
3
|
-
"version": "0.1.2-beta.
|
|
3
|
+
"version": "0.1.2-beta.1",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -30,8 +30,12 @@
|
|
|
30
30
|
"url": "https://github.com/TGYD-helige/pi.git",
|
|
31
31
|
"directory": "packages/shared"
|
|
32
32
|
},
|
|
33
|
+
"devDependencies": {
|
|
34
|
+
"vitest": "^4.0.0"
|
|
35
|
+
},
|
|
33
36
|
"scripts": {
|
|
34
37
|
"build": "tsc -b",
|
|
35
|
-
"typecheck": "tsc -b --pretty false"
|
|
38
|
+
"typecheck": "tsc -b --pretty false",
|
|
39
|
+
"test": "vitest run src"
|
|
36
40
|
}
|
|
37
41
|
}
|