Skip to content

Commit 14cf56c

Browse files
committed
tidied up ts generation code
1 parent 69a1cc6 commit 14cf56c

25 files changed

+889
-1550
lines changed

.prettierignore

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,8 @@ tasks/
55
site/.next
66
site/out
77

8-
site/lib/log-generation/sample-data.ts
9-
site/lib/log-generation/log-fields.json
10-
site/lib/log-generation/log-types.ts
11-
site/lib/log-generation/sorbet-*.json
8+
site/generated/
9+
1210
site/public/coverage
1311
site/public/yard
1412

schemas/log_sources/active_storage.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,8 @@ events:
1616
MimeType: String
1717
Size: Integer
1818
Metadata: 'T::Hash[String, T.untyped]'
19-
DurationMs: Float
19+
DurationMs:
20+
type: Float
2021
Checksum: String
2122

2223
Download:

scripts/export_typescript_types.rb

Lines changed: 0 additions & 15 deletions
This file was deleted.

scripts/generate_log_structs.rb

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ class FieldSpec < T::Struct
2626
const :type, String
2727
const :sorbet_type, String
2828
const :required, T::Boolean
29+
const :sample_type, T.nilable(String)
2930
end
3031

3132
class EventSpec < T::Struct
@@ -98,13 +99,15 @@ def normalize_fields(fields_hash, default_required)
9899
if spec.is_a?(String)
99100
type = spec
100101
required = default_required
102+
sample_type = nil
101103
else
102104
type = spec.fetch(:type)
103105
required = spec.key?(:required) ? T.cast(spec[:required], T::Boolean) : default_required
106+
sample_type = T.let(spec[:sample_type]&.to_s, T.nilable(String))
104107
end
105108
enum_name = /\A[A-Z]/.match?(key) ? key : camelize(key)
106109
prop_name = snake_case(enum_name)
107-
fields << FieldSpec.new(enum_name: enum_name, prop_name: prop_name, type: type, sorbet_type: type_to_sorbet(type), required: T.let(required, T::Boolean))
110+
fields << FieldSpec.new(enum_name: enum_name, prop_name: prop_name, type: type, sorbet_type: type_to_sorbet(type), required: T.let(required, T::Boolean), sample_type: sample_type)
108111
end
109112
fields
110113
end

scripts/generate_typescript_structs.rb

Lines changed: 441 additions & 0 deletions
Large diffs are not rendered by default.

site/.gitignore

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -41,13 +41,9 @@ yarn-error.log*
4141
*.tsbuildinfo
4242
next-env.d.ts
4343

44-
# Exported log types and keys (generated by ./scripts/export_typescript_types.rb)
45-
lib/log-generation/log-types.ts
46-
lib/log-generation/log-fields.json
47-
lib/log-generation/sorbet-enums.json
48-
lib/log-generation/sorbet-log-structs.json
49-
5044
# Generated HTML - YARD docs, coverage reports, etc.
5145
public/yard/
5246
public/coverage/
53-
lib/log-generation/generated/
47+
48+
# Sorbet => TS/JSON
49+
generated/

site/.prettierignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
11
lib/log-generation/generated/
2+
generated/logstruct/

site/app/docs/integrations/page.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { EditPageLink } from '@/components/edit-page-link';
33
import { RubyCodeExample } from '@/components/ruby-code-example';
44
import { HeadingWithAnchor } from '@/components/heading-with-anchor';
55
import { LogGenerator } from '@/lib/log-generation';
6-
import { AllLogTypes, Event } from '@/lib/log-generation/generated/log-types';
6+
import { AllLogTypes, Event } from '@/generated/logstruct';
77
import { getCodeExample } from '@/lib/codeExamples';
88
import {
99
getEventsForLogType,

site/app/docs/layout.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import Link from 'next/link';
44
import { usePathname } from 'next/navigation';
55
import { cn } from '@/lib/utils';
66
import { NestedDocNavItem } from '@/components/nested-doc-nav-item';
7-
import { AllLogTypes } from '@/lib/log-generation/generated/log-types';
7+
import { AllLogTypes } from '@/generated/logstruct';
88
import { getLogTypeInfo, getTitleId } from '@/lib/integration-helpers';
99

1010
interface DocNavItemProps {

site/components/enums-list.tsx

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,7 @@ interface EnumData {
1717
const getEnumsData = cache(async (): Promise<EnumData> => {
1818
try {
1919
// Use dynamic import to load the JSON file
20-
const data = await import(
21-
'@/lib/log-generation/generated/sorbet-enums.json'
22-
);
20+
const data = await import('@/generated/logstruct/sorbet-enums.json');
2321
return data.default as EnumData;
2422
} catch (error) {
2523
console.error('Error loading enums data:', error);

0 commit comments

Comments
 (0)