@paakd/config 0.0.2

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 (140) hide show
  1. package/dist/src/index.js +20 -0
  2. package/gen/go/addresses/Address.pkl.go +10 -0
  3. package/gen/go/addresses/Addresses.pkl.go +43 -0
  4. package/gen/go/addresses/BillingAddress.pkl.go +8 -0
  5. package/gen/go/addresses/Field.pkl.go +43 -0
  6. package/gen/go/addresses/addressgroup/AddressGroup.pkl.go +43 -0
  7. package/gen/go/addresses/fieldtype/FieldType.pkl.go +61 -0
  8. package/gen/go/addresses/init.pkl.go +11 -0
  9. package/gen/go/cloudflare/Cloudflare.pkl.go +37 -0
  10. package/gen/go/cloudflare/R2Bucket.pkl.go +22 -0
  11. package/gen/go/cloudflare/TerraformBackend.pkl.go +16 -0
  12. package/gen/go/cloudflare/Turnstile.pkl.go +8 -0
  13. package/gen/go/cloudflare/init.pkl.go +11 -0
  14. package/gen/go/db/DB.pkl.go +43 -0
  15. package/gen/go/db/DBConnection.pkl.go +12 -0
  16. package/gen/go/db/init.pkl.go +9 -0
  17. package/gen/go/dune/Dune.pkl.go +47 -0
  18. package/gen/go/dune/init.pkl.go +8 -0
  19. package/gen/go/enterprise/Enterprise.pkl.go +118 -0
  20. package/gen/go/enterprise/init.pkl.go +8 -0
  21. package/gen/go/enterprise/taxonomyversion/TaxonomyVersion.pkl.go +37 -0
  22. package/gen/go/redis/Redis.pkl.go +41 -0
  23. package/gen/go/redis/init.pkl.go +8 -0
  24. package/gen/go/shared/Build.pkl.go +46 -0
  25. package/gen/go/shared/Shared.pkl.go +35 -0
  26. package/gen/go/shared/init.pkl.go +9 -0
  27. package/gen/go/worker/Worker.pkl.go +55 -0
  28. package/gen/go/worker/WorkerConnect.pkl.go +6 -0
  29. package/gen/go/worker/init.pkl.go +9 -0
  30. package/gen/js/development/basket_eco_packages_config_addresses.pkl.ts +106 -0
  31. package/gen/js/development/basket_eco_packages_config_checkout.pkl.ts +73 -0
  32. package/gen/js/development/basket_eco_packages_config_cloudflare.pkl.ts +69 -0
  33. package/gen/js/development/basket_eco_packages_config_cms.pkl.ts +119 -0
  34. package/gen/js/development/basket_eco_packages_config_db.pkl.ts +47 -0
  35. package/gen/js/development/basket_eco_packages_config_dune.pkl.ts +36 -0
  36. package/gen/js/development/basket_eco_packages_config_enterprise.pkl.ts +290 -0
  37. package/gen/js/development/basket_eco_packages_config_feature.pkl.ts +58 -0
  38. package/gen/js/development/basket_eco_packages_config_redis.pkl.ts +30 -0
  39. package/gen/js/development/basket_eco_packages_config_renderer_development_cms.pkl.ts +28 -0
  40. package/gen/js/development/basket_eco_packages_config_shared.pkl.ts +73 -0
  41. package/gen/js/development/basket_eco_packages_config_worker.pkl.ts +53 -0
  42. package/gen/js/production/basket_eco_packages_config_addresses.pkl.ts +106 -0
  43. package/gen/js/production/basket_eco_packages_config_checkout.pkl.ts +73 -0
  44. package/gen/js/production/basket_eco_packages_config_cloudflare.pkl.ts +69 -0
  45. package/gen/js/production/basket_eco_packages_config_cms.pkl.ts +119 -0
  46. package/gen/js/production/basket_eco_packages_config_db.pkl.ts +47 -0
  47. package/gen/js/production/basket_eco_packages_config_dune.pkl.ts +36 -0
  48. package/gen/js/production/basket_eco_packages_config_enterprise.pkl.ts +290 -0
  49. package/gen/js/production/basket_eco_packages_config_feature.pkl.ts +58 -0
  50. package/gen/js/production/basket_eco_packages_config_kiosk_host.pkl.ts +72 -0
  51. package/gen/js/production/basket_eco_packages_config_redis.pkl.ts +30 -0
  52. package/gen/js/production/basket_eco_packages_config_renderer_production_cms.pkl.ts +28 -0
  53. package/gen/js/production/basket_eco_packages_config_renderer_production_dune_config.pkl.ts +29 -0
  54. package/gen/js/production/basket_eco_packages_config_renderer_production_workflow_config.pkl.ts +29 -0
  55. package/gen/js/production/basket_eco_packages_config_renderer_staging_dune_config.pkl.ts +29 -0
  56. package/gen/js/production/basket_eco_packages_config_shared.pkl.ts +73 -0
  57. package/gen/js/production/basket_eco_packages_config_worker.pkl.ts +49 -0
  58. package/gen/js/staging/basket_eco_packages_config_addresses.pkl.ts +106 -0
  59. package/gen/js/staging/basket_eco_packages_config_checkout.pkl.ts +77 -0
  60. package/gen/js/staging/basket_eco_packages_config_cloudflare.pkl.ts +74 -0
  61. package/gen/js/staging/basket_eco_packages_config_cms.pkl.ts +119 -0
  62. package/gen/js/staging/basket_eco_packages_config_db.pkl.ts +47 -0
  63. package/gen/js/staging/basket_eco_packages_config_dune.pkl.ts +40 -0
  64. package/gen/js/staging/basket_eco_packages_config_enterprise.pkl.ts +290 -0
  65. package/gen/js/staging/basket_eco_packages_config_feature.pkl.ts +58 -0
  66. package/gen/js/staging/basket_eco_packages_config_redis.pkl.ts +30 -0
  67. package/gen/js/staging/basket_eco_packages_config_renderer_staging_cms.pkl.ts +28 -0
  68. package/gen/js/staging/basket_eco_packages_config_renderer_staging_dune_config.pkl.ts +29 -0
  69. package/gen/js/staging/basket_eco_packages_config_renderer_staging_workflow_config.pkl.ts +29 -0
  70. package/gen/js/staging/basket_eco_packages_config_shared.pkl.ts +69 -0
  71. package/gen/js/staging/basket_eco_packages_config_worker.pkl.ts +53 -0
  72. package/package.json +66 -0
  73. package/src/addresses.ts +90 -0
  74. package/src/authorization/policy.conf +15 -0
  75. package/src/authorization/policy.csv +26 -0
  76. package/src/chk.spec.ts +61 -0
  77. package/src/chk.ts +88 -0
  78. package/src/cms.test.ts +52 -0
  79. package/src/cms.ts +65 -0
  80. package/src/index.ts +4 -0
  81. package/src/pkl/PklProject +21 -0
  82. package/src/pkl/development/Addresses.pkl +2114 -0
  83. package/src/pkl/development/CMS.pkl +37 -0
  84. package/src/pkl/development/Checkout.pkl +32 -0
  85. package/src/pkl/development/Cloudflare.pkl +20 -0
  86. package/src/pkl/development/Db.pkl +14 -0
  87. package/src/pkl/development/Dune.pkl +12 -0
  88. package/src/pkl/development/Enterprise.pkl +158 -0
  89. package/src/pkl/development/Feature.pkl +4 -0
  90. package/src/pkl/development/Redis.pkl +6 -0
  91. package/src/pkl/development/Shared.pkl +16 -0
  92. package/src/pkl/development/Worker.pkl +43 -0
  93. package/src/pkl/development/renderer/CMS.pkl +59 -0
  94. package/src/pkl/production/Addresses.pkl +2114 -0
  95. package/src/pkl/production/CMS.pkl +34 -0
  96. package/src/pkl/production/Checkout.pkl +32 -0
  97. package/src/pkl/production/Cloudflare.pkl +20 -0
  98. package/src/pkl/production/Db.pkl +14 -0
  99. package/src/pkl/production/Dune.pkl +12 -0
  100. package/src/pkl/production/Enterprise.pkl +158 -0
  101. package/src/pkl/production/Feature.pkl +8 -0
  102. package/src/pkl/production/KioskHost.pkl +5 -0
  103. package/src/pkl/production/Redis.pkl +6 -0
  104. package/src/pkl/production/Shared.pkl +15 -0
  105. package/src/pkl/production/Worker.pkl +43 -0
  106. package/src/pkl/production/renderer/CMS.pkl +59 -0
  107. package/src/pkl/production/renderer/Dune.pkl +52 -0
  108. package/src/pkl/production/renderer/Feature.pkl +51 -0
  109. package/src/pkl/production/renderer/Workflow.pkl +51 -0
  110. package/src/pkl/staging/Addresses.pkl +2114 -0
  111. package/src/pkl/staging/CMS.pkl +35 -0
  112. package/src/pkl/staging/Checkout.pkl +32 -0
  113. package/src/pkl/staging/Cloudflare.pkl +20 -0
  114. package/src/pkl/staging/Db.pkl +14 -0
  115. package/src/pkl/staging/Dune.pkl +12 -0
  116. package/src/pkl/staging/Enterprise.pkl +158 -0
  117. package/src/pkl/staging/Feature.pkl +8 -0
  118. package/src/pkl/staging/Redis.pkl +6 -0
  119. package/src/pkl/staging/Shared.pkl +16 -0
  120. package/src/pkl/staging/Worker.pkl +43 -0
  121. package/src/pkl/staging/renderer/CMS.pkl +59 -0
  122. package/src/pkl/staging/renderer/Dune.pkl +52 -0
  123. package/src/pkl/staging/renderer/Feature.pkl +51 -0
  124. package/src/pkl/staging/renderer/Workflow.pkl +51 -0
  125. package/src/pkl/tmpl/AddressesTmpl.pkl +44 -0
  126. package/src/pkl/tmpl/CMSTmpl.pkl +64 -0
  127. package/src/pkl/tmpl/CheckoutTmpl.pkl +34 -0
  128. package/src/pkl/tmpl/CloudflareTmpl.pkl +33 -0
  129. package/src/pkl/tmpl/DbTmpl.pkl +18 -0
  130. package/src/pkl/tmpl/DuneTmpl.pkl +124 -0
  131. package/src/pkl/tmpl/EnterpriseTmpl.pkl +105 -0
  132. package/src/pkl/tmpl/FeatureTmpl.pkl +90 -0
  133. package/src/pkl/tmpl/KioskHostTmpl.pkl +194 -0
  134. package/src/pkl/tmpl/RedisTmpl.pkl +9 -0
  135. package/src/pkl/tmpl/SharedTmpl.pkl +40 -0
  136. package/src/pkl/tmpl/WorkerTmpl.pkl +27 -0
  137. package/src/pkl-reader/main.go +167 -0
  138. package/src/shared.ts +65 -0
  139. package/src/vault.spec.ts +62 -0
  140. package/src/vault.ts +68 -0
@@ -0,0 +1,34 @@
1
+ amends "../tmpl/CMSTmpl.pkl"
2
+
3
+ import "./Db.pkl"
4
+ import "./Redis.pkl"
5
+ import "./Shared.pkl"
6
+ import "./Cloudflare.pkl"
7
+ import "./Enterprise.pkl"
8
+
9
+ db = Db
10
+ redis = Redis
11
+ tenantAssetURL = Shared.build.getAssetsURL()
12
+ nodeEnv = "production"
13
+ appKeys = List("O4Mkbl+rS0gzM5eVWeow5Q==","Ps6NozfamZysFhhSR8wTFA==","K5o9kthOvHcZzZ8oItEhoQ==","Wh/+YW6w3jC+CVGl0QaPxg==")
14
+ apiTokenSalt = "75wIWd9jllcGSg5SFS706Q=="
15
+ adminJwtSecret = "w7hcrs1XQ/YjPrEuoYS8KA=="
16
+ jwtSecret = "vxwJeymaByviCsa/h3C5hw=="
17
+ JWT_SECRET = jwtSecret
18
+ transferTokenSalt = "UX0gwakV+S0i8lgU8NGtMQ=="
19
+ strapiAdminBackendUrl = "/cms-admin-api"
20
+ adminStrapiUrl = "/cms-admin"
21
+ cfAccountEndpoint = Cloudflare.shopR2.endpointEU
22
+ cfApiKey = Cloudflare.shopR2.apiKey
23
+ cfApiSecret = Cloudflare.shopR2.apiSecret
24
+ cfTsSecretKey = Cloudflare.shopTurnstile.secretKey
25
+ cfBucketRegion = Cloudflare.shopR2.region
26
+ host = "kiosk-cms"
27
+ selfHost = "0.0.0.0"
28
+ port = 1337
29
+ selfUrl = "http://localhost:\(port)"
30
+ cmsURL = "https://\(Shared.build.shopId).shofluent.com/cms"
31
+ tenantBucketName = Shared.build.shopBucketName
32
+ shopId = Shared.build.shopId
33
+ restateHost = Enterprise.restateHost
34
+ restatePort = Enterprise.restatePort
@@ -0,0 +1,32 @@
1
+ amends "../tmpl/CheckoutTmpl.pkl"
2
+
3
+ import "Redis.pkl"
4
+ import "Shared.pkl"
5
+ import "Cloudflare.pkl"
6
+ import "CMS.pkl"
7
+ import "Enterprise.pkl"
8
+
9
+ hostname = "0.0.0.0"
10
+ cmsRemoteURL = "https://\(Shared.build.tenant)/cms"
11
+ enterpriseRemoteURL = "http://\(Shared.build.tenant)/enterprise"
12
+ cmsURL = "http://\(CMS.host):\(CMS.port)"
13
+ enterpriseURL = "http://\(Enterprise.host):\(Enterprise.port)"
14
+
15
+ secureCookiePassword = read?(Shared.build.shopVaultEnvPath("SECRET_COOKIE_PASSWORD"))?.text
16
+ forestAPIKey = read?(Shared.build.shopVaultInternalEnvPath("FOREST_API_KEY"))?.text
17
+ saleChannelAccessKey = read?(Shared.build.shopVaultInternalEnvPath("SALES_CHANNEL_ACCESS_KEY"))?.text
18
+ salesChannelAPISecret = read?(Shared.build.shopVaultInternalEnvPath("SALES_CHANNEL_API_SECRET"))?.text
19
+ storeAccessKey = read?(Shared.build.shopVaultInternalEnvPath("STORE_ACCESS_KEY"))?.text
20
+ storeAPISecret = read?(Shared.build.shopVaultInternalEnvPath("STORE_API_SECRET"))?.text
21
+ isProduction = false
22
+
23
+ posthogKey = "phc_Wj6AOmw3uujXdeR0tYozrXz3H5OubAhdkIjjEAVIk0b"
24
+ posthogDomain = "event.shofluent.xyz"
25
+ posthogHost = "https://\(posthogDomain)"
26
+
27
+
28
+ assetsPath = Shared.build.getAssetsURL()
29
+ assetsDomain = Shared.build.getAssetsDomain()
30
+ turnstileKey = Cloudflare.shopTurnstile.siteKey
31
+ turnstileSecret = Cloudflare.shopTurnstile.secretKey
32
+ redis = Redis
@@ -0,0 +1,20 @@
1
+ amends "../tmpl/CloudflareTmpl.pkl"
2
+
3
+ import "Shared.pkl"
4
+
5
+ shopR2 = new R2Bucket {
6
+ endpoint = "https://3545c559905315bb593ba3c502b3fe07.r2.cloudflarestorage.com"
7
+ endpointEU = "https://3545c559905315bb593ba3c502b3fe07.eu.r2.cloudflarestorage.com"
8
+ apiKey = "f651e66f44b0a4b28a441bfa621d6af2"
9
+ apiSecret = "3852797df26b2e1810f96ed7aa08564719fb9fd56e9dd8f4345dbeab10557f7d"
10
+ region = "auto"
11
+ token = "ov2J4AY5SKLrbmca2t7BE5dW4LCoPHc-Gpm-FY5p"
12
+ zoneId = "f7a5ef742f07f6e9a63f22d34ecaa37b"
13
+ shopBucketName = "shop-bucket-\(Shared.build.shopId)"
14
+ taxonomyBucketName = "product-taxonomy-index"
15
+ }
16
+
17
+ shopTurnstile = new Turnstile {
18
+ siteKey = read?(Shared.build.shopVaultEnvPath("NEXT_PUBLIC_CF_TS_SITE_KEY"))?.text
19
+ secretKey = read?(Shared.build.shopVaultEnvPath("CF_TS_SECRET_KEY"))?.text
20
+ }
@@ -0,0 +1,14 @@
1
+ amends "../tmpl/DbTmpl.pkl"
2
+ import "Shared.pkl"
3
+
4
+ conn = new DBConnection{
5
+ host = read?(Shared.build.shopVaultEnvPath("POSTGRES_HOST"))?.text
6
+ port = 5432
7
+ user = read?(Shared.build.shopVaultEnvPath("POSTGRES_USER"))?.text
8
+ password = read?(Shared.build.shopVaultEnvPath("POSTGRES_PASSWORD"))?.text
9
+ }
10
+
11
+ cms = "\(conn.user)-forest"
12
+ dune = "\(conn.user)-dune"
13
+ enterprise = "\(conn.user)-enterprise"
14
+ feature = "\(conn.user)-feature"
@@ -0,0 +1,12 @@
1
+ amends "../tmpl/DuneTmpl.pkl"
2
+
3
+ import "Shared.pkl"
4
+ import "Db.pkl"
5
+ import "Redis.pkl"
6
+
7
+ duneHost = "kiosk-dune"
8
+ dunePort = 8066
9
+ serverAPIKey = "J0MMIAq1B5CG0tS5G4NG7ELkhasoF3"
10
+ dataStore = "postgres://\(Db.conn.user):\(Db.conn.password)@\(Db.conn.host)/\(Db.dune)?options=-csearch_path%3D\(Shared.build.shopId)"
11
+ cacheStore = "redis://\(Redis.user):\(Redis.password)@\(Redis.host):\(Redis.port)/0"
12
+
@@ -0,0 +1,158 @@
1
+ amends "../tmpl/EnterpriseTmpl.pkl"
2
+ import "Shared.pkl"
3
+ import "Db.pkl"
4
+ import "Redis.pkl"
5
+ import "Cloudflare.pkl"
6
+ import "Worker.pkl"
7
+ import "Dune.pkl"
8
+
9
+
10
+ taxonomyVersion = "2025-06-unstable"
11
+ productTaxonomyPath = ".taxonomy/search"
12
+ host = "kiosk-enterprise"
13
+ port = 9090
14
+ defaultRequestTimeout = 30.s
15
+ testEmail = "test@paakd.com"
16
+ jwtExpTime = 15.min
17
+ refreshTokenExpTime = 7.d
18
+ tenantAssetURL = Shared.build.getAssetsURL()
19
+ shopBucketName = Shared.build.shopBucketName
20
+ bleveStorePath = "/.bleve"
21
+ restateHost = "kiosk-workflow"
22
+ restatePort = 8080
23
+ workerPort = 9082
24
+ workerHost = "kiosk-worker"
25
+ breezeBasicAuthHeader = Worker.breeze.getBasicAuth()
26
+ userJWTSecret = "sampleJWTsecretUsr"
27
+ customerJWTSecret = "sampleJWTsecretCst"
28
+ customerJWTSecretExpTime = 1.h
29
+ userJWTSecretExpTime = 1.h
30
+ isTest = false
31
+ isProduction = true
32
+ isStaging = false
33
+ isLocal = false
34
+ isDocker = false
35
+ productTaxonomyIndexBucket = Shared.build.productTaxonomyIndexBucket
36
+ resendAPIKey = "re_iUq1MTWd_Hd6XbZCb34h1XEBzAmQkdjWJ"
37
+
38
+ userJwtPrivateKey = """
39
+ -----BEGIN RSA PRIVATE KEY-----
40
+ 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
89
+ -----END RSA PRIVATE KEY-----
90
+ """
91
+ userJwtPublicKey = """
92
+ ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDVz0Nc4A5hjgkRxHNBrRgAckH3qb98DrbIcVUwFEH+q8LsM0io9xn2dPRrRFJdshY9ydRJms7yfKPaLQQ3la+0v60okwzXNtkQhA/B+zACur4XPSkKlczeUlSMudG7oB5lhoPno9F6NKStXtRwviC0QA5ryDzEDq7j0HoHIgaB5BdMrMVxVx7LlYJdQoK50OKr16ZymmcESe63xgulJEZrlSrQ5Logz8zTEv69oGxfand7mpnZsNWLt2DrhImkkXLKNDlzeJbexqSW8deMqQUPqHJQ2g901M9fUZ6IfFTUogNPQ1dX/N19mlHGJjIx3zL3zCC5Y/Q9azNxcAdBXlMzuJiFbveXY6oR934lG3lSOHIvgaFQOUc/dZmdgmtGXfQ/utb83VtWSBYECTwRJerRmc7DGeG0nK/wzBZNUkqEJsDGKWE4PDR+PGoftjwezofC5d3MlSTQNWVXenDaKxTbYzP00JvTgLOojtAmomloamuqzMk+IR7yQkj5421Bg3DS5Vx2KZhQnvSKleS3BGgEEEsXx0J+ippQca+4UOYYLOu7Ju9yHPf8MJR/DAbPtmXVLQQrQotdrcDOIhb6xrJEUHCh/OwBAH3iZirZt/Lq82u3Eb0ZRrbMppKX8ZyXUaDQ8YIqcktE8bDEcuPMh0rhW08/vw3iSyGM6Dijigo3Uw==
93
+ """
94
+
95
+ customerJwtPrivateKey = """
96
+ -----BEGIN RSA PRIVATE KEY-----
97
+ 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
146
+ -----END RSA PRIVATE KEY-----
147
+ """
148
+
149
+ customerJwtPublicKey = """
150
+ ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCcPF3MGYlTn1/WnONlMJQ9SBdFQYW1jNBCrGkQDb6p24WkPbq3I4RCEcTfRunSY0g+Z0cyL6EmdjZzEweDNJ9BvJqTbqRXiUYgFEN/pT7gwxSZSYdmdehNY/w/3IqHybTkok0G4zjCpmeHnDxDzdYbzod7JvMjuTx4qvWCwCm0gqyw9PIomZUnqB8Ywa21AygtLk7jPaAgoEI4P13em3C6LJn2Q0TMFREYfAiWLl1nB8ThuAmHHJzYzJJ6PlQMIAP0OsaGKh8V7bO+SAu01KKMLDvtPGLqgpn7gWO3pzl8TQ0qXXYqcUcCCaWAtmICIYQCBo9PK9tVRpXi+LT+/famcHrKHugZcoRO0UCNfqJN/DtiP7BZTInfZwMZkaWxM+jw/mOsaelhb+05zPZWU6eIaqrVAqg78W7x76tw/dFs2UcVRK5vacmw1fhjDVKpdEZ9+QveUwKwmwnn/NiZ5k8Mejt7PVMbd3EnvWxGAn8sKO9dPoAc4BXIHENOkZgBOvPCyJf4Td3kuK1TUt6PEf8z2bmPESy2YvZ7xVG6FtnWJrtR48qpzGyBqiuHzijyCKYNVTpM0v8L4503w680usNdKXIvnbg1KMs3HUZUW3Ntau6Wfow6ISyyu8hLXZJppPVWpLRKsyAOPSS3ki4GHXisKQe86ICq0Py9McCFZl1QTw==
151
+ """
152
+
153
+ redis = Redis
154
+ dune = Dune
155
+ worker = Worker
156
+ db = Db
157
+ cloudflare = Cloudflare
158
+ shared = Shared
@@ -0,0 +1,8 @@
1
+ amends "../tmpl/FeatureTmpl.pkl"
2
+
3
+ import "Shared.pkl"
4
+ import "Db.pkl"
5
+
6
+ db = Db
7
+ shopId = Shared.build.shopId
8
+ dbName = Db.feature
@@ -0,0 +1,5 @@
1
+ amends "../tmpl/KioskHostTmpl.pkl"
2
+
3
+
4
+ pgCatTLSCertPath = "./certs/kiosk.crt"
5
+ pgCatTLSKeyPath = "./certs/kiosk.key"
@@ -0,0 +1,6 @@
1
+ amends "../tmpl/RedisTmpl.pkl"
2
+
3
+ user = "default"
4
+ host = "redis"
5
+ password = "r3di59433w076"
6
+ port = 6379
@@ -0,0 +1,15 @@
1
+ amends "../tmpl/SharedTmpl.pkl"
2
+
3
+ build = new Build {
4
+ enterpriseEnv = "production"
5
+ envPath = if ((read?("env:BUILD_ENV")?.toString() ?? "production") == "production") "/.env" else "../../../../../.env"
6
+ certPath = "/certs"
7
+ goEnv = "production"
8
+ nodeEnv = "production"
9
+ envFilePath = "."
10
+ envFile = ".env.default"
11
+ version = "production"
12
+ storefrontHost = "localhost"
13
+ storefrontPort = 3000
14
+ secureCookiePassword = "stagingCookiePassword"
15
+ }
@@ -0,0 +1,43 @@
1
+ amends "../tmpl/WorkerTmpl.pkl"
2
+
3
+ breeze = new WorkerConnect {
4
+ endpoint = "https://mail.shofluent.xyz"
5
+ user = "acac6c7ced3465c06a869950d2f86233.access"
6
+ password = "0211d5ad13e53301ae31f02a90486f73935e7ee7841304e78a158fc68b1de0c1"
7
+ }
8
+
9
+ orchestrator = new WorkerConnect {
10
+ endpoint = "https://orchestrator.shofluent.xyz"
11
+ user = "ade1b284faece82da9fffd7b532dbb4b.access"
12
+ password = "cc8286719e9225ddff0e69fcc264ce52d72faa5cd34c1e65db2922a26479b737"
13
+ }
14
+
15
+ mesh = new WorkerConnect {
16
+ endpoint = "https://mesh.shofluent.xyz"
17
+ user = "c6432ed878608a4192907f4bef95aaa1.access"
18
+ password = "469c855705d1f12e5a591119b851a53e35cb866e7df41a1c0c8c04b35f5a17e4"
19
+ }
20
+
21
+ tfState = new WorkerConnect {
22
+ endpoint = "https://tfstate.shofluent.dev"
23
+ }
24
+
25
+ tfStateShopBackend = (tfState) {
26
+ user = "42fba715a2d12438b2d65cd6a9af2506.access"
27
+ password = "13c73c4bb04c9ac74b7fb314478c1a213a11a14ab614254de62e28e332090d05"
28
+ }
29
+
30
+ tfStateServiceBackend = (tfState) {
31
+ user = "50a2e5688d634f9a76877baea9aed05d.access"
32
+ password = "0c5a1c5890389047a6b229dbe5fcce7ee7c3726ef1db55189466b392db5cd907"
33
+ }
34
+
35
+ tfStateHostsBackend = (tfState) {
36
+ user = "60d9ba6e5f986d162589cdbbfa535809.access"
37
+ password = "b616558d5fb72d6ea859042a40bb1eabd426fc394407f206c51b52f07edc1f57"
38
+ }
39
+
40
+ orchestratorAuth = orchestrator.getBasicAuth()
41
+ shopBackendAuth = tfStateShopBackend.getBasicAuth()
42
+ serviceBackendAuth = tfStateServiceBackend.getBasicAuth()
43
+ hostBackendAuth = tfStateHostsBackend.getBasicAuth()
@@ -0,0 +1,59 @@
1
+ @go.Package { name = "paakd.com/packages/config/gen/go/renderer/production/cms" }
2
+ module paakd.com.packages.config.renderer.production.CMS
3
+
4
+ import "package://pkg.pkl-lang.org/pkl-go/pkl.golang@0.12.1#/go.pkl"
5
+ import "package://pkg.pkl-lang.org/pkl-pantry/pkl.toml@1.0.2#/toml.pkl"
6
+
7
+ import "../CMS.pkl"
8
+
9
+
10
+ output {
11
+ renderer {
12
+ converters {
13
+ [Mapping] = (it) -> new Mapping {
14
+ for (k, v in it) {
15
+ [k.toString()] = v
16
+ }
17
+ }
18
+
19
+ [Duration] = (it) ->
20
+ let (days = it.toUnit("d").value.toInt())
21
+ let (hours = it.toUnit("h").value.toInt() % 24)
22
+ let (minutes = it.toUnit("min").value.toInt() % 60)
23
+ let (seconds = it.toUnit("s").value % 60)
24
+ new Listing {
25
+ when (days != 0) {
26
+ days
27
+ "d"
28
+ }
29
+ when (hours != 0) {
30
+ hours
31
+ "h"
32
+ }
33
+ when (minutes != 0) {
34
+ minutes
35
+ "m"
36
+ }
37
+ when (seconds != 0) {
38
+ seconds
39
+ "s"
40
+ }
41
+ }.join("")
42
+ [List] = (it) -> it.join(",")
43
+ [Listing] = (it) -> it.join(",")
44
+ }
45
+ }
46
+
47
+ files {
48
+ ["apps/forest/.env.prod"] {
49
+ value = CMS
50
+ renderer = new PropertiesRenderer{
51
+ restrictCharset = true
52
+ converters {
53
+ [Listing] = (it) -> it.join(",")
54
+ [List] = (it) -> it.join(",")
55
+ }
56
+ }
57
+ }
58
+ }
59
+ }
@@ -0,0 +1,52 @@
1
+ @go.Package { name = "paakd.com/packages/config/gen/go/renderer/production/dune" }
2
+ module paakd.com.packages.config.renderer.production.DuneConfig
3
+
4
+ import "package://pkg.pkl-lang.org/pkl-go/pkl.golang@0.12.1#/go.pkl"
5
+ import "package://pkg.pkl-lang.org/pkl-pantry/pkl.toml@1.0.2#/toml.pkl"
6
+
7
+ import "../Dune.pkl"
8
+
9
+
10
+ output {
11
+ renderer {
12
+ converters {
13
+ [Mapping] = (it) -> new Mapping {
14
+ for (k, v in it) {
15
+ [k.toString()] = v
16
+ }
17
+ }
18
+
19
+ [Duration] = (it) ->
20
+ let (days = it.toUnit("d").value.toInt())
21
+ let (hours = it.toUnit("h").value.toInt() % 24)
22
+ let (minutes = it.toUnit("min").value.toInt() % 60)
23
+ let (seconds = it.toUnit("s").value % 60)
24
+ new Listing {
25
+ when (days != 0) {
26
+ days
27
+ "d"
28
+ }
29
+ when (hours != 0) {
30
+ hours
31
+ "h"
32
+ }
33
+ when (minutes != 0) {
34
+ minutes
35
+ "m"
36
+ }
37
+ when (seconds != 0) {
38
+ seconds
39
+ "s"
40
+ }
41
+ }.join("")
42
+ [List] = (it) -> it.join(",")
43
+ [Listing] = (it) -> it.join(",")
44
+ }
45
+ }
46
+ files {
47
+ ["/opt/deploy/tmp/dist/dune.config.prod.toml"] {
48
+ value = Dune.configFile
49
+ renderer = new toml.Renderer {}
50
+ }
51
+ }
52
+ }
@@ -0,0 +1,51 @@
1
+ @go.Package { name = "paakd.com/packages/config/gen/go/renderer/staging/dune" }
2
+ module paakd.com.packages.config.renderer.staging.DuneConfig
3
+
4
+ import "package://pkg.pkl-lang.org/pkl-go/pkl.golang@0.12.1#/go.pkl"
5
+
6
+ import "../Feature.pkl"
7
+
8
+
9
+ output {
10
+ renderer {
11
+ converters {
12
+ [Mapping] = (it) -> new Mapping {
13
+ for (k, v in it) {
14
+ [k.toString()] = v
15
+ }
16
+ }
17
+
18
+ [Duration] = (it) ->
19
+ let (days = it.toUnit("d").value.toInt())
20
+ let (hours = it.toUnit("h").value.toInt() % 24)
21
+ let (minutes = it.toUnit("min").value.toInt() % 60)
22
+ let (seconds = it.toUnit("s").value % 60)
23
+ new Listing {
24
+ when (days != 0) {
25
+ days
26
+ "d"
27
+ }
28
+ when (hours != 0) {
29
+ hours
30
+ "h"
31
+ }
32
+ when (minutes != 0) {
33
+ minutes
34
+ "m"
35
+ }
36
+ when (seconds != 0) {
37
+ seconds
38
+ "s"
39
+ }
40
+ }.join("")
41
+ [List] = (it) -> it.join(",")
42
+ [Listing] = (it) -> it.join(",")
43
+ }
44
+ }
45
+ files {
46
+ ["feature.config.prod.yml"] {
47
+ value = Feature.configFile
48
+ renderer = new YamlRenderer{}
49
+ }
50
+ }
51
+ }
@@ -0,0 +1,51 @@
1
+ @go.Package { name = "paakd.com/packages/config/gen/go/renderer/production/workflow" }
2
+ module paakd.com.packages.config.renderer.production.workflowConfig
3
+
4
+ import "package://pkg.pkl-lang.org/pkl-go/pkl.golang@0.12.1#/go.pkl"
5
+ import "package://pkg.pkl-lang.org/pkl-pantry/pkl.toml@1.0.2#/toml.pkl"
6
+
7
+ import "../Enterprise.pkl"
8
+
9
+ output {
10
+ renderer {
11
+ converters {
12
+ [Mapping] = (it) -> new Mapping {
13
+ for (k, v in it) {
14
+ [k.toString()] = v
15
+ }
16
+ }
17
+
18
+ [Duration] = (it) ->
19
+ let (days = it.toUnit("d").value.toInt())
20
+ let (hours = it.toUnit("h").value.toInt() % 24)
21
+ let (minutes = it.toUnit("min").value.toInt() % 60)
22
+ let (seconds = it.toUnit("s").value % 60)
23
+ new Listing {
24
+ when (days != 0) {
25
+ days
26
+ "d"
27
+ }
28
+ when (hours != 0) {
29
+ hours
30
+ "h"
31
+ }
32
+ when (minutes != 0) {
33
+ minutes
34
+ "m"
35
+ }
36
+ when (seconds != 0) {
37
+ seconds
38
+ "s"
39
+ }
40
+ }.join("")
41
+ [List] = (it) -> it.join(",")
42
+ [Listing] = (it) -> it.join(",")
43
+ }
44
+ }
45
+ files {
46
+ ["/opt/deploy/tmp/dist/workflow.config.prod.toml"] {
47
+ value = Enterprise.workflowConfig
48
+ renderer = new toml.Renderer {}
49
+ }
50
+ }
51
+ }