primitive-admin 1.0.53 → 1.0.55
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/README.md +38 -10
- package/dist/bin/primitive.js +8 -0
- package/dist/bin/primitive.js.map +1 -1
- package/dist/src/commands/apps.js +54 -2
- package/dist/src/commands/apps.js.map +1 -1
- package/dist/src/commands/auth.js +16 -6
- package/dist/src/commands/auth.js.map +1 -1
- package/dist/src/commands/blob-buckets.js +84 -7
- package/dist/src/commands/blob-buckets.js.map +1 -1
- package/dist/src/commands/catalog.js +3 -3
- package/dist/src/commands/catalog.js.map +1 -1
- package/dist/src/commands/collections.js +12 -9
- package/dist/src/commands/collections.js.map +1 -1
- package/dist/src/commands/databases.js +220 -82
- package/dist/src/commands/databases.js.map +1 -1
- package/dist/src/commands/documents.js +77 -0
- package/dist/src/commands/documents.js.map +1 -1
- package/dist/src/commands/group-type-configs.js +1 -9
- package/dist/src/commands/group-type-configs.js.map +1 -1
- package/dist/src/commands/groups.js +12 -6
- package/dist/src/commands/groups.js.map +1 -1
- package/dist/src/commands/guides.d.ts +161 -0
- package/dist/src/commands/guides.js +502 -84
- package/dist/src/commands/guides.js.map +1 -1
- package/dist/src/commands/integrations.js +2 -2
- package/dist/src/commands/integrations.js.map +1 -1
- package/dist/src/commands/metadata.d.ts +2 -0
- package/dist/src/commands/metadata.js +344 -0
- package/dist/src/commands/metadata.js.map +1 -0
- package/dist/src/commands/prompts.js +2 -2
- package/dist/src/commands/prompts.js.map +1 -1
- package/dist/src/commands/rule-sets.d.ts +1 -0
- package/dist/src/commands/rule-sets.js +25 -3
- package/dist/src/commands/rule-sets.js.map +1 -1
- package/dist/src/commands/scripts.d.ts +2 -0
- package/dist/src/commands/scripts.js +667 -0
- package/dist/src/commands/scripts.js.map +1 -0
- package/dist/src/commands/settings.d.ts +15 -0
- package/dist/src/commands/settings.js +102 -0
- package/dist/src/commands/settings.js.map +1 -0
- package/dist/src/commands/sync-app-settings.d.ts +105 -0
- package/dist/src/commands/sync-app-settings.js +339 -0
- package/dist/src/commands/sync-app-settings.js.map +1 -0
- package/dist/src/commands/sync.d.ts +204 -9
- package/dist/src/commands/sync.js +1706 -371
- package/dist/src/commands/sync.js.map +1 -1
- package/dist/src/commands/vars.d.ts +8 -0
- package/dist/src/commands/vars.js +110 -0
- package/dist/src/commands/vars.js.map +1 -0
- package/dist/src/commands/webhooks.js +17 -3
- package/dist/src/commands/webhooks.js.map +1 -1
- package/dist/src/commands/workflows.d.ts +30 -0
- package/dist/src/commands/workflows.js +667 -59
- package/dist/src/commands/workflows.js.map +1 -1
- package/dist/src/lib/api-client.d.ts +122 -18
- package/dist/src/lib/api-client.js +131 -2
- package/dist/src/lib/api-client.js.map +1 -1
- package/dist/src/lib/app-settings-descriptor.d.ts +108 -0
- package/dist/src/lib/app-settings-descriptor.js +250 -0
- package/dist/src/lib/app-settings-descriptor.js.map +1 -0
- package/dist/src/lib/batch.d.ts +26 -0
- package/dist/src/lib/batch.js +32 -0
- package/dist/src/lib/batch.js.map +1 -0
- package/dist/src/lib/block-layout.d.ts +160 -0
- package/dist/src/lib/block-layout.js +451 -0
- package/dist/src/lib/block-layout.js.map +1 -0
- package/dist/src/lib/codegen-shared/generatedFiles.d.ts +76 -0
- package/dist/src/lib/codegen-shared/generatedFiles.js +144 -0
- package/dist/src/lib/codegen-shared/generatedFiles.js.map +1 -0
- package/dist/src/lib/codegen-shared/resolveCodegenSourceDir.d.ts +68 -0
- package/dist/src/lib/codegen-shared/resolveCodegenSourceDir.js +168 -0
- package/dist/src/lib/codegen-shared/resolveCodegenSourceDir.js.map +1 -0
- package/dist/src/lib/config-toml.d.ts +10 -0
- package/dist/src/lib/config-toml.js +42 -0
- package/dist/src/lib/config-toml.js.map +1 -0
- package/dist/src/lib/config.d.ts +16 -0
- package/dist/src/lib/config.js +41 -0
- package/dist/src/lib/config.js.map +1 -1
- package/dist/src/lib/constants.d.ts +9 -0
- package/dist/src/lib/constants.js +9 -0
- package/dist/src/lib/constants.js.map +1 -1
- package/dist/src/lib/csv.d.ts +1 -2
- package/dist/src/lib/csv.js +3 -8
- package/dist/src/lib/csv.js.map +1 -1
- package/dist/src/lib/db-codegen/dbGenerator.d.ts +21 -65
- package/dist/src/lib/db-codegen/dbGenerator.js +117 -321
- package/dist/src/lib/db-codegen/dbGenerator.js.map +1 -1
- package/dist/src/lib/db-codegen/dbNaming.d.ts +37 -0
- package/dist/src/lib/db-codegen/dbNaming.js +70 -0
- package/dist/src/lib/db-codegen/dbNaming.js.map +1 -1
- package/dist/src/lib/db-codegen/dbTemplates.d.ts +165 -5
- package/dist/src/lib/db-codegen/dbTemplates.js +292 -16
- package/dist/src/lib/db-codegen/dbTemplates.js.map +1 -1
- package/dist/src/lib/db-codegen/dbTsTypes.d.ts +7 -3
- package/dist/src/lib/db-codegen/dbTsTypes.js +23 -1
- package/dist/src/lib/db-codegen/dbTsTypes.js.map +1 -1
- package/dist/src/lib/db-codegen/dbTypeIR.d.ts +146 -0
- package/dist/src/lib/db-codegen/dbTypeIR.js +517 -0
- package/dist/src/lib/db-codegen/dbTypeIR.js.map +1 -0
- package/dist/src/lib/db-codegen/generated-operation-def-descriptor.d.ts +101 -0
- package/dist/src/lib/db-codegen/generated-operation-def-descriptor.js +200 -0
- package/dist/src/lib/db-codegen/generated-operation-def-descriptor.js.map +1 -0
- package/dist/src/lib/generated-allowlist.js +43 -0
- package/dist/src/lib/generated-allowlist.js.map +1 -1
- package/dist/src/lib/init-config.js +2 -2
- package/dist/src/lib/init-config.js.map +1 -1
- package/dist/src/lib/output.d.ts +25 -5
- package/dist/src/lib/output.js +32 -4
- package/dist/src/lib/output.js.map +1 -1
- package/dist/src/lib/query-operators.d.ts +43 -0
- package/dist/src/lib/query-operators.js +80 -0
- package/dist/src/lib/query-operators.js.map +1 -0
- package/dist/src/lib/swift-codegen/dbGenerator.d.ts +68 -0
- package/dist/src/lib/swift-codegen/dbGenerator.js +380 -0
- package/dist/src/lib/swift-codegen/dbGenerator.js.map +1 -0
- package/dist/src/lib/swift-codegen/dbSwiftTypes.d.ts +42 -0
- package/dist/src/lib/swift-codegen/dbSwiftTypes.js +100 -0
- package/dist/src/lib/swift-codegen/dbSwiftTypes.js.map +1 -0
- package/dist/src/lib/swift-codegen/generator.d.ts +84 -0
- package/dist/src/lib/swift-codegen/generator.js +178 -0
- package/dist/src/lib/swift-codegen/generator.js.map +1 -0
- package/dist/src/lib/swift-codegen/schemaToSwift.d.ts +72 -0
- package/dist/src/lib/swift-codegen/schemaToSwift.js +644 -0
- package/dist/src/lib/swift-codegen/schemaToSwift.js.map +1 -0
- package/dist/src/lib/swift-codegen/swiftNaming.d.ts +85 -0
- package/dist/src/lib/swift-codegen/swiftNaming.js +198 -0
- package/dist/src/lib/swift-codegen/swiftNaming.js.map +1 -0
- package/dist/src/lib/sync-resource-types.d.ts +225 -0
- package/dist/src/lib/sync-resource-types.js +394 -0
- package/dist/src/lib/sync-resource-types.js.map +1 -0
- package/dist/src/lib/toml-database-config.d.ts +10 -19
- package/dist/src/lib/toml-database-config.js +28 -59
- package/dist/src/lib/toml-database-config.js.map +1 -1
- package/dist/src/lib/toml-metadata-config.d.ts +147 -0
- package/dist/src/lib/toml-metadata-config.js +463 -0
- package/dist/src/lib/toml-metadata-config.js.map +1 -0
- package/dist/src/lib/toml-native-form.d.ts +46 -0
- package/dist/src/lib/toml-native-form.js +78 -0
- package/dist/src/lib/toml-native-form.js.map +1 -0
- package/dist/src/lib/toml-params-validator.d.ts +34 -0
- package/dist/src/lib/toml-params-validator.js +118 -3
- package/dist/src/lib/toml-params-validator.js.map +1 -1
- package/dist/src/lib/workflow-apply.d.ts +86 -0
- package/dist/src/lib/workflow-apply.js +127 -0
- package/dist/src/lib/workflow-apply.js.map +1 -0
- package/dist/src/lib/workflow-codegen/generated-schema-descriptor.d.ts +129 -0
- package/dist/src/lib/workflow-codegen/generated-schema-descriptor.js +269 -0
- package/dist/src/lib/workflow-codegen/generated-schema-descriptor.js.map +1 -0
- package/dist/src/lib/workflow-codegen/generator.d.ts +87 -0
- package/dist/src/lib/workflow-codegen/generator.js +290 -0
- package/dist/src/lib/workflow-codegen/generator.js.map +1 -0
- package/dist/src/lib/workflow-codegen/invokerIR.d.ts +85 -0
- package/dist/src/lib/workflow-codegen/invokerIR.js +71 -0
- package/dist/src/lib/workflow-codegen/invokerIR.js.map +1 -0
- package/dist/src/lib/workflow-codegen/naming.d.ts +33 -0
- package/dist/src/lib/workflow-codegen/naming.js +81 -0
- package/dist/src/lib/workflow-codegen/naming.js.map +1 -0
- package/dist/src/lib/workflow-codegen/schemaToTs.d.ts +64 -0
- package/dist/src/lib/workflow-codegen/schemaToTs.js +282 -0
- package/dist/src/lib/workflow-codegen/schemaToTs.js.map +1 -0
- package/dist/src/lib/workflow-fragments.js +3 -3
- package/dist/src/lib/workflow-fragments.js.map +1 -1
- package/dist/src/lib/workflow-payload.d.ts +68 -0
- package/dist/src/lib/workflow-payload.js +150 -0
- package/dist/src/lib/workflow-payload.js.map +1 -0
- package/dist/src/lib/workflow-toml-validator.d.ts +1 -1
- package/dist/src/lib/workflow-toml-validator.js +37 -1
- package/dist/src/lib/workflow-toml-validator.js.map +1 -1
- package/dist/src/types/index.d.ts +11 -0
- package/dist/src/validators.d.ts +4 -3
- package/dist/src/validators.js +6 -5
- package/dist/src/validators.js.map +1 -1
- package/package.json +7 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schemaToSwift.js","sourceRoot":"","sources":["../../../../src/lib/swift-codegen/schemaToSwift.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Identifier-naming helpers for `swift-codegen` (issue #1547, Phase 1).
|
|
3
|
+
*
|
|
4
|
+
* This is a faithful TypeScript port of the Swift-native
|
|
5
|
+
* `swift-client/Sources/SwiftBaoCodegen/Naming.swift`. Both implementations
|
|
6
|
+
* must agree EXACTLY on PascalCase, reserved-word escaping, and enum-case
|
|
7
|
+
* sanitization — otherwise the CLI-emitted `.generated.swift` and the Swift
|
|
8
|
+
* model codegen would name the same input differently and drift apart.
|
|
9
|
+
*
|
|
10
|
+
* The maintainer decision (issue #1547, 2026-07-15, binding item 5) requires
|
|
11
|
+
* these two implementations to be pinned to a SHARED naming-conformance fixture
|
|
12
|
+
* set (`naming-conformance-fixtures.json`) consumed by both sides. This file is
|
|
13
|
+
* the TypeScript consumer of those rules; the Swift-side consumer lands with the
|
|
14
|
+
* `swift test` phase (Phase 3), reading the same fixtures.
|
|
15
|
+
*
|
|
16
|
+
* Only the emitted identifiers are sanitized — a generator that walks a JSON
|
|
17
|
+
* schema always keeps the ORIGINAL wire key for `CodingKeys` raw values and for
|
|
18
|
+
* the runtime call, exactly as `Naming.swift` does for model codegen.
|
|
19
|
+
*/
|
|
20
|
+
/**
|
|
21
|
+
* Reserved Swift keywords escaped with backticks when used as an identifier.
|
|
22
|
+
* Byte-for-byte the `Naming.swift` `swiftKeywords` set (issue #1547 binding 5).
|
|
23
|
+
*/
|
|
24
|
+
export declare const SWIFT_KEYWORDS: ReadonlySet<string>;
|
|
25
|
+
/**
|
|
26
|
+
* `tasks` → `Tasks`, `user_profile` → `UserProfile`, `liveUpdatesState` →
|
|
27
|
+
* `LiveUpdatesState`. Port of `Naming.pascalCase`: splits ONLY on `_`, `-`, and
|
|
28
|
+
* space, capitalizes each segment start, and preserves existing internal casing.
|
|
29
|
+
* Other punctuation (e.g. `.`) is kept verbatim here — callers that need a legal
|
|
30
|
+
* *type* identifier run the result through `structTypeName`/`enumTypeName`,
|
|
31
|
+
* which strip it.
|
|
32
|
+
*/
|
|
33
|
+
export declare function pascalCase(s: string): string;
|
|
34
|
+
/** Backtick-escape a reserved word so it is legal as an identifier. */
|
|
35
|
+
export declare function escapeIfReserved(s: string): string;
|
|
36
|
+
/**
|
|
37
|
+
* Derive a Swift `enum` case identifier from an arbitrary enum value string.
|
|
38
|
+
* Port of `Naming.enumCaseIdentifier`: non-`[letter|ASCII-digit|_]` runs
|
|
39
|
+
* collapse to a single `_`, a leading ASCII digit is prefixed with `_`, an
|
|
40
|
+
* empty/all-separator value becomes `_`, and reserved words are backtick-escaped.
|
|
41
|
+
* The value itself is preserved verbatim as the case's explicit raw value by the
|
|
42
|
+
* caller.
|
|
43
|
+
*/
|
|
44
|
+
export declare function enumCaseIdentifier(value: string): string;
|
|
45
|
+
/**
|
|
46
|
+
* Map an ordered list of enum value strings to unique Swift case names,
|
|
47
|
+
* appending `_2`, `_3`, … to any name that would otherwise collide. Port of
|
|
48
|
+
* `Naming.enumCaseNames`. Returns `{ name, raw }` pairs in input order.
|
|
49
|
+
*/
|
|
50
|
+
export declare function enumCaseNames(values: string[]): Array<{
|
|
51
|
+
name: string;
|
|
52
|
+
raw: string;
|
|
53
|
+
}>;
|
|
54
|
+
/**
|
|
55
|
+
* Nested-`enum` type name for a field declaring `enum = [...]`. Port of
|
|
56
|
+
* `Naming.enumTypeName(forField:)`: PascalCase, drop non-identifier characters,
|
|
57
|
+
* prefix `_` if empty/leading-digit, then append `Value` (which also lifts a
|
|
58
|
+
* bare keyword out of keyword-space, e.g. `Self` → `SelfValue`).
|
|
59
|
+
*/
|
|
60
|
+
export declare function enumTypeName(field: string): string;
|
|
61
|
+
/**
|
|
62
|
+
* Nested-`struct` type name for a field whose value is an object (or a
|
|
63
|
+
* oneOf/array-element base). PascalCase + type-identifier sanitization; a
|
|
64
|
+
* keyword result (`Any`, `Self`) is suffixed with `_` since a struct name has
|
|
65
|
+
* no `Value` suffix to lift it out of keyword-space.
|
|
66
|
+
*/
|
|
67
|
+
export declare function structTypeName(field: string): string;
|
|
68
|
+
/**
|
|
69
|
+
* Swift *property* identifier for a JSON object key. A key that is already a
|
|
70
|
+
* legal Swift identifier is kept (reserved words backtick-escaped); anything
|
|
71
|
+
* else (hyphen, dot, leading digit) is sanitized to a legal camelCase
|
|
72
|
+
* identifier. The original wire key is preserved by the caller via `CodingKeys`.
|
|
73
|
+
*/
|
|
74
|
+
export declare function swiftPropertyName(key: string): string;
|
|
75
|
+
/**
|
|
76
|
+
* camelCase free-function name for a workflow invoker factory (#1547, Phase 3).
|
|
77
|
+
* `create-checkout-session` → `createCheckoutSession`. A digit-leading key
|
|
78
|
+
* (`123-job` → `_123Job`) is underscore-prefixed, and a result that lands on a
|
|
79
|
+
* Swift keyword (`default`, `class`) is backtick-escaped — legal for a `func`
|
|
80
|
+
* declaration, unlike a type name (which must be suffix-escaped). Only the
|
|
81
|
+
* emitted identifier changes; the runtime call still passes the ORIGINAL key.
|
|
82
|
+
*/
|
|
83
|
+
export declare function workflowSwiftFactoryName(key: string): string;
|
|
84
|
+
/** Strip backticks from an escaped identifier (for `CodingKeys` raw-value logic). */
|
|
85
|
+
export declare function unescapeIdentifier(name: string): string;
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Identifier-naming helpers for `swift-codegen` (issue #1547, Phase 1).
|
|
3
|
+
*
|
|
4
|
+
* This is a faithful TypeScript port of the Swift-native
|
|
5
|
+
* `swift-client/Sources/SwiftBaoCodegen/Naming.swift`. Both implementations
|
|
6
|
+
* must agree EXACTLY on PascalCase, reserved-word escaping, and enum-case
|
|
7
|
+
* sanitization — otherwise the CLI-emitted `.generated.swift` and the Swift
|
|
8
|
+
* model codegen would name the same input differently and drift apart.
|
|
9
|
+
*
|
|
10
|
+
* The maintainer decision (issue #1547, 2026-07-15, binding item 5) requires
|
|
11
|
+
* these two implementations to be pinned to a SHARED naming-conformance fixture
|
|
12
|
+
* set (`naming-conformance-fixtures.json`) consumed by both sides. This file is
|
|
13
|
+
* the TypeScript consumer of those rules; the Swift-side consumer lands with the
|
|
14
|
+
* `swift test` phase (Phase 3), reading the same fixtures.
|
|
15
|
+
*
|
|
16
|
+
* Only the emitted identifiers are sanitized — a generator that walks a JSON
|
|
17
|
+
* schema always keeps the ORIGINAL wire key for `CodingKeys` raw values and for
|
|
18
|
+
* the runtime call, exactly as `Naming.swift` does for model codegen.
|
|
19
|
+
*/
|
|
20
|
+
/**
|
|
21
|
+
* Reserved Swift keywords escaped with backticks when used as an identifier.
|
|
22
|
+
* Byte-for-byte the `Naming.swift` `swiftKeywords` set (issue #1547 binding 5).
|
|
23
|
+
*/
|
|
24
|
+
export const SWIFT_KEYWORDS = new Set([
|
|
25
|
+
"associatedtype", "class", "deinit", "enum", "extension",
|
|
26
|
+
"fileprivate", "func", "import", "init", "inout", "internal",
|
|
27
|
+
"let", "open", "operator", "private", "precedencegroup", "protocol",
|
|
28
|
+
"public", "rethrows", "static", "struct", "subscript", "typealias",
|
|
29
|
+
"var", "break", "case", "catch", "continue", "default", "defer",
|
|
30
|
+
"do", "else", "fallthrough", "for", "guard", "if", "in", "repeat",
|
|
31
|
+
"return", "throw", "switch", "where", "while", "as", "Any", "false",
|
|
32
|
+
"is", "nil", "self", "Self", "super", "throws", "true", "try",
|
|
33
|
+
]);
|
|
34
|
+
/** True only for the ASCII digits `0`–`9` (Swift's `isASCIIDigit`). */
|
|
35
|
+
function isAsciiDigit(ch) {
|
|
36
|
+
return ch >= "0" && ch <= "9";
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* True for a Unicode letter — the JS equivalent of Swift's `Character.isLetter`
|
|
40
|
+
* (Swift identifiers permit Unicode letters). Iterating by code point keeps
|
|
41
|
+
* astral characters intact.
|
|
42
|
+
*/
|
|
43
|
+
function isLetter(ch) {
|
|
44
|
+
return /\p{L}/u.test(ch);
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* `tasks` → `Tasks`, `user_profile` → `UserProfile`, `liveUpdatesState` →
|
|
48
|
+
* `LiveUpdatesState`. Port of `Naming.pascalCase`: splits ONLY on `_`, `-`, and
|
|
49
|
+
* space, capitalizes each segment start, and preserves existing internal casing.
|
|
50
|
+
* Other punctuation (e.g. `.`) is kept verbatim here — callers that need a legal
|
|
51
|
+
* *type* identifier run the result through `structTypeName`/`enumTypeName`,
|
|
52
|
+
* which strip it.
|
|
53
|
+
*/
|
|
54
|
+
export function pascalCase(s) {
|
|
55
|
+
if (s.length === 0)
|
|
56
|
+
return s;
|
|
57
|
+
let out = "";
|
|
58
|
+
let capitalizeNext = true;
|
|
59
|
+
for (const ch of s) {
|
|
60
|
+
if (ch === "_" || ch === "-" || ch === " ") {
|
|
61
|
+
capitalizeNext = true;
|
|
62
|
+
continue;
|
|
63
|
+
}
|
|
64
|
+
if (capitalizeNext) {
|
|
65
|
+
out += ch.toUpperCase();
|
|
66
|
+
capitalizeNext = false;
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
out += ch;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return out;
|
|
73
|
+
}
|
|
74
|
+
/** Backtick-escape a reserved word so it is legal as an identifier. */
|
|
75
|
+
export function escapeIfReserved(s) {
|
|
76
|
+
return SWIFT_KEYWORDS.has(s) ? `\`${s}\`` : s;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Derive a Swift `enum` case identifier from an arbitrary enum value string.
|
|
80
|
+
* Port of `Naming.enumCaseIdentifier`: non-`[letter|ASCII-digit|_]` runs
|
|
81
|
+
* collapse to a single `_`, a leading ASCII digit is prefixed with `_`, an
|
|
82
|
+
* empty/all-separator value becomes `_`, and reserved words are backtick-escaped.
|
|
83
|
+
* The value itself is preserved verbatim as the case's explicit raw value by the
|
|
84
|
+
* caller.
|
|
85
|
+
*/
|
|
86
|
+
export function enumCaseIdentifier(value) {
|
|
87
|
+
let out = "";
|
|
88
|
+
for (const ch of value) {
|
|
89
|
+
if (isLetter(ch) || isAsciiDigit(ch) || ch === "_") {
|
|
90
|
+
out += ch;
|
|
91
|
+
}
|
|
92
|
+
else if (!out.endsWith("_")) {
|
|
93
|
+
out += "_";
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
// Trim a trailing separator artifact but keep a lone "_".
|
|
97
|
+
if (out.length > 1 && out.endsWith("_"))
|
|
98
|
+
out = out.slice(0, -1);
|
|
99
|
+
if (out.length === 0)
|
|
100
|
+
out = "_";
|
|
101
|
+
if (isAsciiDigit(out.charAt(0)))
|
|
102
|
+
out = "_" + out;
|
|
103
|
+
return escapeIfReserved(out);
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Map an ordered list of enum value strings to unique Swift case names,
|
|
107
|
+
* appending `_2`, `_3`, … to any name that would otherwise collide. Port of
|
|
108
|
+
* `Naming.enumCaseNames`. Returns `{ name, raw }` pairs in input order.
|
|
109
|
+
*/
|
|
110
|
+
export function enumCaseNames(values) {
|
|
111
|
+
const used = new Map();
|
|
112
|
+
const out = [];
|
|
113
|
+
for (const v of values) {
|
|
114
|
+
// `enumCaseIdentifier` may return a backtick-escaped keyword (e.g.
|
|
115
|
+
// `` `default` ``). Dedup and build the `_N` suffix on the UN-escaped base,
|
|
116
|
+
// then re-escape once — appending the suffix to the escaped form would
|
|
117
|
+
// produce `` `default`_2 `` (the digit outside the backticks), which is not
|
|
118
|
+
// a legal Swift identifier.
|
|
119
|
+
const bare = unescapeIdentifier(enumCaseIdentifier(v));
|
|
120
|
+
const count = used.get(bare) ?? 0;
|
|
121
|
+
used.set(bare, count + 1);
|
|
122
|
+
const name = escapeIfReserved(count === 0 ? bare : `${bare}_${count + 1}`);
|
|
123
|
+
out.push({ name, raw: v });
|
|
124
|
+
}
|
|
125
|
+
return out;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Sanitize a PascalCased name into a legal, non-keyword Swift *type* identifier.
|
|
129
|
+
* A type name can't be backtick-escaped the way a property name can, so
|
|
130
|
+
* illegal characters are dropped and a keyword result is suffixed. Shared by
|
|
131
|
+
* `structTypeName` and `enumTypeName` (which mirrors `Naming.enumTypeName`).
|
|
132
|
+
*/
|
|
133
|
+
function sanitizeTypeIdentifier(pascal) {
|
|
134
|
+
let base = "";
|
|
135
|
+
for (const ch of pascal) {
|
|
136
|
+
if (isLetter(ch) || isAsciiDigit(ch) || ch === "_")
|
|
137
|
+
base += ch;
|
|
138
|
+
}
|
|
139
|
+
if (base.length === 0)
|
|
140
|
+
base = "_";
|
|
141
|
+
if (isAsciiDigit(base.charAt(0)))
|
|
142
|
+
base = "_" + base;
|
|
143
|
+
return base;
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Nested-`enum` type name for a field declaring `enum = [...]`. Port of
|
|
147
|
+
* `Naming.enumTypeName(forField:)`: PascalCase, drop non-identifier characters,
|
|
148
|
+
* prefix `_` if empty/leading-digit, then append `Value` (which also lifts a
|
|
149
|
+
* bare keyword out of keyword-space, e.g. `Self` → `SelfValue`).
|
|
150
|
+
*/
|
|
151
|
+
export function enumTypeName(field) {
|
|
152
|
+
return sanitizeTypeIdentifier(pascalCase(field)) + "Value";
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Nested-`struct` type name for a field whose value is an object (or a
|
|
156
|
+
* oneOf/array-element base). PascalCase + type-identifier sanitization; a
|
|
157
|
+
* keyword result (`Any`, `Self`) is suffixed with `_` since a struct name has
|
|
158
|
+
* no `Value` suffix to lift it out of keyword-space.
|
|
159
|
+
*/
|
|
160
|
+
export function structTypeName(field) {
|
|
161
|
+
const base = sanitizeTypeIdentifier(pascalCase(field));
|
|
162
|
+
return SWIFT_KEYWORDS.has(base) ? `${base}_` : base;
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Swift *property* identifier for a JSON object key. A key that is already a
|
|
166
|
+
* legal Swift identifier is kept (reserved words backtick-escaped); anything
|
|
167
|
+
* else (hyphen, dot, leading digit) is sanitized to a legal camelCase
|
|
168
|
+
* identifier. The original wire key is preserved by the caller via `CodingKeys`.
|
|
169
|
+
*/
|
|
170
|
+
export function swiftPropertyName(key) {
|
|
171
|
+
if (/^[A-Za-z_][A-Za-z0-9_]*$/.test(key)) {
|
|
172
|
+
return escapeIfReserved(key);
|
|
173
|
+
}
|
|
174
|
+
const pascal = sanitizeTypeIdentifier(pascalCase(key));
|
|
175
|
+
const camel = pascal.charAt(0).toLowerCase() + pascal.slice(1);
|
|
176
|
+
const safe = isAsciiDigit(camel.charAt(0)) ? `_${camel}` : camel;
|
|
177
|
+
return escapeIfReserved(safe);
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* camelCase free-function name for a workflow invoker factory (#1547, Phase 3).
|
|
181
|
+
* `create-checkout-session` → `createCheckoutSession`. A digit-leading key
|
|
182
|
+
* (`123-job` → `_123Job`) is underscore-prefixed, and a result that lands on a
|
|
183
|
+
* Swift keyword (`default`, `class`) is backtick-escaped — legal for a `func`
|
|
184
|
+
* declaration, unlike a type name (which must be suffix-escaped). Only the
|
|
185
|
+
* emitted identifier changes; the runtime call still passes the ORIGINAL key.
|
|
186
|
+
*/
|
|
187
|
+
export function workflowSwiftFactoryName(key) {
|
|
188
|
+
const base = sanitizeTypeIdentifier(pascalCase(key));
|
|
189
|
+
if (base.length === 0)
|
|
190
|
+
return "_";
|
|
191
|
+
const camel = base.charAt(0).toLowerCase() + base.slice(1);
|
|
192
|
+
return escapeIfReserved(camel);
|
|
193
|
+
}
|
|
194
|
+
/** Strip backticks from an escaped identifier (for `CodingKeys` raw-value logic). */
|
|
195
|
+
export function unescapeIdentifier(name) {
|
|
196
|
+
return name.replace(/`/g, "");
|
|
197
|
+
}
|
|
198
|
+
//# sourceMappingURL=swiftNaming.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"swiftNaming.js","sourceRoot":"","sources":["../../../../src/lib/swift-codegen/swiftNaming.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared layout metadata for the per-entity resource types `sync pull` writes
|
|
3
|
+
* into a sync slot (issue #1659).
|
|
4
|
+
*
|
|
5
|
+
* `sync pull` writes one file per server entity and records what it wrote in
|
|
6
|
+
* `.primitive-sync.json` (`SyncState.entities[<slot>]`). Until #1659 it never
|
|
7
|
+
* removed a local file whose entity had disappeared server-side, so the next
|
|
8
|
+
* `sync push` — which treats local TOML as the source of truth — silently
|
|
9
|
+
* re-created the just-deleted entity.
|
|
10
|
+
*
|
|
11
|
+
* This module holds the narrow descriptor the prune pass and `sync diff` share:
|
|
12
|
+
* directory, extension, state slot, key→filename derivation, and the sidecar
|
|
13
|
+
* test-directory block type. The pull write loops deliberately stay as they are
|
|
14
|
+
* — this table is layout metadata, not a write framework.
|
|
15
|
+
*/
|
|
16
|
+
import type { SyncState } from "../types/index.js";
|
|
17
|
+
export type SyncEntitySlot = keyof SyncState["entities"];
|
|
18
|
+
export interface SyncResourceType {
|
|
19
|
+
/** Singular name used in pull/diff output, e.g. `"rule-set"`. */
|
|
20
|
+
label: string;
|
|
21
|
+
/** Directory under the sync slot holding this type's files. */
|
|
22
|
+
dir: string;
|
|
23
|
+
/** Extension of this type's files. */
|
|
24
|
+
ext: ".toml" | ".rhai";
|
|
25
|
+
/** Slot in `SyncState.entities` recording what a prior pull managed. */
|
|
26
|
+
stateSlot: SyncEntitySlot;
|
|
27
|
+
/**
|
|
28
|
+
* Entity key → the file basename `sync pull` writes for it. This must match
|
|
29
|
+
* the write side exactly, so prune only ever targets a file pull created.
|
|
30
|
+
*/
|
|
31
|
+
fileFromKey(key: string): string;
|
|
32
|
+
/**
|
|
33
|
+
* Block type for the sidecar `<key>.tests/` directory, when the type has one.
|
|
34
|
+
* Pruning an entity also removes its test directory and the matching
|
|
35
|
+
* `entities.testCases` records.
|
|
36
|
+
*/
|
|
37
|
+
testBlockType?: "prompt" | "workflow" | "script";
|
|
38
|
+
/**
|
|
39
|
+
* Whether this type's server listing returns *every* key, so "absent from the
|
|
40
|
+
* listing" really means "gone from the server".
|
|
41
|
+
*
|
|
42
|
+
* Prune deletes files, so a successful fetch is not enough — the response also
|
|
43
|
+
* has to be complete. Only the four listings below paginate (server returns
|
|
44
|
+
* `nextCursor`, and `sync pull` drains it with `fetchAll`). The rest call
|
|
45
|
+
* `queryByIndex` with no cursor and return a single DynamoDB page (~1MB), so
|
|
46
|
+
* a big enough app gets a truncated list with a 200 and no error: the entities
|
|
47
|
+
* past the page boundary would look deleted and prune would remove the files
|
|
48
|
+
* of entities that are still live. `cron-triggers` is the sharpest case — a
|
|
49
|
+
* hard `{ limit: 100 }` with the archived filter applied after the query, so
|
|
50
|
+
* its effective ceiling is below 100 rows.
|
|
51
|
+
*
|
|
52
|
+
* Those types are skipped for pruning until their listings are complete
|
|
53
|
+
* (#1668). Flip this to `true` per type as each listing learns to paginate.
|
|
54
|
+
*/
|
|
55
|
+
listingComplete: boolean;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Rule sets are keyed on disk (and in sync state) by their name with
|
|
59
|
+
* filesystem-hostile characters replaced. Shared by the pull write loop and the
|
|
60
|
+
* prune pass so the two can never derive a different key for the same rule set.
|
|
61
|
+
*/
|
|
62
|
+
export declare function ruleSetFileKey(ruleSet: {
|
|
63
|
+
name?: string;
|
|
64
|
+
ruleSetId?: string;
|
|
65
|
+
}): string;
|
|
66
|
+
/**
|
|
67
|
+
* Every per-entity resource type in a sync slot. `app.toml` and `vars.toml` are
|
|
68
|
+
* root singletons, not per-entity directories, so they are not listed here —
|
|
69
|
+
* var removal is already handled within-file by `sync push` (`planVarsPush`).
|
|
70
|
+
*/
|
|
71
|
+
export declare const SYNC_RESOURCE_TYPES: SyncResourceType[];
|
|
72
|
+
/**
|
|
73
|
+
* Outcome of a server fetch that establishes which entities of a type exist.
|
|
74
|
+
*
|
|
75
|
+
* `sync pull` historically swallowed several list errors with `.catch(() => [])`,
|
|
76
|
+
* which makes a transient 401/500/network error indistinguishable from "the app
|
|
77
|
+
* has none of these". Pruning off that empty list would delete every local file
|
|
78
|
+
* of the type, so prune consumes this explicit outcome instead.
|
|
79
|
+
*/
|
|
80
|
+
export type PresenceOutcome = {
|
|
81
|
+
ok: true;
|
|
82
|
+
serverKeys: string[];
|
|
83
|
+
} | {
|
|
84
|
+
ok: false;
|
|
85
|
+
};
|
|
86
|
+
/** Generic try/catch wrapper for a server fetch, in the ok/error shape. */
|
|
87
|
+
export declare function attemptFetch<T>(fn: () => Promise<T>): Promise<{
|
|
88
|
+
ok: true;
|
|
89
|
+
value: T;
|
|
90
|
+
} | {
|
|
91
|
+
ok: false;
|
|
92
|
+
error: any;
|
|
93
|
+
}>;
|
|
94
|
+
/**
|
|
95
|
+
* A filename must stay inside its type's directory. State is read from a file
|
|
96
|
+
* on disk, so a corrupt or hand-edited `.primitive-sync.json` must never be
|
|
97
|
+
* able to steer an `unlinkSync` outside the sync slot.
|
|
98
|
+
*/
|
|
99
|
+
export declare function isSafeSyncFilename(filename: string): boolean;
|
|
100
|
+
export interface PrunePlan {
|
|
101
|
+
/** Entity keys whose managed file should be removed. */
|
|
102
|
+
keys: string[];
|
|
103
|
+
/** True when no prune runs for this type at all. */
|
|
104
|
+
skipped: boolean;
|
|
105
|
+
/** Why prune was skipped, for the operator-facing warning. */
|
|
106
|
+
skipReason?: "disabled" | "fetch-failed" | "listing-incomplete";
|
|
107
|
+
/**
|
|
108
|
+
* Managed keys whose derived filename is unsafe. Never removed — reported so
|
|
109
|
+
* a corrupt sync state is visible rather than silent.
|
|
110
|
+
*/
|
|
111
|
+
unsafeKeys: string[];
|
|
112
|
+
/**
|
|
113
|
+
* Managed keys absent from the server listing that this plan is NOT pruning
|
|
114
|
+
* (`--no-prune`, or a listing that may be truncated). Their files stay on
|
|
115
|
+
* disk, so the caller must keep their prior state entry — otherwise the key
|
|
116
|
+
* drops out of `entities[<slot>]` and the file silently stops being managed.
|
|
117
|
+
* Empty when presence could not be established at all.
|
|
118
|
+
*/
|
|
119
|
+
unprunedAbsentKeys: string[];
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Decide which of a type's managed entity keys should have their local file
|
|
123
|
+
* removed, given the prior sync state and the outcome of this pull's fetch.
|
|
124
|
+
*
|
|
125
|
+
* A key is pruned iff it was **managed** (present in the prior
|
|
126
|
+
* `SyncState.entities[<slot>]`, so a previous pull wrote its file) and is
|
|
127
|
+
* **absent from the server keys** this pull fetched. A local file that was
|
|
128
|
+
* never in prior state was hand-authored — it is left alone and reported by
|
|
129
|
+
* `sync diff` as new.
|
|
130
|
+
*
|
|
131
|
+
* Pure and side-effect-free (the caller owns the `unlinkSync`) so the safety
|
|
132
|
+
* rules are unit-testable without a live server.
|
|
133
|
+
*/
|
|
134
|
+
export declare function planPrune(input: {
|
|
135
|
+
resourceType: SyncResourceType;
|
|
136
|
+
/** Keys from the prior `SyncState.entities[<slot>]`. */
|
|
137
|
+
priorKeys: string[];
|
|
138
|
+
/** Presence of this type's entities server-side, this pull. */
|
|
139
|
+
presence: PresenceOutcome;
|
|
140
|
+
/** False when the operator passed `--no-prune`. */
|
|
141
|
+
enabled: boolean;
|
|
142
|
+
}): PrunePlan;
|
|
143
|
+
/**
|
|
144
|
+
* Copy prior state entries for entities the server listed but this pull did not
|
|
145
|
+
* write (e.g. a script with no active config, or an email template whose detail
|
|
146
|
+
* fetch failed). Without this the entity would drop out of the state slot and
|
|
147
|
+
* look hand-authored to the next pull, so its stale file could never be pruned.
|
|
148
|
+
*/
|
|
149
|
+
export declare function preserveUnwrittenEntries<T>(written: Record<string, T>, prior: Record<string, T> | undefined, serverKeys: string[]): Record<string, T>;
|
|
150
|
+
/**
|
|
151
|
+
* Best-effort check for uncommitted git changes at `path` (a file or a
|
|
152
|
+
* directory). Returns false when git isn't available, the path isn't in a
|
|
153
|
+
* repository, or anything else goes wrong — the caller treats "unknown" as
|
|
154
|
+
* "no local edits", so this never blocks on a non-git checkout.
|
|
155
|
+
*
|
|
156
|
+
* `path` is passed as an argument, never interpolated into a shell string:
|
|
157
|
+
* on the prune path its basename derives from a server entity name, and entity
|
|
158
|
+
* names are free-form (a rule set may legitimately be named ``a`b`` or `a$b`).
|
|
159
|
+
* `execFileSync` runs git directly with no shell, so no name can be read as
|
|
160
|
+
* a command.
|
|
161
|
+
*
|
|
162
|
+
* `includeUntracked` decides whether an untracked file counts as a change:
|
|
163
|
+
* - `true` (default) suits "am I about to overwrite something?" — `sync revert`
|
|
164
|
+
* would clobber an untracked file just the same.
|
|
165
|
+
* - `false` suits "did the operator edit this file?" — an untracked file is the
|
|
166
|
+
* ordinary state of a pulled file in a sync dir that was never committed, and
|
|
167
|
+
* is not evidence of a local edit.
|
|
168
|
+
*/
|
|
169
|
+
export declare function hasUncommittedChanges(path: string, options?: {
|
|
170
|
+
includeUntracked?: boolean;
|
|
171
|
+
}): Promise<boolean>;
|
|
172
|
+
/**
|
|
173
|
+
* The phrase pull and diff both use for an entity that is no longer exported.
|
|
174
|
+
*
|
|
175
|
+
* The plan of record asked for "archived or deleted" on the assumption that
|
|
176
|
+
* archiving drops an entity from the export. It does not: the list endpoints
|
|
177
|
+
* filter by status only when `?status=` is passed and pull never passes it
|
|
178
|
+
* (`listAppPrompts`/`listAppIntegrations` in `src/admin-api.ts`; `fetchAll` in
|
|
179
|
+
* `cli/src/commands/sync.ts`). An archived entity stays in the export and its
|
|
180
|
+
* TOML is rewritten with `status = "archived"`, so it is never pruned. The only
|
|
181
|
+
* way to be absent from the export is to have been deleted.
|
|
182
|
+
*/
|
|
183
|
+
export declare const ABSENT_FROM_EXPORT = "absent from sync export (deleted on server)";
|
|
184
|
+
/** `sync diff` status for a local file whose managed entity is gone. */
|
|
185
|
+
export declare const LOCAL_ONLY_ABSENT = "local only (absent from export)";
|
|
186
|
+
/** `sync diff` status for a local file the operator authored themselves. */
|
|
187
|
+
export declare const LOCAL_ONLY_NEW = "local only";
|
|
188
|
+
/**
|
|
189
|
+
* Classify a local file that has no matching server entity (issue #1659).
|
|
190
|
+
*
|
|
191
|
+
* The two cases look identical on disk but mean opposite things. A key a prior
|
|
192
|
+
* pull managed means the entity was deleted server-side and this stale file
|
|
193
|
+
* will RE-create it on the next push. A key never pulled means the operator
|
|
194
|
+
* authored the file and push creating it is the intent.
|
|
195
|
+
*/
|
|
196
|
+
export declare function classifyLocalOnly(priorEntities: SyncState["entities"] | undefined, slot: SyncEntitySlot, key: string): typeof LOCAL_ONLY_NEW | typeof LOCAL_ONLY_ABSENT;
|
|
197
|
+
export interface PruneResult {
|
|
198
|
+
/** Entity keys whose file was removed — what the "Pruned" count reports. */
|
|
199
|
+
prunedKeys: string[];
|
|
200
|
+
/** Slot-relative paths removed (files and sidecar test directories). */
|
|
201
|
+
removed: string[];
|
|
202
|
+
/** Keys left in place because the file carries uncommitted local edits. */
|
|
203
|
+
keptWithLocalEdits: string[];
|
|
204
|
+
/** `entities.testCases` state keys the pruned blocks owned. */
|
|
205
|
+
removedTestCaseKeys: string[];
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Remove the local files for `keys` (as decided by `planPrune`), along with any
|
|
209
|
+
* sidecar `<key>.tests/` directory.
|
|
210
|
+
*
|
|
211
|
+
* A file with uncommitted git edits is kept and reported instead: the operator
|
|
212
|
+
* may be mid-way through authoring a change they meant to push. Everything
|
|
213
|
+
* removed here is recoverable from the pre-pull snapshot via `sync revert`.
|
|
214
|
+
*/
|
|
215
|
+
export declare function applyPrune(options: {
|
|
216
|
+
configDir: string;
|
|
217
|
+
resourceType: SyncResourceType;
|
|
218
|
+
keys: string[];
|
|
219
|
+
/** `entities.testCases` built by this pull; pruned blocks' records are dropped. */
|
|
220
|
+
testCaseEntities?: Record<string, {
|
|
221
|
+
blockType?: string;
|
|
222
|
+
blockKey?: string;
|
|
223
|
+
}>;
|
|
224
|
+
logger?: (msg: string) => void;
|
|
225
|
+
}): Promise<PruneResult>;
|