@loj-lang/cli 0.5.0

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.
Files changed (36) hide show
  1. package/README.md +87 -0
  2. package/agent-assets/loj-authoring/SKILL.md +179 -0
  3. package/agent-assets/loj-authoring/agents/openai.yaml +3 -0
  4. package/agent-assets/loj-authoring/metadata.json +6 -0
  5. package/agent-assets/loj-authoring/references/backend-family.md +340 -0
  6. package/agent-assets/loj-authoring/references/backend-targets.md +171 -0
  7. package/agent-assets/loj-authoring/references/frontend-family.md +794 -0
  8. package/agent-assets/loj-authoring/references/frontend-runtime-trace.md +204 -0
  9. package/agent-assets/loj-authoring/references/policy-rules-proof.md +178 -0
  10. package/agent-assets/loj-authoring/references/project-and-transport.md +454 -0
  11. package/agent-assets/loj-authoring/references/workflow-flow-proof.md +263 -0
  12. package/dist/database-native-sql.d.ts +4 -0
  13. package/dist/database-native-sql.d.ts.map +1 -0
  14. package/dist/database-native-sql.js +266 -0
  15. package/dist/database-native-sql.js.map +1 -0
  16. package/dist/env.d.ts +31 -0
  17. package/dist/env.d.ts.map +1 -0
  18. package/dist/env.js +229 -0
  19. package/dist/env.js.map +1 -0
  20. package/dist/fastapi-dev-runner.d.ts +3 -0
  21. package/dist/fastapi-dev-runner.d.ts.map +1 -0
  22. package/dist/fastapi-dev-runner.js +263 -0
  23. package/dist/fastapi-dev-runner.js.map +1 -0
  24. package/dist/flow-proof.d.ts +3 -0
  25. package/dist/flow-proof.d.ts.map +1 -0
  26. package/dist/flow-proof.js +2 -0
  27. package/dist/flow-proof.js.map +1 -0
  28. package/dist/index.d.ts +36 -0
  29. package/dist/index.d.ts.map +1 -0
  30. package/dist/index.js +5353 -0
  31. package/dist/index.js.map +1 -0
  32. package/dist/rules-proof.d.ts +3 -0
  33. package/dist/rules-proof.d.ts.map +1 -0
  34. package/dist/rules-proof.js +2 -0
  35. package/dist/rules-proof.js.map +1 -0
  36. package/package.json +49 -0
@@ -0,0 +1,4 @@
1
+ import type { IRSdslProgram } from '@loj-lang/sdsl-compiler/ir';
2
+ export type NativeSqlVendor = 'h2' | 'sqlite' | 'postgres' | 'mysql' | 'mariadb' | 'sqlserver' | 'oracle';
3
+ export declare function generateNativeSqlSchema(ir: IRSdslProgram, vendor: NativeSqlVendor): string;
4
+ //# sourceMappingURL=database-native-sql.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database-native-sql.d.ts","sourceRoot":"","sources":["../src/database-native-sql.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAA2C,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAEzG,MAAM,MAAM,eAAe,GACvB,IAAI,GACJ,QAAQ,GACR,UAAU,GACV,OAAO,GACP,SAAS,GACT,WAAW,GACX,QAAQ,CAAC;AAEb,wBAAgB,uBAAuB,CAAC,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE,eAAe,GAAG,MAAM,CAoB1F"}
@@ -0,0 +1,266 @@
1
+ export function generateNativeSqlSchema(ir, vendor) {
2
+ const lines = [
3
+ `-- Generated native SQL schema for ${vendor}`,
4
+ `-- app: ${ir.app.name}`,
5
+ '-- This file is generated from .api.loj models via the project-shell database profile.',
6
+ '',
7
+ ];
8
+ for (const model of ir.models) {
9
+ lines.push(renderCreateTableStatement(model, vendor));
10
+ lines.push('');
11
+ }
12
+ const foreignKeys = ir.models.flatMap((model) => collectForeignKeyStatements(model, vendor));
13
+ if (foreignKeys.length > 0) {
14
+ lines.push(...foreignKeys);
15
+ lines.push('');
16
+ }
17
+ return `${lines.join('\n').trimEnd()}\n`;
18
+ }
19
+ function renderCreateTableStatement(model, vendor) {
20
+ const tableName = safeTableName(model.name);
21
+ const columns = [` id ${identityPrimaryKeyType(vendor)}`];
22
+ const tableConstraints = [];
23
+ for (const field of persistedModelFields(model)) {
24
+ columns.push(` ${renderColumnDefinition(model, field, vendor)}`);
25
+ if (field.fieldType.type === 'enum') {
26
+ tableConstraints.push(renderEnumConstraint(model, field, vendor));
27
+ }
28
+ }
29
+ const body = [...columns, ...tableConstraints].join(',\n');
30
+ return `CREATE TABLE ${tableName} (\n${body}\n);`;
31
+ }
32
+ function renderColumnDefinition(model, field, vendor) {
33
+ const columnName = persistedColumnName(field);
34
+ const required = hasDecorator(field, 'required') || hasDecorator(field, 'createdAt') || hasDecorator(field, 'updatedAt');
35
+ const unique = hasDecorator(field, 'unique');
36
+ const parts = [columnName, columnType(model, field, vendor)];
37
+ if (required) {
38
+ parts.push('NOT NULL');
39
+ }
40
+ if (unique) {
41
+ parts.push('UNIQUE');
42
+ }
43
+ if (hasDecorator(field, 'createdAt') || hasDecorator(field, 'updatedAt')) {
44
+ const currentTimestamp = currentTimestampExpression(vendor);
45
+ if (currentTimestamp) {
46
+ parts.push(`DEFAULT ${currentTimestamp}`);
47
+ }
48
+ }
49
+ return parts.join(' ');
50
+ }
51
+ function renderEnumConstraint(model, field, vendor) {
52
+ const tableName = safeTableName(model.name);
53
+ const columnName = persistedColumnName(field);
54
+ const values = field.fieldType.type === 'enum'
55
+ ? field.fieldType.values.map((value) => `'${escapeSqlLiteral(value)}'`).join(', ')
56
+ : '';
57
+ return ` CONSTRAINT ${constraintName('ck', tableName, columnName, vendor)} CHECK (${columnName} IN (${values}))`;
58
+ }
59
+ function collectForeignKeyStatements(model, vendor) {
60
+ const tableName = safeTableName(model.name);
61
+ return persistedModelFields(model)
62
+ .filter((field) => field.fieldType.type === 'relation' && field.fieldType.kind === 'belongsTo')
63
+ .map((field) => {
64
+ const columnName = persistedColumnName(field);
65
+ const targetTableName = safeTableName(field.fieldType.target);
66
+ return `ALTER TABLE ${tableName}\n ADD CONSTRAINT ${constraintName('fk', tableName, columnName, vendor)} FOREIGN KEY (${columnName}) REFERENCES ${targetTableName}(id);`;
67
+ });
68
+ }
69
+ function persistedModelFields(model) {
70
+ return model.fields.filter((field) => !(field.fieldType.type === 'relation' && field.fieldType.kind === 'hasMany'));
71
+ }
72
+ function persistedColumnName(field) {
73
+ if (field.fieldType.type === 'relation' && field.fieldType.kind === 'belongsTo') {
74
+ return `${field.name}_id`;
75
+ }
76
+ return field.name;
77
+ }
78
+ function columnType(model, field, vendor) {
79
+ if (field.fieldType.type === 'enum') {
80
+ const longestValue = Math.max(16, ...field.fieldType.values.map((value) => value.length));
81
+ return varcharType(longestValue, vendor);
82
+ }
83
+ if (field.fieldType.type === 'relation' && field.fieldType.kind === 'belongsTo') {
84
+ return relationColumnType(vendor);
85
+ }
86
+ if (field.fieldType.type !== 'scalar') {
87
+ return varcharType(255, vendor);
88
+ }
89
+ switch (field.fieldType.name) {
90
+ case 'string':
91
+ return varcharType(255, vendor);
92
+ case 'text':
93
+ return textType(vendor);
94
+ case 'integer':
95
+ return integerType(vendor);
96
+ case 'long':
97
+ return longType(vendor);
98
+ case 'decimal':
99
+ return decimalType(vendor);
100
+ case 'boolean':
101
+ return booleanType(vendor);
102
+ case 'datetime':
103
+ return dateTimeType(vendor);
104
+ case 'date':
105
+ return 'DATE';
106
+ }
107
+ return varcharType(255, vendor);
108
+ }
109
+ function identityPrimaryKeyType(vendor) {
110
+ switch (vendor) {
111
+ case 'sqlite':
112
+ return 'INTEGER PRIMARY KEY AUTOINCREMENT';
113
+ case 'postgres':
114
+ return 'BIGSERIAL PRIMARY KEY';
115
+ case 'mysql':
116
+ case 'mariadb':
117
+ return 'BIGINT AUTO_INCREMENT PRIMARY KEY';
118
+ case 'sqlserver':
119
+ return 'BIGINT IDENTITY(1,1) PRIMARY KEY';
120
+ case 'oracle':
121
+ return 'NUMBER(19) GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY';
122
+ case 'h2':
123
+ return 'BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY';
124
+ }
125
+ return 'BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY';
126
+ }
127
+ function relationColumnType(vendor) {
128
+ switch (vendor) {
129
+ case 'oracle':
130
+ return 'NUMBER(19)';
131
+ case 'sqlite':
132
+ return 'INTEGER';
133
+ default:
134
+ return 'BIGINT';
135
+ }
136
+ }
137
+ function varcharType(length, vendor) {
138
+ if (vendor === 'oracle') {
139
+ return `VARCHAR2(${length})`;
140
+ }
141
+ if (vendor === 'sqlserver') {
142
+ return `NVARCHAR(${length})`;
143
+ }
144
+ return `VARCHAR(${length})`;
145
+ }
146
+ function textType(vendor) {
147
+ switch (vendor) {
148
+ case 'h2':
149
+ return 'CLOB';
150
+ case 'sqlserver':
151
+ return 'NVARCHAR(MAX)';
152
+ case 'oracle':
153
+ return 'CLOB';
154
+ default:
155
+ return 'TEXT';
156
+ }
157
+ }
158
+ function integerType(vendor) {
159
+ if (vendor === 'sqlserver') {
160
+ return 'INT';
161
+ }
162
+ if (vendor === 'oracle') {
163
+ return 'NUMBER(10)';
164
+ }
165
+ return 'INTEGER';
166
+ }
167
+ function longType(vendor) {
168
+ switch (vendor) {
169
+ case 'oracle':
170
+ return 'NUMBER(19)';
171
+ case 'sqlite':
172
+ return 'INTEGER';
173
+ default:
174
+ return 'BIGINT';
175
+ }
176
+ }
177
+ function decimalType(vendor) {
178
+ if (vendor === 'oracle') {
179
+ return 'NUMBER(18, 2)';
180
+ }
181
+ return 'NUMERIC(18, 2)';
182
+ }
183
+ function booleanType(vendor) {
184
+ switch (vendor) {
185
+ case 'sqlserver':
186
+ return 'BIT';
187
+ case 'oracle':
188
+ return 'NUMBER(1)';
189
+ case 'sqlite':
190
+ return 'INTEGER';
191
+ default:
192
+ return 'BOOLEAN';
193
+ }
194
+ }
195
+ function dateTimeType(vendor) {
196
+ switch (vendor) {
197
+ case 'postgres':
198
+ return 'TIMESTAMP WITH TIME ZONE';
199
+ case 'mysql':
200
+ case 'mariadb':
201
+ return 'DATETIME(6)';
202
+ case 'sqlserver':
203
+ return 'DATETIME2';
204
+ case 'oracle':
205
+ return 'TIMESTAMP WITH TIME ZONE';
206
+ case 'sqlite':
207
+ return 'TEXT';
208
+ case 'h2':
209
+ return 'TIMESTAMP WITH TIME ZONE';
210
+ }
211
+ }
212
+ function currentTimestampExpression(vendor) {
213
+ switch (vendor) {
214
+ case 'oracle':
215
+ return 'CURRENT_TIMESTAMP';
216
+ default:
217
+ return 'CURRENT_TIMESTAMP';
218
+ }
219
+ }
220
+ function safeTableName(modelName) {
221
+ const baseName = toSnakeCase(modelName);
222
+ if (SQL_RESERVED_IDENTIFIERS.has(baseName.toLowerCase())) {
223
+ return `${baseName}_records`;
224
+ }
225
+ return baseName;
226
+ }
227
+ function toSnakeCase(input) {
228
+ return input
229
+ .replace(/([a-z0-9])([A-Z])/g, '$1_$2')
230
+ .split(/[^A-Za-z0-9]+/)
231
+ .filter(Boolean)
232
+ .map((part) => part.toLowerCase())
233
+ .join('_');
234
+ }
235
+ function hasDecorator(field, decoratorName) {
236
+ return field.decorators.some((decorator) => decorator.name === decoratorName);
237
+ }
238
+ function escapeSqlLiteral(value) {
239
+ return value.replaceAll("'", "''");
240
+ }
241
+ function constraintName(prefix, tableName, columnName, vendor) {
242
+ const raw = `${prefix}_${tableName}_${columnName}`;
243
+ const maxLength = vendor === 'oracle' ? 30 : 63;
244
+ if (raw.length <= maxLength) {
245
+ return raw;
246
+ }
247
+ const suffix = shortHash(raw);
248
+ const head = raw.slice(0, Math.max(0, maxLength - suffix.length - 1));
249
+ return `${head}_${suffix}`;
250
+ }
251
+ function shortHash(value) {
252
+ let hash = 0;
253
+ for (let index = 0; index < value.length; index += 1) {
254
+ hash = ((hash << 5) - hash + value.charCodeAt(index)) | 0;
255
+ }
256
+ return Math.abs(hash).toString(36).slice(0, 6);
257
+ }
258
+ const SQL_RESERVED_IDENTIFIERS = new Set([
259
+ 'group',
260
+ 'order',
261
+ 'select',
262
+ 'table',
263
+ 'user',
264
+ 'where',
265
+ ]);
266
+ //# sourceMappingURL=database-native-sql.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database-native-sql.js","sourceRoot":"","sources":["../src/database-native-sql.ts"],"names":[],"mappings":"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"}
package/dist/env.d.ts ADDED
@@ -0,0 +1,31 @@
1
+ export interface ProjectDevEnvironmentOverrides {
2
+ hostHost?: string;
3
+ hostPort?: number;
4
+ hostPreviewPort?: number;
5
+ apiBase?: string;
6
+ proxyAuth?: string;
7
+ serverHost?: string;
8
+ serverPort?: number;
9
+ }
10
+ export interface ProjectTargetEnvironment {
11
+ alias: string;
12
+ files: string[];
13
+ values: Record<string, string>;
14
+ effectiveValues: Record<string, string>;
15
+ }
16
+ export interface ProjectEnvironment {
17
+ files: string[];
18
+ sharedFiles: string[];
19
+ sharedValues: Record<string, string>;
20
+ targets: Record<string, ProjectTargetEnvironment>;
21
+ devOverrides: ProjectDevEnvironmentOverrides;
22
+ }
23
+ export declare function loadProjectEnvironment(projectDir: string, targetAliases: string[], shellEnv?: Record<string, string | undefined>): {
24
+ environment: ProjectEnvironment;
25
+ } | {
26
+ error: string;
27
+ };
28
+ export declare function collectProjectEnvironmentFileNames(targetAliases: string[]): Set<string>;
29
+ export declare function createProcessEnvironmentOverlay(fileValues: Record<string, string>, baseEnv?: Record<string, string | undefined>): Record<string, string>;
30
+ export declare function createEnvironmentSignature(values: Record<string, string>): string;
31
+ //# sourceMappingURL=env.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACzC;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAC;IAClD,YAAY,EAAE,8BAA8B,CAAC;CAC9C;AAID,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,EAAE,EACvB,QAAQ,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,GACzD;IAAE,WAAW,EAAE,kBAAkB,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CA6DzD;AAED,wBAAgB,kCAAkC,CAAC,aAAa,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,CAOvF;AAED,wBAAgB,+BAA+B,CAC7C,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAClC,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,GACxD,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CASxB;AAED,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAIjF"}
package/dist/env.js ADDED
@@ -0,0 +1,229 @@
1
+ import { existsSync, readFileSync } from 'node:fs';
2
+ import { resolve } from 'node:path';
3
+ const VALID_ENV_KEY = /^[A-Za-z_][A-Za-z0-9_]*$/;
4
+ export function loadProjectEnvironment(projectDir, targetAliases, shellEnv = process.env) {
5
+ const sharedBase = loadEnvironmentLayer(projectDir, '.env');
6
+ if ('error' in sharedBase) {
7
+ return sharedBase;
8
+ }
9
+ const sharedLocal = loadEnvironmentLayer(projectDir, '.env.local');
10
+ if ('error' in sharedLocal) {
11
+ return sharedLocal;
12
+ }
13
+ const sharedValues = {
14
+ ...sharedBase.values,
15
+ ...sharedLocal.values,
16
+ };
17
+ const sharedFiles = [...sharedBase.files, ...sharedLocal.files];
18
+ const files = [...sharedFiles];
19
+ const targets = {};
20
+ for (const alias of targetAliases) {
21
+ const base = loadEnvironmentLayer(projectDir, `.env.${alias}`);
22
+ if ('error' in base) {
23
+ return base;
24
+ }
25
+ const local = loadEnvironmentLayer(projectDir, `.env.${alias}.local`);
26
+ if ('error' in local) {
27
+ return local;
28
+ }
29
+ const targetValues = {
30
+ ...base.values,
31
+ ...local.values,
32
+ };
33
+ const targetFiles = [...base.files, ...local.files];
34
+ const effectiveValues = {
35
+ ...sharedValues,
36
+ ...targetValues,
37
+ };
38
+ files.push(...targetFiles);
39
+ targets[alias] = {
40
+ alias,
41
+ files: targetFiles,
42
+ values: targetValues,
43
+ effectiveValues,
44
+ };
45
+ }
46
+ const devOverrides = parseProjectDevEnvironmentOverrides(sharedValues, shellEnv);
47
+ if ('error' in devOverrides) {
48
+ return devOverrides;
49
+ }
50
+ return {
51
+ environment: {
52
+ files,
53
+ sharedFiles,
54
+ sharedValues,
55
+ targets,
56
+ devOverrides: devOverrides.overrides,
57
+ },
58
+ };
59
+ }
60
+ export function collectProjectEnvironmentFileNames(targetAliases) {
61
+ const fileNames = new Set(['.env', '.env.local']);
62
+ for (const alias of targetAliases) {
63
+ fileNames.add(`.env.${alias}`);
64
+ fileNames.add(`.env.${alias}.local`);
65
+ }
66
+ return fileNames;
67
+ }
68
+ export function createProcessEnvironmentOverlay(fileValues, baseEnv = process.env) {
69
+ const overlay = {};
70
+ for (const [key, value] of Object.entries(fileValues)) {
71
+ if (baseEnv[key] !== undefined) {
72
+ continue;
73
+ }
74
+ overlay[key] = value;
75
+ }
76
+ return overlay;
77
+ }
78
+ export function createEnvironmentSignature(values) {
79
+ return JSON.stringify(Object.entries(values).sort(([left], [right]) => left.localeCompare(right)));
80
+ }
81
+ function loadEnvironmentLayer(projectDir, relativePath) {
82
+ const absolutePath = resolve(projectDir, relativePath);
83
+ if (!existsSync(absolutePath)) {
84
+ return {
85
+ files: [],
86
+ values: {},
87
+ };
88
+ }
89
+ try {
90
+ const source = readFileSync(absolutePath, 'utf8');
91
+ const parsed = parseDotEnvSource(source, relativePath);
92
+ if ('error' in parsed) {
93
+ return parsed;
94
+ }
95
+ return {
96
+ files: [relativePath],
97
+ values: parsed.values,
98
+ };
99
+ }
100
+ catch (error) {
101
+ return {
102
+ error: `Failed to read ${relativePath}: ${error instanceof Error ? error.message : String(error)}`,
103
+ };
104
+ }
105
+ }
106
+ function parseDotEnvSource(source, fileLabel) {
107
+ const values = {};
108
+ const lines = source.split(/\r?\n/);
109
+ for (let index = 0; index < lines.length; index += 1) {
110
+ const rawLine = lines[index] ?? '';
111
+ const trimmed = rawLine.trim();
112
+ if (trimmed.length === 0 || trimmed.startsWith('#')) {
113
+ continue;
114
+ }
115
+ const normalized = trimmed.startsWith('export ')
116
+ ? trimmed.slice('export '.length).trim()
117
+ : trimmed;
118
+ const equalsIndex = normalized.indexOf('=');
119
+ if (equalsIndex <= 0) {
120
+ return {
121
+ error: `${fileLabel}:${index + 1} must look like KEY=value`,
122
+ };
123
+ }
124
+ const key = normalized.slice(0, equalsIndex).trim();
125
+ if (!VALID_ENV_KEY.test(key)) {
126
+ return {
127
+ error: `${fileLabel}:${index + 1} has an invalid environment key: ${key}`,
128
+ };
129
+ }
130
+ const rawValue = normalized.slice(equalsIndex + 1).trim();
131
+ const parsedValue = parseDotEnvValue(rawValue, fileLabel, index + 1);
132
+ if ('error' in parsedValue) {
133
+ return parsedValue;
134
+ }
135
+ values[key] = parsedValue.value;
136
+ }
137
+ return { values };
138
+ }
139
+ function parseDotEnvValue(rawValue, fileLabel, lineNumber) {
140
+ if (rawValue.length === 0) {
141
+ return { value: '' };
142
+ }
143
+ if (rawValue.startsWith('"')) {
144
+ if (!rawValue.endsWith('"') || rawValue.length === 1) {
145
+ return {
146
+ error: `${fileLabel}:${lineNumber} has an unterminated double-quoted value`,
147
+ };
148
+ }
149
+ return {
150
+ value: rawValue.slice(1, -1)
151
+ .replace(/\\n/g, '\n')
152
+ .replace(/\\r/g, '\r')
153
+ .replace(/\\t/g, '\t')
154
+ .replace(/\\"/g, '"')
155
+ .replace(/\\\\/g, '\\'),
156
+ };
157
+ }
158
+ if (rawValue.startsWith('\'')) {
159
+ if (!rawValue.endsWith('\'') || rawValue.length === 1) {
160
+ return {
161
+ error: `${fileLabel}:${lineNumber} has an unterminated single-quoted value`,
162
+ };
163
+ }
164
+ return {
165
+ value: rawValue.slice(1, -1),
166
+ };
167
+ }
168
+ return {
169
+ value: stripUnquotedInlineComment(rawValue),
170
+ };
171
+ }
172
+ function stripUnquotedInlineComment(rawValue) {
173
+ const commentIndex = rawValue.search(/\s#/);
174
+ if (commentIndex < 0) {
175
+ return rawValue.trim();
176
+ }
177
+ return rawValue.slice(0, commentIndex).trim();
178
+ }
179
+ function parseProjectDevEnvironmentOverrides(sharedValues, shellEnv) {
180
+ const hostHost = resolveOptionalString(shellEnv.LOJ_DEV_HOST_HOST, sharedValues.LOJ_DEV_HOST_HOST);
181
+ const apiBase = resolveOptionalString(shellEnv.LOJ_DEV_API_BASE, sharedValues.LOJ_DEV_API_BASE);
182
+ const proxyAuth = resolveOptionalString(shellEnv.LOJ_DEV_PROXY_AUTH, sharedValues.LOJ_DEV_PROXY_AUTH);
183
+ const serverHost = resolveOptionalString(shellEnv.LOJ_DEV_SERVER_HOST, sharedValues.LOJ_DEV_SERVER_HOST);
184
+ const hostPort = parseOptionalPort(shellEnv.LOJ_DEV_HOST_PORT, sharedValues.LOJ_DEV_HOST_PORT, 'LOJ_DEV_HOST_PORT');
185
+ if ('error' in hostPort) {
186
+ return hostPort;
187
+ }
188
+ const hostPreviewPort = parseOptionalPort(shellEnv.LOJ_DEV_HOST_PREVIEW_PORT, sharedValues.LOJ_DEV_HOST_PREVIEW_PORT, 'LOJ_DEV_HOST_PREVIEW_PORT');
189
+ if ('error' in hostPreviewPort) {
190
+ return hostPreviewPort;
191
+ }
192
+ const serverPort = parseOptionalPort(shellEnv.LOJ_DEV_SERVER_PORT, sharedValues.LOJ_DEV_SERVER_PORT, 'LOJ_DEV_SERVER_PORT');
193
+ if ('error' in serverPort) {
194
+ return serverPort;
195
+ }
196
+ return {
197
+ overrides: {
198
+ ...(hostHost ? { hostHost } : {}),
199
+ ...(hostPort.port !== undefined ? { hostPort: hostPort.port } : {}),
200
+ ...(hostPreviewPort.port !== undefined ? { hostPreviewPort: hostPreviewPort.port } : {}),
201
+ ...(apiBase ? { apiBase } : {}),
202
+ ...(proxyAuth ? { proxyAuth } : {}),
203
+ ...(serverHost ? { serverHost } : {}),
204
+ ...(serverPort.port !== undefined ? { serverPort: serverPort.port } : {}),
205
+ },
206
+ };
207
+ }
208
+ function resolveOptionalString(primary, fallback) {
209
+ const resolved = primary ?? fallback;
210
+ if (resolved === undefined) {
211
+ return undefined;
212
+ }
213
+ const trimmed = resolved.trim();
214
+ return trimmed.length > 0 ? trimmed : undefined;
215
+ }
216
+ function parseOptionalPort(primary, fallback, variableName) {
217
+ const resolved = primary ?? fallback;
218
+ if (resolved === undefined || resolved.trim().length === 0) {
219
+ return {};
220
+ }
221
+ const parsed = Number(resolved);
222
+ if (!Number.isInteger(parsed) || parsed <= 0) {
223
+ return {
224
+ error: `${variableName} must be a positive integer`,
225
+ };
226
+ }
227
+ return { port: parsed };
228
+ }
229
+ //# sourceMappingURL=env.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.js","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=fastapi-dev-runner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fastapi-dev-runner.d.ts","sourceRoot":"","sources":["../src/fastapi-dev-runner.ts"],"names":[],"mappings":""}